From 0ded7805c2be3e1d6861af9eb85767e0b1ce4822 Mon Sep 17 00:00:00 2001 From: Martin Trojer Date: Thu, 10 Sep 2020 02:29:26 -0700 Subject: [PATCH] [FCP] copy facebook-clang-plugins files [2/N] Summary: Copy files from (clean commit) FCP [024a101](https://github.com/facebook/facebook-clang-plugins/commit/024a101228d811067faec5aca086fab1c7653c36) repo to folder in infer repo (i.e. no longer a subrepo). Excluding all dotfiles except .gitingnore and .clang-format ``` $ git checkout https://github.com/facebook/facebook-clang-plugins.git $ mkdir ~/infer/facebook-clang-plugins $ cp -r facebook-clang-plugins/* ~/infer/facebook-clang-plugins/ Reviewed By: ngorogiannis Differential Revision: D23315608 fbshipit-source-id: 2fc38b25e --- facebook-clang-plugins/.clang-format | 46 + facebook-clang-plugins/.gitignore | 6 + facebook-clang-plugins/CODE_OF_CONDUCT.md | 3 + facebook-clang-plugins/CONTRIBUTING.md | 41 + facebook-clang-plugins/LICENSE | 21 + facebook-clang-plugins/LLVM-LICENSE | 43 + facebook-clang-plugins/Makefile | 42 + facebook-clang-plugins/Makefile.common | 66 + facebook-clang-plugins/Makefile.config | 49 + facebook-clang-plugins/Makefile.rules | 8 + facebook-clang-plugins/README.md | 42 + .../clang-ocaml/.ocamlformat | 2 + facebook-clang-plugins/clang-ocaml/Makefile | 162 + facebook-clang-plugins/clang-ocaml/README.md | 95 + .../clang-ocaml/clang_ast_converter.ml | 8 + .../clang-ocaml/clang_ast_main.ml | 116 + .../clang-ocaml/clang_ast_main_test.ml | 73 + .../clang_ast_named_decl_printer.ml | 34 + .../clang-ocaml/clang_ast_proj.ml.p | 225 + .../clang-ocaml/clang_ast_proj.mli.p | 41 + .../clang-ocaml/clang_ast_proj_test.ml | 122 + .../clang-ocaml/clang_ast_types.ml | 17 + .../clang-ocaml/clang_ast_visit.ml | 47 + .../clang-ocaml/clang_ast_yojson_validator.ml | 8 + facebook-clang-plugins/clang-ocaml/process.ml | 125 + .../clang-ocaml/process.mli | 38 + .../clang-ocaml/process_test.ml | 19 + .../clang-ocaml/tests/clang_ast_converter.exp | 0 .../clang-ocaml/tests/clang_ast_main_test.exp | 1752 ++ .../tests/clang_ast_named_decl_printer.exp | 440 + .../clang-ocaml/tests/clang_ast_proj_test.exp | 0 .../tests/clang_ast_yojson_validation.exp | 0 .../clang-ocaml/tests/process_test.exp | 0 .../clang-ocaml/tests/tree_example.exp | 21 + .../clang-ocaml/tests/utils_test.exp | 0 .../clang-ocaml/tests/yojson_utils_test.exp | 0 facebook-clang-plugins/clang-ocaml/utils.ml | 194 + facebook-clang-plugins/clang-ocaml/utils.mli | 59 + .../clang-ocaml/utils_test.ml | 93 + .../clang-ocaml/yojson_utils.ml | 106 + .../clang-ocaml/yojson_utils.mli | 19 + .../clang-ocaml/yojson_utils_test.ml | 24 + .../clang-ocaml/yojson_validator.sh | 42 + facebook-clang-plugins/clang/setup.sh | 239 + .../clang/src/checksums.txt | 31 + .../clang/src/err_ret_local_block.patch | 13 + .../clang/src/mangle_suppress_errors.patch | 77 + .../clang/src/template_ambiguous.patch | 12 + .../libtooling/ASTExporter.cpp | 33 + .../libtooling/ASTExporter.h | 5397 +++++++ .../libtooling/ATD_GUIDELINES.md | 279 + .../libtooling/AttrParameterVectorStream.cpp | 37 + .../libtooling/AttrParameterVectorStream.h | 31 + .../libtooling/FileUtils.cpp | 95 + facebook-clang-plugins/libtooling/FileUtils.h | 34 + facebook-clang-plugins/libtooling/Makefile | 158 + .../libtooling/NamePrinter.h | 194 + facebook-clang-plugins/libtooling/README.md | 13 + .../libtooling/SimplePluginASTAction.cpp | 180 + .../libtooling/SimplePluginASTAction.h | 264 + .../libtooling/ast_exporter_bin.cpp | 78 + .../libtooling/atdlib/ATDWriter.h | 690 + .../libtooling/atdlib/Makefile | 35 + .../libtooling/atdlib/extract_atd_from_cpp.py | 35 + .../atdlib/normalize_names_in_atd.py | 65 + .../libtooling/atdlib/tests/binioutest.cpp | 145 + .../libtooling/atdlib/tests/binioutest.exp | 32 + .../libtooling/atdlib/tests/binioutest.sh | 7 + .../libtooling/atdlib/tests/extract_test.cpp | 24 + .../atdlib/tests/extract_test.cpp.exp | 11 + .../libtooling/atdlib/tests/jsontest.cpp | 103 + .../libtooling/atdlib/tests/jsontest.exp | 32 + .../atdlib/tests/normalize_test.atd | 5 + .../atdlib/tests/normalize_test.atd.exp | 4 + .../tests/BiniouASTExporter/Hello.m.exp | 1524 ++ .../ObjCBridgeTransferTest.m.exp | 1170 ++ .../tests/BiniouASTExporter/ObjCTest.m.exp | 9634 +++++++++++ .../available_expression.m.exp | 399 + .../BiniouASTExporter/bind_temporary.cpp.exp | 553 + .../BiniouASTExporter/c_attributes.c.exp | 176 + .../tests/BiniouASTExporter/c_cast.cpp.exp | 287 + .../BiniouASTExporter/class_template.cpp.exp | 1186 ++ .../tests/BiniouASTExporter/comments.c.exp | 160 + .../BiniouASTExporter/const_cast.cpp.exp | 443 + .../BiniouASTExporter/dynamic_cast.cpp.exp | 1856 +++ .../expr_with_cleanups.cpp.exp | 2824 ++++ .../tests/BiniouASTExporter/filter.sh | 6 + .../tests/BiniouASTExporter/friend.cpp.exp | 420 + .../function_template.cpp.exp | 885 + .../generic_selector_expression.c.exp | 897 + .../BiniouASTExporter/inheritance.cpp.exp | 1666 ++ .../inheriting_constructor.cpp.exp | 678 + .../tests/BiniouASTExporter/lambda.cpp.exp | 6121 +++++++ .../materialize_temporary.cpp.exp | 211 + .../BiniouASTExporter/namespace_decl.cpp.exp | 242 + .../tests/BiniouASTExporter/new.cpp.exp | 3343 ++++ .../BiniouASTExporter/no_except_expr.cpp.exp | 285 + .../objcpp_template_unboxing.mm.exp | 193 + .../tests/BiniouASTExporter/optional.m.exp | 876 + .../sizeof_static_evaluation.cpp.exp | 314 + .../tests/BiniouASTExporter/struct.cpp.exp | 608 + .../template_instantiations.cpp.exp | 2128 +++ .../tests/BiniouASTExporter/this.cpp.exp | 276 + .../BiniouASTExporter/type_trait.cpp.exp | 534 + .../unresolved_lookup.cpp.exp | 172 + .../BiniouASTExporter/using_directive.cpp.exp | 273 + .../BiniouASTExporter/virtual_bases.cpp.exp | 910 ++ .../libtooling/tests/FoundationStub.h | 52 + .../libtooling/tests/Hello.m | 29 + .../tests/JsonASTExporter/Hello.m.exp | 3463 ++++ .../ObjCBridgeTransferTest.m.exp | 2840 ++++ .../tests/JsonASTExporter/ObjCTest.m.exp | 13483 ++++++++++++++++ .../JsonASTExporter/bind_temporary.cpp.exp | 1373 ++ .../tests/JsonASTExporter/c_attributes.c.exp | 715 + .../tests/JsonASTExporter/c_cast.cpp.exp | 971 ++ .../JsonASTExporter/class_template.cpp.exp | 2826 ++++ .../tests/JsonASTExporter/comments.c.exp | 680 + .../tests/JsonASTExporter/const_cast.cpp.exp | 1251 ++ .../JsonASTExporter/dynamic_cast.cpp.exp | 4054 +++++ .../expr_with_cleanups.cpp.exp | 4068 +++++ .../tests/JsonASTExporter/filter.sh | 6 + .../tests/JsonASTExporter/friend.cpp.exp | 1382 ++ .../JsonASTExporter/function_template.cpp.exp | 2163 +++ .../tests/JsonASTExporter/inheritance.cpp.exp | 3479 ++++ .../inheriting_constructor.cpp.exp | 1955 +++ .../tests/JsonASTExporter/lambda.cpp.exp | 6589 ++++++++ .../materialize_temporary.cpp.exp | 782 + .../JsonASTExporter/namespace_decl.cpp.exp | 854 + .../tests/JsonASTExporter/new.cpp.exp | 6900 ++++++++ .../JsonASTExporter/no_except_expr.cpp.exp | 941 ++ .../objcpp_template_unboxing.mm.exp | 823 + .../tests/JsonASTExporter/optional.m.exp | 1860 +++ .../sizeof_static_evaluation.cpp.exp | 1032 ++ .../tests/JsonASTExporter/struct.cpp.exp | 1706 ++ .../template_instantiations.cpp.exp | 5557 +++++++ .../tests/JsonASTExporter/this.cpp.exp | 925 ++ .../tests/JsonASTExporter/type_trait.cpp.exp | 1548 ++ .../JsonASTExporter/unresolved_lookup.cpp.exp | 760 + .../JsonASTExporter/using_directive.cpp.exp | 920 ++ .../JsonASTExporter/virtual_bases.cpp.exp | 2539 +++ .../libtooling/tests/ObjCBridgeTransferTest.m | 27 + .../libtooling/tests/ObjCTest.m | 112 + .../tests/YojsonASTExporter/Hello.m.exp | 3463 ++++ .../ObjCBridgeTransferTest.m.exp | 2840 ++++ .../tests/YojsonASTExporter/ObjCTest.m.exp | 13483 ++++++++++++++++ .../available_expression.m.exp | 1216 ++ .../YojsonASTExporter/bind_temporary.cpp.exp | 1373 ++ .../YojsonASTExporter/c_attributes.c.exp | 715 + .../tests/YojsonASTExporter/c_cast.cpp.exp | 971 ++ .../YojsonASTExporter/class_template.cpp.exp | 2826 ++++ .../tests/YojsonASTExporter/comments.c.exp | 680 + .../YojsonASTExporter/const_cast.cpp.exp | 1251 ++ .../YojsonASTExporter/dynamic_cast.cpp.exp | 4054 +++++ .../expr_with_cleanups.cpp.exp | 4068 +++++ .../tests/YojsonASTExporter/filter.sh | 6 + .../tests/YojsonASTExporter/friend.cpp.exp | 1382 ++ .../function_template.cpp.exp | 2163 +++ .../generic_selector_expression.c.exp | 1947 +++ .../YojsonASTExporter/inheritance.cpp.exp | 3479 ++++ .../inheriting_constructor.cpp.exp | 1955 +++ .../tests/YojsonASTExporter/lambda.cpp.exp | 6589 ++++++++ .../materialize_temporary.cpp.exp | 782 + .../YojsonASTExporter/namespace_decl.cpp.exp | 854 + .../tests/YojsonASTExporter/new.cpp.exp | 6900 ++++++++ .../YojsonASTExporter/no_except_expr.cpp.exp | 941 ++ .../objcpp_template_unboxing.mm.exp | 823 + .../tests/YojsonASTExporter/optional.m.exp | 1860 +++ .../sizeof_static_evaluation.cpp.exp | 1032 ++ .../tests/YojsonASTExporter/struct.cpp.exp | 1706 ++ .../template_instantiations.cpp.exp | 5557 +++++++ .../tests/YojsonASTExporter/this.cpp.exp | 925 ++ .../YojsonASTExporter/type_trait.cpp.exp | 1548 ++ .../unresolved_lookup.cpp.exp | 760 + .../YojsonASTExporter/using_directive.cpp.exp | 920 ++ .../libtooling/tests/available_expression.m | 27 + .../libtooling/tests/bind_temporary.cpp | 14 + .../libtooling/tests/c_attributes.c | 7 + .../libtooling/tests/c_cast.cpp | 9 + .../libtooling/tests/class_template.cpp | 27 + .../libtooling/tests/comments.c | 11 + .../libtooling/tests/const_cast.cpp | 17 + .../libtooling/tests/copy_constructor.cpp | 20 + .../libtooling/tests/dynamic_cast.cpp | 25 + .../libtooling/tests/expr_with_cleanups.cpp | 26 + .../libtooling/tests/friend.cpp | 18 + .../libtooling/tests/function_template.cpp | 27 + .../tests/generic_selector_expression.c | 15 + .../libtooling/tests/inheritance.cpp | 35 + .../tests/inheriting_constructor.cpp | 16 + .../libtooling/tests/lambda.cpp | 17 + .../tests/materialize_temporary.cpp | 7 + .../libtooling/tests/namespace_decl.cpp | 19 + .../libtooling/tests/new.cpp | 52 + .../libtooling/tests/no_except_expr.cpp | 9 + .../tests/objcpp_template_unboxing.mm | 10 + .../libtooling/tests/optional.m | 28 + .../tests/sizeof_static_evaluation.cpp | 18 + .../libtooling/tests/struct.cpp | 26 + .../tests/template_instantiations.cpp | 50 + .../libtooling/tests/this.cpp | 10 + .../libtooling/tests/type_trait.cpp | 18 + .../libtooling/tests/unresolved_lookup.cpp | 12 + .../libtooling/tests/using_directive.cpp | 14 + .../libtooling/tests/virtual_bases.cpp | 25 + facebook-clang-plugins/scripts/run_test.sh | 46 + 205 files changed, 212241 insertions(+) create mode 100644 facebook-clang-plugins/.clang-format create mode 100644 facebook-clang-plugins/.gitignore create mode 100644 facebook-clang-plugins/CODE_OF_CONDUCT.md create mode 100644 facebook-clang-plugins/CONTRIBUTING.md create mode 100644 facebook-clang-plugins/LICENSE create mode 100644 facebook-clang-plugins/LLVM-LICENSE create mode 100644 facebook-clang-plugins/Makefile create mode 100644 facebook-clang-plugins/Makefile.common create mode 100644 facebook-clang-plugins/Makefile.config create mode 100644 facebook-clang-plugins/Makefile.rules create mode 100644 facebook-clang-plugins/README.md create mode 100644 facebook-clang-plugins/clang-ocaml/.ocamlformat create mode 100644 facebook-clang-plugins/clang-ocaml/Makefile create mode 100644 facebook-clang-plugins/clang-ocaml/README.md create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_converter.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_main.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_main_test.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_named_decl_printer.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_proj.ml.p create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_proj.mli.p create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_proj_test.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_types.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_visit.ml create mode 100644 facebook-clang-plugins/clang-ocaml/clang_ast_yojson_validator.ml create mode 100644 facebook-clang-plugins/clang-ocaml/process.ml create mode 100644 facebook-clang-plugins/clang-ocaml/process.mli create mode 100644 facebook-clang-plugins/clang-ocaml/process_test.ml create mode 100644 facebook-clang-plugins/clang-ocaml/tests/clang_ast_converter.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/clang_ast_main_test.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/clang_ast_named_decl_printer.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/clang_ast_proj_test.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/clang_ast_yojson_validation.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/process_test.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/tree_example.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/utils_test.exp create mode 100644 facebook-clang-plugins/clang-ocaml/tests/yojson_utils_test.exp create mode 100644 facebook-clang-plugins/clang-ocaml/utils.ml create mode 100644 facebook-clang-plugins/clang-ocaml/utils.mli create mode 100644 facebook-clang-plugins/clang-ocaml/utils_test.ml create mode 100644 facebook-clang-plugins/clang-ocaml/yojson_utils.ml create mode 100644 facebook-clang-plugins/clang-ocaml/yojson_utils.mli create mode 100644 facebook-clang-plugins/clang-ocaml/yojson_utils_test.ml create mode 100755 facebook-clang-plugins/clang-ocaml/yojson_validator.sh create mode 100755 facebook-clang-plugins/clang/setup.sh create mode 100644 facebook-clang-plugins/clang/src/checksums.txt create mode 100644 facebook-clang-plugins/clang/src/err_ret_local_block.patch create mode 100644 facebook-clang-plugins/clang/src/mangle_suppress_errors.patch create mode 100644 facebook-clang-plugins/clang/src/template_ambiguous.patch create mode 100644 facebook-clang-plugins/libtooling/ASTExporter.cpp create mode 100644 facebook-clang-plugins/libtooling/ASTExporter.h create mode 100644 facebook-clang-plugins/libtooling/ATD_GUIDELINES.md create mode 100644 facebook-clang-plugins/libtooling/AttrParameterVectorStream.cpp create mode 100644 facebook-clang-plugins/libtooling/AttrParameterVectorStream.h create mode 100644 facebook-clang-plugins/libtooling/FileUtils.cpp create mode 100644 facebook-clang-plugins/libtooling/FileUtils.h create mode 100644 facebook-clang-plugins/libtooling/Makefile create mode 100644 facebook-clang-plugins/libtooling/NamePrinter.h create mode 100644 facebook-clang-plugins/libtooling/README.md create mode 100644 facebook-clang-plugins/libtooling/SimplePluginASTAction.cpp create mode 100644 facebook-clang-plugins/libtooling/SimplePluginASTAction.h create mode 100644 facebook-clang-plugins/libtooling/ast_exporter_bin.cpp create mode 100644 facebook-clang-plugins/libtooling/atdlib/ATDWriter.h create mode 100644 facebook-clang-plugins/libtooling/atdlib/Makefile create mode 100755 facebook-clang-plugins/libtooling/atdlib/extract_atd_from_cpp.py create mode 100755 facebook-clang-plugins/libtooling/atdlib/normalize_names_in_atd.py create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/binioutest.cpp create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/binioutest.exp create mode 100755 facebook-clang-plugins/libtooling/atdlib/tests/binioutest.sh create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/jsontest.cpp create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/jsontest.exp create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd create mode 100644 facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/Hello.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCBridgeTransferTest.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCTest.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/available_expression.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/bind_temporary.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_attributes.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/class_template.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/comments.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/const_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/dynamic_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/expr_with_cleanups.cpp.exp create mode 100755 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/filter.sh create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/friend.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/function_template.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/generic_selector_expression.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheritance.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheriting_constructor.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/lambda.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/materialize_temporary.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/namespace_decl.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/new.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/no_except_expr.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/objcpp_template_unboxing.mm.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/optional.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/sizeof_static_evaluation.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/struct.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/template_instantiations.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/this.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/type_trait.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/unresolved_lookup.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/using_directive.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/BiniouASTExporter/virtual_bases.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/FoundationStub.h create mode 100644 facebook-clang-plugins/libtooling/tests/Hello.m create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/Hello.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCBridgeTransferTest.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCTest.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/bind_temporary.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_attributes.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/class_template.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/comments.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/const_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/dynamic_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/expr_with_cleanups.cpp.exp create mode 100755 facebook-clang-plugins/libtooling/tests/JsonASTExporter/filter.sh create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/friend.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/function_template.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheritance.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheriting_constructor.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/lambda.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/materialize_temporary.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/namespace_decl.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/new.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/no_except_expr.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/objcpp_template_unboxing.mm.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/optional.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/sizeof_static_evaluation.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/struct.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/template_instantiations.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/this.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/type_trait.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/unresolved_lookup.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/using_directive.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/JsonASTExporter/virtual_bases.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/ObjCBridgeTransferTest.m create mode 100644 facebook-clang-plugins/libtooling/tests/ObjCTest.m create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/Hello.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCBridgeTransferTest.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCTest.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/available_expression.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/bind_temporary.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_attributes.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/class_template.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/comments.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/const_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/dynamic_cast.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/expr_with_cleanups.cpp.exp create mode 100755 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/filter.sh create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/friend.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/function_template.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/generic_selector_expression.c.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheritance.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheriting_constructor.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/lambda.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/materialize_temporary.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/namespace_decl.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/new.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/no_except_expr.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/objcpp_template_unboxing.mm.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/optional.m.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/sizeof_static_evaluation.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/struct.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/template_instantiations.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/this.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/type_trait.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/unresolved_lookup.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/YojsonASTExporter/using_directive.cpp.exp create mode 100644 facebook-clang-plugins/libtooling/tests/available_expression.m create mode 100644 facebook-clang-plugins/libtooling/tests/bind_temporary.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/c_attributes.c create mode 100644 facebook-clang-plugins/libtooling/tests/c_cast.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/class_template.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/comments.c create mode 100644 facebook-clang-plugins/libtooling/tests/const_cast.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/copy_constructor.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/dynamic_cast.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/expr_with_cleanups.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/friend.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/function_template.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/generic_selector_expression.c create mode 100644 facebook-clang-plugins/libtooling/tests/inheritance.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/inheriting_constructor.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/lambda.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/materialize_temporary.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/namespace_decl.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/new.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/no_except_expr.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/objcpp_template_unboxing.mm create mode 100644 facebook-clang-plugins/libtooling/tests/optional.m create mode 100644 facebook-clang-plugins/libtooling/tests/sizeof_static_evaluation.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/struct.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/template_instantiations.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/this.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/type_trait.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/unresolved_lookup.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/using_directive.cpp create mode 100644 facebook-clang-plugins/libtooling/tests/virtual_bases.cpp create mode 100755 facebook-clang-plugins/scripts/run_test.sh diff --git a/facebook-clang-plugins/.clang-format b/facebook-clang-plugins/.clang-format new file mode 100644 index 000000000..e631cd5ad --- /dev/null +++ b/facebook-clang-plugins/.clang-format @@ -0,0 +1,46 @@ +--- +AccessModifierOffset: -1 +AlignEscapedNewlinesLeft: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: false +BinPackParameters: false +BreakBeforeBinaryOperators: false +BreakBeforeBraces: Attach +BreakConstructorInitializersBeforeComma: false +ColumnLimit: 80 +CommentPragmas: '^@atd' +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +ExperimentalAutoDetectBinPacking: true +IndentCaseLabels: false +IndentFunctionDeclarationAfterType: false +IndentWidth: 2 +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCSpaceBeforeProtocolList: false +PenaltyBreakBeforeFirstCallParameter: 10 +PenaltyBreakComment: 60 +PenaltyBreakFirstLessLess: 20 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Right +SpaceAfterControlStatementKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... diff --git a/facebook-clang-plugins/.gitignore b/facebook-clang-plugins/.gitignore new file mode 100644 index 000000000..772ef34e6 --- /dev/null +++ b/facebook-clang-plugins/.gitignore @@ -0,0 +1,6 @@ +build +clang-ocaml/.depend +xcode/* +*~ +clang/install +clang/installed.version diff --git a/facebook-clang-plugins/CODE_OF_CONDUCT.md b/facebook-clang-plugins/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..0a45f9bd5 --- /dev/null +++ b/facebook-clang-plugins/CODE_OF_CONDUCT.md @@ -0,0 +1,3 @@ +# Code of Conduct + +Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](https://code.facebook.com/codeofconduct) so that you can understand what actions will and will not be tolerated. diff --git a/facebook-clang-plugins/CONTRIBUTING.md b/facebook-clang-plugins/CONTRIBUTING.md new file mode 100644 index 000000000..1d7dfee52 --- /dev/null +++ b/facebook-clang-plugins/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# Contributing to facebook-clang-plugins +We want to make contributing to this project as easy and transparent as +possible. + +## Code of Conduct +The code of conduct is described in [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md). + +## Our Development Process +The github repository https://github.com/facebook/facebook-clang-plugins is the source of truth. + +## Pull Requests +We actively welcome your pull requests. + +1. Fork the repo and create your branch from `master`. +2. If you've added code that should be tested, add tests +3. If you've changed APIs, update the documentation. +4. Ensure the test suite passes. + Run tests with `make -C libtooling test`. For re-recording the tests, run `make -C libtooling record-test-outputs`. +5. If you haven't already, complete the Contributor License Agreement ("CLA"). + +## Contributor License Agreement ("CLA") +In order to accept your pull request, we need you to submit a CLA. You only need +to do this once to work on any of Facebook's open source projects. + +Complete your CLA here: + +## Issues +We use GitHub issues to track public bugs. Please ensure your description is +clear and has sufficient instructions to be able to reproduce the issue. + +Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe +disclosure of security bugs. In those cases, please go through the process +outlined on that page and do not file a public issue. + +## Coding Style +Please use the LLVM style for new code: http://llvm.org/docs/CodingStandards.html +while we are (slowly) updating the rest of the files. + +## License +By contributing to facebook-clang-plugins, you agree that your contributions will be licensed +under its MIT license. diff --git a/facebook-clang-plugins/LICENSE b/facebook-clang-plugins/LICENSE new file mode 100644 index 000000000..cde61b6c5 --- /dev/null +++ b/facebook-clang-plugins/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/facebook-clang-plugins/LLVM-LICENSE b/facebook-clang-plugins/LLVM-LICENSE new file mode 100644 index 000000000..dd38ca47a --- /dev/null +++ b/facebook-clang-plugins/LLVM-LICENSE @@ -0,0 +1,43 @@ +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. diff --git a/facebook-clang-plugins/Makefile b/facebook-clang-plugins/Makefile new file mode 100644 index 000000000..7f393e086 --- /dev/null +++ b/facebook-clang-plugins/Makefile @@ -0,0 +1,42 @@ +# Copyright (c) 2014-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. + +LEVEL=. +include Makefile.common + +.PHONY: all +all: + $(MAKE) -C libtooling/atdlib all + $(MAKE) -C libtooling all + +.PHONY: test +test: all + $(MAKE) -C libtooling/atdlib test + $(MAKE) -C libtooling test + +.PHONY: clean +clean: + $(MAKE) -C libtooling/atdlib clean + $(MAKE) -C libtooling clean + +.PHONY: fmt_all +fmt_all: + find libtooling \ + \( -name '*'.cpp -or -name '*'.h -or -name '*'.c -or -name '*'.m -or -name '*'.mm \) \ + -exec ./clang/install/bin/clang-format -verbose -i \{\} \+ + +CHECKCOPYRIGHT=../infer/bin/checkCopyright + +.PHONY: copyright +copyright: + @[ -x $(CHECKCOPYRIGHT) ] || { \ + echo "only works when this repo is checked out as a git submodule inside the infer repo" >&2; \ + echo "make sure this is the case and that `make checkCopyright` has been run from within infer" >&2; \ + exit 1; \ + } + git ls-files \ + | grep -e '\(\.\(atd\|c\|cpp\|h\|m\|ml\|mli\|mm\|py\|sh\)\(\|\.p\)$$\|^\(.*/\|\)Makefile\)' \ + | grep -v 'libtooling/ASTExporter\.\(cpp\|h\)' \ + | xargs $(CHECKCOPYRIGHT) -i diff --git a/facebook-clang-plugins/Makefile.common b/facebook-clang-plugins/Makefile.common new file mode 100644 index 000000000..3a588393d --- /dev/null +++ b/facebook-clang-plugins/Makefile.common @@ -0,0 +1,66 @@ +# Copyright (c) 2014-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. + +include $(LEVEL)/Makefile.config + +# Typical compilation flags for Objective C examples +ifeq ($(HAS_OBJC),yes) +IOSFLAGS=-isysroot $(SDKPATH) -mios-simulator-version-min=8.2 -target x86_64-apple-darwin14 -fobjc-arc \ + -Wno-unused-command-line-argument \ + -Wno-objc-property-implementation +endif + +# we assume that the targeted clang was configured with --enable-libcpp --enable-cxx14 +CFLAGS_Darwin+=-stdlib=libc++ -std=c++14 +LDFLAGS_Darwin+=-stdlib=libc++ + +CFLAGS_Linux+=-std=c++14 -fPIC +LDFLAGS_Linux+= + +override CFLAGS+=$(CFLAGS_$(shell uname)) -g +override LDFLAGS+=$(LDFLAGS_$(shell uname)) + +override CFLAGS+=$(CLANG_INCLUDES:%=-I%) -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -Wno-uninitialized -Wno-missing-field-initializers -Wno-vla-extension -Wno-c99-extensions + +ifdef DEBUG +override CFLAGS+=-DDEBUG +export VERBOSE:=1 +SHELL=bash -O nullglob +else +override CFLAGS+=-O3 -DNDEBUG +override LDFLAGS+=-O3 +# early exit when tests fail +SHELL=bash -e -O nullglob +endif + +# project headers (if any) +HEADERS?= + +# test runner +RUNTEST=$(LEVEL)/scripts/run_test.sh + +LDFLAGS_DYLIB=$(LDFLAGS) +LDFLAGS_DYLIB+=-Wl,-rpath -Wl,@executable_path/../lib -Wl,-undefined,dynamic_lookup -Wl,-flat_namespace -Wl,-undefined,suppress -dynamiclib -shared + +CLANG_TOOL_LIBS := \ + -lclangFrontend \ + -lclangIndex \ + -lclangSerialization \ + -lclangDriver \ + -lclangTooling \ + -lclangCodeGen \ + -lclangParse \ + -lclangSema \ + -lclangAnalysis \ + -lclangRewriteFrontend \ + -lclangRewrite \ + -lclangEdit \ + -lclangAST \ + -lclangLex \ + -lclangBasic + +# Local Variables: +# mode: makefile +# End: diff --git a/facebook-clang-plugins/Makefile.config b/facebook-clang-plugins/Makefile.config new file mode 100644 index 000000000..aa0dca7f2 --- /dev/null +++ b/facebook-clang-plugins/Makefile.config @@ -0,0 +1,49 @@ +# Copyright (c) 2014-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. + +# Template configuration file for make. +# You may use $(LEVEL) to refer to the directory containing this file. + +# --- targeted clang compiler ---- + +# Where to find clang installation directories +CLANG_PREFIX?=$(LEVEL)/clang/install +# Where to find clang headers (possibly a list, see below) +CLANG_INCLUDES?=$(CLANG_PREFIX)/include + +# example of alternative paths to compile and load the plugin into a locally compiled, not yet installed llvm/clang +#CLANG_PREFIX=llvm-build/Debug+Asserts +#CLANG_INCLUDES=llvm/tools/clang/include llvm-build/tools/clang/include llvm-build/include llvm/include + +# target compiler, must match the exact same version of clang as the include files +CLANG?=$(CLANG_PREFIX)/bin/clang + +LLVM_CXXFLAGS?=`$(CLANG_PREFIX)/bin/llvm-config --cxxflags 2>/dev/null || true` +LLVM_LDFLAGS?=`$(CLANG_PREFIX)/bin/llvm-config --ldflags --libs --system-libs 2>/dev/null || true` + +# --- local clang compiler --- + +# Which compiler to use to compile the plugin themselves. +LOCAL_CLANG?=clang +CC=$(LOCAL_CLANG) +CXX=$(LOCAL_CLANG)++ + +# Which preprocessor to use to extract ATD comments from cpp files. +# @requires clang >= 3.4 (The nonstandard part here is that we want to expand doc-comments contained in macros.) +ATD_CPP?=$(LOCAL_CLANG) -cc1 -E -traditional-cpp -w -P -main-file-name - -o - + +# Which preprocessor to use on ocaml "pre-source" files. +OCAML_CPP?=$(LOCAL_CLANG) -cc1 -E -P -x c -main-file-name - -o - + +# --- Objective C --- + +# Which SDK to use (if any) +SDKPATH?=$(shell ls -d "`xcode-select --print-path 2> /dev/null`"/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator*.sdk 2> /dev/null | sort -r | head -n 1 || true) + +ifeq ($(SDKPATH),) +HAS_OBJC=no +else +HAS_OBJC=yes +endif diff --git a/facebook-clang-plugins/Makefile.rules b/facebook-clang-plugins/Makefile.rules new file mode 100644 index 000000000..dbc846511 --- /dev/null +++ b/facebook-clang-plugins/Makefile.rules @@ -0,0 +1,8 @@ +# Copyright (c) 2014-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. + +build/%.o: %.cpp $(HEADERS) $(CLANG) + @mkdir -p $$(dirname $@) + $(CXX) $(CFLAGS) -c $< -o $@ diff --git a/facebook-clang-plugins/README.md b/facebook-clang-plugins/README.md new file mode 100644 index 000000000..520ad63ea --- /dev/null +++ b/facebook-clang-plugins/README.md @@ -0,0 +1,42 @@ +Facebook Clang Plugins +====================== + +This [repository](https://github.com/facebook/facebook-clang-plugins) aims to share some useful clang plugins developed at Facebook. They are mostly used by [infer](https://github.com/facebook/infer). + +It contains frontend plugins to the [clang compiler](http://clang.llvm.org/) to process the syntax of source files directly to accomplish more general tasks; specifically, we have developed a clang-to-ocaml bridge to make code analyses easier. + +Structure of the repository +--------------------------- + +- [`libtooling`](https://github.com/facebook/facebook-clang-plugins/tree/master/libtooling) : frontend plugins (currently a clang-to-json AST exporter), + +- [`clang-ocaml`](https://github.com/facebook/facebook-clang-plugins/tree/master/clang-ocaml) : OCaml libraries to process the JSON output of frontend plugins, + + +Quick start +----------- + +The current version of the plugins requires recent version of the clang compiler, re-compiled from source. Clang source which is used by this project can be found in `clang/src/` + +General instructions to compile clang can be found here: http://clang.llvm.org/get_started.html + +To compile and use the required version of clang, please run ./clang/setup.sh. +Using this script should make the variable CLANG_PREFIX unnecessary to compile the plugin. + +Caveat: +- Because of the nature of C++, clang and the plugins need to be compiled with the exact same C++ libraries. +- Also, the default stripping command of clang in release mode breaks plugins. + +Once the target compiler is installed, `make test` should run the unit tests. + +OCaml users may also run: +``` +make -C clang-ocaml test #requires proper ocaml libraries, see included clang-ocaml/README +``` + +Additional configuration options are available in `Makefile.config`. + +Licence +------- + +The plugins are MIT-licensed. diff --git a/facebook-clang-plugins/clang-ocaml/.ocamlformat b/facebook-clang-plugins/clang-ocaml/.ocamlformat new file mode 100644 index 000000000..a2e557f19 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/.ocamlformat @@ -0,0 +1,2 @@ +margin 100 +version 0.5 diff --git a/facebook-clang-plugins/clang-ocaml/Makefile b/facebook-clang-plugins/clang-ocaml/Makefile new file mode 100644 index 000000000..48edff8e0 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/Makefile @@ -0,0 +1,162 @@ +# Copyright (c) 2014-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. + +.PHONY: all clean test + +LEVEL=.. +include $(LEVEL)/Makefile.common + +LIBTOOLING=$(LEVEL)/libtooling +ATDLIB=$(LEVEL)/libtooling/atdlib + +# see README for the required versions +ATDGEN=atdgen +ATDCAT=atdcat -i + +OCAMLOPT=ocamlfind ocamlopt -package unix,atdgen,atdgen-runtime,camlzip -I build -safe-string + +all: build/clang_ast_converter build/clang_ast_named_decl_printer + +# type definitions +%_t.ml %_t.mli: %.atd + $(ATDGEN) -t -o $* $< + +# yojson +%_j.ml %_j.mli: %.atd + $(ATDGEN) -j -o $* $< + +# biniou +%_b.ml %_b.mli: %.atd + $(ATDGEN) -b -o $* $< + +# validator +%_v.ml %_v.mli: %.atd + $(ATDGEN) -v -o $* $< + +# standard ocaml rules +build/%.cmx:%.ml + $(OCAMLOPT) -o $@ -c $< + +build/%.cmi:%.mli + $(OCAMLOPT) -o $@ -c $< + +build/%.cmx:build/%.ml + $(OCAMLOPT) -o $@ -c $< + +build/%.cmi:build/%.mli + $(OCAMLOPT) -o $@ -c $< + +# clang AST +build/ast_inline.atd.p: $(LIBTOOLING)/ASTExporter.h + @mkdir -p build + @$(MAKE) -C $(LIBTOOLING) build/ASTExporter.h.p + $(ATDLIB)/extract_atd_from_cpp.py $(LIBTOOLING)/build/ASTExporter.h.p | $(ATDLIB)/normalize_names_in_atd.py > $@ + +build/ast_inline.atd: build/ast_inline.atd.p + $(ATD_CPP) $< > $@ + +build/clang_ast.atd: build/ast_inline.atd +# $(ATDCAT) returns 0 even if it fails - look at the output file to +# determine whether it failed or not. Then remove the result file as +# make misteriously doesn't do that by itself + $(ATDCAT) $< > $@ && { [ -s $@ ] || { rm $@; exit 1; }; } + +build/ast_inline.atd.inc: build/ast_inline.atd.p + cat $< | grep '^#' > $@ + +build/ast_inline.pat.inc: build/ast_inline.atd.inc + cat $< | sed 's/*/,/g; s/ list/_list/g' > $@ + +build/clang_ast_proj.mli: clang_ast_proj.mli.p build/ast_inline.atd.inc + cat $< | $(ATD_CPP) -include build/ast_inline.atd.inc > $@ + +build/clang_ast_proj.ml: clang_ast_proj.ml.p build/ast_inline.pat.inc + $(OCAML_CPP) -I$(CLANG_PREFIX)/include $< -o - | $(ATDLIB)/normalize_names_in_atd.py | $(ATD_CPP) -include build/ast_inline.pat.inc > $@ + +# test files except for Objective-C +TEST_FILES_COMMON=c_attributes.c bind_temporary.cpp \ +c_cast.cpp const_cast.cpp dynamic_cast.cpp expr_with_cleanups.cpp inheritance.cpp \ +lambda.cpp materialize_temporary.cpp namespace_decl.cpp new.cpp struct.cpp this.cpp \ +unresolved_lookup.cpp using_directive.cpp class_template.cpp function_template.cpp \ +type_trait.cpp no_except_expr.cpp friend.cpp + +TEST_FILES=$(TEST_FILES_COMMON) + +# only add Objective-C(++) files on mac +ifeq ($(HAS_OBJC),yes) +TEST_FILES+=Hello.m ObjCTest.m ObjCBridgeTransferTest.m objcpp_template_unboxing.mm +endif + +PRINTER_TEST_FILES=$(TEST_FILES) +CONVERTER_TEST_FILE=struct.cpp +YOJSON_VALIDATOR_TEST_FILE=$(TEST_FILES) + +# simple library for composing unix processes +build/process_test: build/process.cmx build/process_test.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +# Utilities +build/utils_test: build/process.cmx build/utils.cmx build/utils_test.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +CLANG_AST_LIBS=$(patsubst %,build/%.cmx,clang_ast_types clang_ast_t clang_ast_j process utils yojson_utils) + +build/yojson_utils_test: $(CLANG_AST_LIBS) build/yojson_utils_test.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +build/clang_ast_proj_test: $(CLANG_AST_LIBS) build/clang_ast_proj.cmx build/clang_ast_proj_test.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +# AST format converter +build/clang_ast_converter: $(CLANG_AST_LIBS) build/clang_ast_converter.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +CLANG_AST_PROJ_LIBS=$(patsubst %,build/%.cmx,clang_ast_types clang_ast_t clang_ast_j clang_ast_proj clang_ast_visit clang_ast_v clang_ast_main) + +# example of AST visitor +build/clang_ast_named_decl_printer: $(CLANG_AST_PROJ_LIBS) build/clang_ast_named_decl_printer.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +build/clang_ast_main_test: $(CLANG_AST_PROJ_LIBS) build/clang_ast_main_test.cmx + $(OCAMLOPT) -linkpkg -o $@ $^ + +test: $(patsubst %,build/%,process_test utils_test yojson_utils_test clang_ast_proj_test clang_ast_converter clang_ast_named_decl_printer clang_ast_main_test) + @$(MAKE) -C $(LIBTOOLING) $(PRINTER_TEST_FILES:%=build/ast_samples/%.yjson) $(TEST_FILES:%=build/ast_samples/%.yjson.gz) $(CONVERTER_TEST_FILE:%=build/ast_samples/%.yjson) + @export LIMIT=100; \ + $(RUNTEST) tests/process_test build/process_test; \ + $(RUNTEST) tests/utils_test build/utils_test; \ + $(RUNTEST) tests/yojson_utils_test build/yojson_utils_test; \ + $(RUNTEST) tests/clang_ast_proj_test build/clang_ast_proj_test; \ + if [ "$(HAS_OBJC)" = "yes" ]; then \ + $(RUNTEST) tests/clang_ast_named_decl_printer build/clang_ast_named_decl_printer $(PRINTER_TEST_FILES:%=$(LIBTOOLING)/build/ast_samples/%.yjson); \ + else \ + printf "[~] %s skipped (no Objective-C support)\n" clang_ast_named_decl_printer; \ + fi; \ + $(RUNTEST) tests/clang_ast_converter build/clang_ast_converter --pretty $(CONVERTER_TEST_FILE:%=$(LIBTOOLING)/build/ast_samples/%.yjson); \ + $(RUNTEST) tests/clang_ast_yojson_validation ./yojson_validator.sh build/clang_ast_converter $(YOJSON_VALIDATOR_TEST_FILE:%=$(LIBTOOLING)/build/ast_samples/%.yjson.gz); \ + if [ "$(HAS_OBJC)" = "yes" ]; then \ + $(RUNTEST) tests/clang_ast_main_test build/clang_ast_main_test $(PRINTER_TEST_FILES:%=$(LIBTOOLING)/build/ast_samples/%.yjson); \ + else \ + printf "[~] %s skipped (no Objective-C support)\n" clang_ast_main_test; \ + fi + @if [ ! $$KEEP_TEST_OUTPUTS ]; then rm -f tests/*.out; fi + +record-test-outputs: + @rm -f tests/*.out + @$(MAKE) DEBUG=1 KEEP_TEST_OUTPUTS=1 test || true + @for F in tests/*.out; do cp $$F $${F%.out}.exp; done + @rm -f tests/*.out + +.PHONY: fmt +fmt: + ocamlformat -i $(wildcard *.ml) $(wildcard *.mli) + +-include .depend + +.depend: $(wildcard *.ml) $(wildcard *.mli) build/clang_ast_t.mli build/clang_ast_t.ml build/clang_ast_j.mli build/clang_ast_j.ml build/clang_ast_v.mli build/clang_ast_v.ml build/clang_ast_proj.mli build/clang_ast_proj.ml + ocamldep -native -I build $^ | sed -e 's/\([a-zA-Z0-9_]*\.cm.\)/build\/\1/g' | sed -e 's/build\/build\//build\//g' > .depend + +clean: + rm -rf tests/*.out build .depend diff --git a/facebook-clang-plugins/clang-ocaml/README.md b/facebook-clang-plugins/clang-ocaml/README.md new file mode 100644 index 000000000..798af9168 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/README.md @@ -0,0 +1,95 @@ + +# Ocaml frontend to the Clang AST + + +Additional requirements: +- ocaml >= 4.02 +- camlzip +- yojson +- atd >= 1.1.2 +- atdgen >= 2.0.0 + +The simplest way to install these dependencies is +1) to install ocaml and opam using your system package manager (e.g. homebrew on MAC OS). +2) run 'opam install camlzip yojson atd atdgen' + +Assuming that the current dir is the root of the git repository and CLANG_PREFIX=/usr/local, you may compile and run tests with +``` +export CLANG_PREFIX=/usr/local +make -C clang-ocaml depend +make -C clang-ocaml test +``` + +## API details + +The precise AST datatype is described using the "ATD" language. To view the generated ATD file, run `make all` in this directory and then open `build/clang_ast.atd`. That should be enough to get started. + +The sections below describe extra functionality for visiting and manipulating the AST from OCaml. + +### Autogenerated utility functions + +The `Clang_ast_proj` module provides utility functions for AST nodes. Its implementation is autogenerated from the header files provided by the current version of clang. Always prefer to use utility functions from this module vs writing them manually. +Refer to [clang_ast_proj.mli.p](clang_ast_proj.mli.p) for a list of currently available functions. + +### Visitors + +The `Clang_ast_visit` module provides hooks to be run on AST nodes. Currently there is support for visitors in `Decl`, `Stmt`, `Type` and `SourceLocation` nodes. Here is basic example, that prints kinds of all decl and stmt nodes: +```OCaml +let print_decl _ decl = + prerr (Clang_ast_proj.get_decl_kind_string decl) + +let print_stmt _ stmt = + prerr (Clang_ast_proj.get_stmt_kind_string decl) + +let print_ast decl = + Clang_ast_visit.decl_visitor := print_decl; + Clang_ast_visit.stmt_visitor := print_stmt; + ignore (Clang_ast_v.validate_decl [] decl) +``` + +See [`clang_ast_main.ml`](clang_ast_main.ml) for an example of how to use this mechanism to produce maps from node pointers to the nodes they refer to. See `Clang_ast_main.visit_ast` for an example wrapper that provides a convenient API to the `Clang_ast_visit` module. + +See [`clang_ast_visit.ml`](clang_ast_visit.ml) for the current list of nodes that support custom visitors. + +For more examples of custom visitors, see [`clang_ast_main_test.ml`](clang_ast_main_test.ml). + +### Extending types from AST + +It's possible to extend existing OCaml variant types in the AST structure with more variants. Currently, `type_ptr` is the only type that allows it. It's achieved via an [OCaml extensible variant type](https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#sec252). + +For example, see how [infer's frontend](https://github.com/facebook/infer/blob/8c6615963f79f03a644ae9087eb160da89a09a1a/infer/src/clang/clang_ast_extend.ml) uses this feature to extend `type_ptr`. + + +## Implementation details + +High level: +- The plugin YojsonASTExporter defined in libtooling/ASTExporter.cpp outputs AST trees in an extended JSON format called "Yojson". Respectively, BiniouASTExporter outputs the AST in the "Biniou" format. + +- Most of the ATD definitions are embedded in the C++ code of the ASTExporter. Refer to [ATD guidelines](../libtooling/ATD_GUIDELINES.md) for more information. + +- We use scripts in libtooling/atdlib to extract and process the ATD definitions, then we use `atdgen` to generate the OCaml type definitions and json stub. + +Utility functions in `Clang_ast_proj`: +- This module relies heavily on the C preprocessor - it uses information from clang headers to generate OCaml code. +- Clang provides `.inc` and `.def` files that provide information about available Node kinds. For example, [`TypeNode.def`](https://github.com/llvm-mirror/clang/blob/fe32c6a33461a8c60e18c0414d4844a47442328a/include/clang/AST/TypeNodes.def) contains information about all possible types that clang can produce. Internally clang uses the same headers. +- In order to add new function, one needs to identify clang header that contains relevant information. Sometimes it's useful to read clang codebase to see how certain enums are generated - usually clang includes same headers to generate them. For example decl kind enum is [defined](https://github.com/llvm-mirror/clang/blob/c5dd58546ce4d20cd71cc26cb790e7f91c8f908f/include/clang/AST/DeclBase.h#L84-L91) by including `clang/AST/DeclNodes.inc` file. +- Refer to existing code to see how to generate OCaml code with the C preprocessor. +- If something doesn't work, `build/Clang_ast_proj.ml` will contain generated code. This way, it's easier to see what happens during macro expansion. + +Visitors: +- Implemented via [atdgen validation](https://mjambon.github.io/atdgen-doc/atdgen#field-validator) +- Adding support for a new visitor requires changing ATD annotations in ASTExporter and modifying `Clang_ast_visit.ml` +- Refer to existing visitors to see how it's done +- It is possible to modify the current node inside a visitor as long as its fields are mutable + +Extensible variants: +- Implemented via [atdgen custom wrapper](https://mjambon.github.io/atdgen-doc/atdgen#field-t). It defines `type_ptr` to be extensible variant. +- When looking at Yojson/Biniou output, `type_ptr` will be of type int. It's up to atdgen serializer to call `wrap`/`unwrap` + +Testing: +- The main program [`clang_ast_yojson_validator.ml`](clang_ast_yojson_validator.ml) is meant to parse, re-print, and compare yojson files emitted by ASTExporter. We use ydump (part of the yojson package) to normalize the original json and the re-emitted json before comparing them. +- `clang_ast_main_test.ml` runs custom validators to confirm that visitors work as expected. Its output is recorded and checked into repository. + +## ATD docs +https://mjambon.github.io/atdgen-doc/atdgen +https://mjambon.github.io/atdgen-doc/atd-syntax diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_converter.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_converter.ml new file mode 100644 index 000000000..78878e0a8 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_converter.ml @@ -0,0 +1,8 @@ +(* + * Copyright (c) 2014-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. + *) + +let () = Yojson_utils.run_converter_tool Clang_ast_j.read_decl Clang_ast_j.write_decl diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_main.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_main.ml new file mode 100644 index 000000000..4a1bcb922 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_main.ml @@ -0,0 +1,116 @@ +(* + * Copyright (c) 2015-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. + *) + +module PointerOrd = struct + type t = int + + let compare (i: int) (j: int) = i - j +end + +module PointerMap = Map.Make (PointerOrd) + +let declMap = ref PointerMap.empty + +let stmtMap = ref PointerMap.empty + +let typeMap = ref PointerMap.empty + +let ivarToPropertyMap = ref PointerMap.empty + +let empty_v = Clang_ast_visit.empty_visitor + +(* This function is not thread-safe *) +let visit_ast ?(visit_decl= empty_v) ?(visit_stmt= empty_v) ?(visit_type= empty_v) + ?(visit_src_loc= empty_v) top_decl = + Clang_ast_visit.decl_visitor := visit_decl ; + Clang_ast_visit.stmt_visitor := visit_stmt ; + Clang_ast_visit.type_visitor := visit_type ; + Clang_ast_visit.source_location_visitor := visit_src_loc ; + (* visit *) + ignore (Clang_ast_v.validate_decl [] top_decl) + + +let get_ptr_from_node node = + match node with + | `DeclNode decl -> + let decl_info = Clang_ast_proj.get_decl_tuple decl in + decl_info.Clang_ast_t.di_pointer + | `StmtNode stmt -> + let stmt_info, _ = Clang_ast_proj.get_stmt_tuple stmt in + stmt_info.Clang_ast_t.si_pointer + | `TypeNode c_type -> + let type_info = Clang_ast_proj.get_type_tuple c_type in + type_info.Clang_ast_t.ti_pointer + + +let get_val_from_node node = + match node with `DeclNode decl -> decl | `StmtNode stmt -> stmt | `TypeNode c_type -> c_type + + +let add_node_to_cache node cache = + let key = get_ptr_from_node node in + let value = get_val_from_node node in + cache := PointerMap.add key value !cache + + +let process_decl _path decl = + add_node_to_cache (`DeclNode decl) declMap ; + match decl with + | Clang_ast_t.ObjCPropertyDecl (_, _, obj_c_property_decl_info) -> ( + match obj_c_property_decl_info.Clang_ast_t.opdi_ivar_decl with + | Some decl_ref -> + let ivar_pointer = decl_ref.Clang_ast_t.dr_decl_pointer in + ivarToPropertyMap := PointerMap.add ivar_pointer decl !ivarToPropertyMap + | None -> + () ) + | _ -> + () + + +let add_stmt_to_cache _path stmt = add_node_to_cache (`StmtNode stmt) stmtMap + +let add_type_to_cache _path c_type = add_node_to_cache (`TypeNode c_type) typeMap + +let previous_sloc = {Clang_ast_t.sl_file= None; sl_line= None; sl_column= None} + +let get_sloc current previous = match current with None -> previous | Some _ -> current + +let mutate_sloc sloc file line column = + let open Clang_ast_t in + sloc.sl_file <- file ; + sloc.sl_line <- line ; + sloc.sl_column <- column + + +let reset_sloc sloc = mutate_sloc sloc None None None + +let complete_source_location _path source_loc = + let open Clang_ast_t in + let file = get_sloc source_loc.sl_file previous_sloc.sl_file in + let line = get_sloc source_loc.sl_line previous_sloc.sl_line in + let column = get_sloc source_loc.sl_column previous_sloc.sl_column in + mutate_sloc source_loc file line column ; + mutate_sloc previous_sloc file line column + + +let reset_cache () = + declMap := PointerMap.empty ; + stmtMap := PointerMap.empty ; + typeMap := PointerMap.empty ; + ivarToPropertyMap := PointerMap.empty ; + reset_sloc previous_sloc + + +(* This function is not thread-safe *) +let index_node_pointers top_decl = + (* just in case *) + reset_cache () ; + (* populate cache *) + visit_ast ~visit_decl:process_decl ~visit_stmt:add_stmt_to_cache ~visit_type:add_type_to_cache + ~visit_src_loc:complete_source_location top_decl ; + let result = (!declMap, !stmtMap, !typeMap, !ivarToPropertyMap) in + reset_cache () ; result diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_main_test.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_main_test.ml new file mode 100644 index 000000000..6a7cd5d68 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_main_test.ml @@ -0,0 +1,73 @@ +(* + * Copyright (c) 2015-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. + *) + +exception PointerMismatch + +let validate_ptr key_ptr node = + let node_ptr = Clang_ast_main.get_ptr_from_node node in + if node_ptr != key_ptr then raise PointerMismatch + + +let validate_decl_ptr key_ptr decl = validate_ptr key_ptr (`DeclNode decl) + +let validate_stmt_ptr key_ptr stmt = validate_ptr key_ptr (`StmtNode stmt) + +let validate_type_ptr key_ptr c_type = validate_ptr key_ptr (`TypeNode c_type) + +let print_node path kind_str = + let indent = String.make (List.length path) ' ' in + prerr_string indent ; prerr_string kind_str ; prerr_newline () + + +let sloc_to_str sloc = + let opt_to_str to_str_f v = match v with Some x -> to_str_f x | None -> "None" in + let file_str = opt_to_str (fun f -> f) sloc.Clang_ast_t.sl_file in + let line_str = opt_to_str string_of_int sloc.Clang_ast_t.sl_line in + let column_str = opt_to_str string_of_int sloc.Clang_ast_t.sl_column in + file_str ^ ":" ^ line_str ^ ":" ^ column_str + + +let src_range_to_str range = + let first, last = range in + sloc_to_str first ^ " " ^ sloc_to_str last + + +let print_decl path decl = + let kind_str = Clang_ast_proj.get_decl_kind_string decl in + let decl_info = Clang_ast_proj.get_decl_tuple decl in + let src_str = src_range_to_str decl_info.Clang_ast_t.di_source_range in + print_node path (kind_str ^ " " ^ src_str) + + +let print_stmt path stmt = print_node path (Clang_ast_proj.get_stmt_kind_string stmt) + +let print_map_size map = + let s = Clang_ast_main.PointerMap.cardinal map in + prerr_string (string_of_int s ^ " ") + + +let check_decl_cache_from_file fname = + let ast = Atdgen_runtime.Util.Json.from_file Clang_ast_j.read_decl fname in + let decl_cache, stmt_cache, type_cache, _ = Clang_ast_main.index_node_pointers ast in + print_map_size decl_cache ; + print_map_size stmt_cache ; + print_map_size type_cache ; + prerr_newline () ; + Clang_ast_main.PointerMap.iter validate_decl_ptr decl_cache ; + Clang_ast_main.PointerMap.iter validate_stmt_ptr stmt_cache ; + Clang_ast_main.PointerMap.iter validate_type_ptr type_cache ; + Clang_ast_main.visit_ast ~visit_decl:print_decl ~visit_stmt:print_stmt ast + + +let main = + let v = Sys.argv in + try for i = 1 to Array.length v - 1 do check_decl_cache_from_file v.(i) done with + | PointerMismatch -> + prerr_string "Pointer in cache doesn't match" ; + exit 1 + | Yojson.Json_error s | Atdgen_runtime.Oj_run.Error s -> + prerr_string s ; prerr_newline () ; exit 1 diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_named_decl_printer.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_named_decl_printer.ml new file mode 100644 index 000000000..7589805cd --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_named_decl_printer.ml @@ -0,0 +1,34 @@ +(* + * Copyright (c) 2014-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. + *) + +module P = Printf + +let rec visit_named_decls f decl = + let () = + match Clang_ast_proj.get_named_decl_tuple decl with Some (x, y) -> f x y | None -> () + in + match Clang_ast_proj.get_decl_context_tuple decl with + | Some (l, _) -> + List.iter (visit_named_decls f) l + | None -> + () + + +let print_named_decl_from_file fname = + let ast = Atdgen_runtime.Util.Json.from_file Clang_ast_j.read_decl fname in + let getname name_info = name_info.Clang_ast_t.ni_name in + visit_named_decls + (fun _ info -> + print_string (getname info) ; + print_newline () ) + ast + + +let main = + try Array.iteri (fun i arg -> if i <> 0 then print_named_decl_from_file arg) Sys.argv with + | Yojson.Json_error s | Atdgen_runtime.Oj_run.Error s -> + prerr_string s ; prerr_newline () ; exit 1 diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_proj.ml.p b/facebook-clang-plugins/clang-ocaml/clang_ast_proj.ml.p new file mode 100644 index 000000000..bfc9badce --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_proj.ml.p @@ -0,0 +1,225 @@ +(* + * Copyright (c) 2014-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. + *) + +open Clang_ast_t + +#define s(x) #x + +let get_decl_kind_string = function +#define DECL(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> s(DERIVED) ^ "Decl" +#define ABSTRACT_DECL(DECL) +#include + +let get_decl_tuple = function +#define DECL(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> (decl_tuple) +#define ABSTRACT_DECL(DECL) +#include + +let update_decl_tuple __f = function +#define DECL(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> \ + let (decl_tuple) = __f (decl_tuple) in DERIVED@@Decl (@DERIVED@_decl_tuple) +#define ABSTRACT_DECL(DECL) +#include + + +let get_decl_context_tuple = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define MY_DECL_CONTEXT(DERIVED) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> Some (decl_context_tuple) +(* skipping Function and ObjCMethod *) +#define TAG(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define OBJCCONTAINER(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define CAPTURED(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define LINKAGESPEC(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define NAMESPACE(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define TRANSLATIONUNIT(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#include +#undef MY_DECL_CONTEXT +| _ -> None + +let update_decl_context_tuple __f = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define MY_DECL_CONTEXT(DERIVED) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> \ + let (decl_context_tuple) = __f (decl_context_tuple) in DERIVED@@Decl (@DERIVED@_decl_tuple) +(* skipping Function and ObjCMethod *) +#define TAG(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define OBJCCONTAINER(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define CAPTURED(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define LINKAGESPEC(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define NAMESPACE(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#define TRANSLATIONUNIT(DERIVED, BASE) MY_DECL_CONTEXT(DERIVED) +#include +#undef MY_DECL_CONTEXT +| x -> x + + +let get_function_decl_tuple = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define FUNCTION(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> Some (function_decl_tuple) +#include +| _ -> None + +let get_named_decl_tuple = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define NAMED(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> Some (named_decl_tuple) +#include +| _ -> None + +let update_named_decl_tuple __f = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define NAMED(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> \ + let (named_decl_tuple) = __f (named_decl_tuple) in DERIVED@@Decl (@DERIVED@_decl_tuple) +#include +| x -> x + + +let get_type_decl_tuple = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define TYPE(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> Some (type_decl_tuple) +#include +| _ -> None + +let update_type_decl_tuple __f = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define TYPE(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> \ + let (type_decl_tuple) = __f (type_decl_tuple) in DERIVED@@Decl (@DERIVED@_decl_tuple) +#include +| x -> x + + +let get_tag_decl_tuple = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define TAG(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> Some (tag_decl_tuple) +#include +| _ -> None + +let update_tag_decl_tuple __f = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define TAG(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> \ + let (tag_decl_tuple) = __f (tag_decl_tuple) in DERIVED@@Decl (@DERIVED@_decl_tuple) +#include +| x -> x + + +let get_var_decl_tuple = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define VAR(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> Some (var_decl_tuple) +#include +| _ -> None + +let update_var_decl_tuple __f = function +#define DECL(DERIVED, BASE) +#define ABSTRACT_DECL(DECL) +#define VAR(DERIVED, BASE) | DERIVED@@Decl (@DERIVED@_decl_tuple) -> \ + let (var_decl_tuple) = __f (var_decl_tuple) in DERIVED@@Decl (@DERIVED@_decl_tuple) +#include +| x -> x + + +let get_stmt_kind_string = function +#define STMT(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> s(CLASS) +#define ABSTRACT_STMT(STMT) +#include + +let get_stmt_tuple = function +#define STMT(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> (stmt_tuple) +#define ABSTRACT_STMT(STMT) +#include + +let update_stmt_tuple __f = function +#define STMT(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> \ + let (stmt_tuple) = __f (stmt_tuple) in CLASS (@CLASS@_tuple) +#define ABSTRACT_STMT(STMT) +#include + + +let get_expr_tuple = function +#define STMT(CLASS, PARENT) +#define EXPR(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> Some (expr_tuple) +#define ABSTRACT_STMT(STMT) +#include +| _ -> None + +let update_expr_tuple __f = function +#define STMT(CLASS, PARENT) +#define EXPR(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> \ + let (expr_tuple) = __f (expr_tuple) in CLASS (@CLASS@_tuple) +#define ABSTRACT_STMT(STMT) +#include +| x -> x + +let get_cxx_construct_expr_tuple = function +#define STMT(CLASS, PARENT) +#define CXXCONSTRUCTEXPR(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> Some (cxx_construct_expr_tuple) +#define ABSTRACT_STMT(STMT) +#include +| _ -> None + +let update_cxx_construct_expr_tuple __f = function +#define STMT(CLASS, PARENT) +#define CXXCONSTRUCTEXPR(CLASS, PARENT) | CLASS (@CLASS@_tuple) -> \ + let (cxx_construct_expr_tuple) = __f (cxx_construct_expr_tuple) in CLASS (@CLASS@_tuple) +#define ABSTRACT_STMT(STMT) +#include +| x -> x + +let get_type_tuple = function +#define TYPE(DERIVED, BASE) | DERIVED@@Type (@DERIVED@_type_tuple) -> (type_tuple) +#define ABSTRACT_TYPE(DERIVED, BASE) +TYPE(None, Type) (* special case for nullptr type *) +#include + +let is_valid_binop_kind_name = function +#define BINARY_OPERATION(Name, Spelling) | s(Name) -> true +#include +| _ -> false + +let is_valid_unop_kind_name = function +#define UNARY_OPERATION(Name, Spelling) | s(Name) -> true +#include +| _ -> false + +let string_of_binop_kind = function +#define BINARY_OPERATION(Name, Spelling) | `Name -> s(Name) +#include + +let string_of_unop_kind = function +#define UNARY_OPERATION(Name, Spelling) | `Name -> s(Name) +#include + +let is_valid_astnode_kind = function +#define DECL(DERIVED, BASE) | s(DERIVED@@Decl) -> true +#define ABSTRACT_DECL(DECL) +#include +#define STMT(CLASS, PARENT) | s(CLASS) -> true +#define ABSTRACT_STMT(STMT) +#include +| _ -> false + +let string_of_cast_kind = function +#define CAST_OPERATION(Name) | `Name -> s(Name) +#include + +let get_cast_kind = function +#define STMT(CLASS, PARENT) +#define ABSTRACT_STMT(TYPE) +#define CASTEXPR(Type, Base) | Type (_, _, _, cast_expr_info) +#define EXPLICITCASTEXPR(Type, Base) | Type (_, _, _, cast_expr_info, _) +#define CXXNAMEDCASTEXPR(Type, Base) | Type (_, _, _, cast_expr_info, _, _) +#define OBJCBRIDGEDCASTEXPR(Type, Base) | Type (_, _, _, cast_expr_info, _, _) +#include +-> Some cast_expr_info.cei_cast_kind +| _ -> None diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_proj.mli.p b/facebook-clang-plugins/clang-ocaml/clang_ast_proj.mli.p new file mode 100644 index 000000000..4a8717327 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_proj.mli.p @@ -0,0 +1,41 @@ +(* + * Copyright (c) 2014-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. + *) + +open Clang_ast_t + +val get_cast_kind : stmt -> cast_kind option +val get_decl_context_tuple : decl -> (decl_context_tuple) option +val get_decl_kind_string : decl -> string +val get_decl_tuple : decl -> (decl_tuple) +val get_expr_tuple : stmt -> (expr_tuple) option +val get_cxx_construct_expr_tuple : stmt -> (cxx_construct_expr_tuple) option +val get_function_decl_tuple : decl -> (function_decl_tuple) option +val get_named_decl_tuple : decl -> (named_decl_tuple) option +val get_stmt_kind_string : stmt -> string +val get_stmt_tuple : stmt -> (stmt_tuple) +val get_tag_decl_tuple : decl -> (tag_decl_tuple) option +val get_type_decl_tuple : decl -> (type_decl_tuple) option +val get_type_tuple : c_type -> (type_tuple) +val get_var_decl_tuple : decl -> (var_decl_tuple) option + +val is_valid_astnode_kind : string -> bool +val is_valid_binop_kind_name : string -> bool +val is_valid_unop_kind_name : string -> bool + +val string_of_binop_kind : binary_operator_kind -> string +val string_of_cast_kind : cast_kind -> string +val string_of_unop_kind : unary_operator_kind -> string + +val update_cxx_construct_expr_tuple : ((cxx_construct_expr_tuple) -> (cxx_construct_expr_tuple)) -> stmt -> stmt +val update_decl_context_tuple : ((decl_context_tuple) -> (decl_context_tuple)) -> decl -> decl +val update_decl_tuple : ((decl_tuple) -> (decl_tuple)) -> decl -> decl +val update_expr_tuple : ((expr_tuple) -> (expr_tuple)) -> stmt -> stmt +val update_named_decl_tuple : ((named_decl_tuple) -> (named_decl_tuple)) -> decl -> decl +val update_stmt_tuple : ((stmt_tuple) -> (stmt_tuple)) -> stmt -> stmt +val update_tag_decl_tuple : ((tag_decl_tuple) -> (tag_decl_tuple)) -> decl -> decl +val update_type_decl_tuple : ((type_decl_tuple) -> (type_decl_tuple)) -> decl -> decl +val update_var_decl_tuple : ((var_decl_tuple) -> (var_decl_tuple)) -> decl -> decl diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_proj_test.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_proj_test.ml new file mode 100644 index 000000000..5a465d4b2 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_proj_test.ml @@ -0,0 +1,122 @@ +(* + * Copyright (c) 2014-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. + *) + +open Utils +open Clang_ast_t +open Clang_ast_proj + +let source_location ?file ?line ?column () = {sl_file= file; sl_line= line; sl_column= column} + +let empty_source_location = source_location () + +let decl_info start stop = + { di_pointer= 0 + ; di_parent_pointer= None + ; di_source_range= (start, stop) + ; di_owning_module= None + ; di_is_hidden= false + ; di_is_implicit= false + ; di_is_used= false + ; di_is_this_declaration_referenced= false + ; di_is_invalid_decl= false + ; di_attributes= [] + ; di_full_comment= None + ; di_access= `None } + + +let name_info name = {ni_name= name; ni_qual_name= [name]} + +let append_name_info info suffix = + {ni_name= info.ni_name ^ suffix; ni_qual_name= List.map (fun x -> x ^ suffix) info.ni_qual_name} + +let qual_type ptr = + { qt_type_ptr= ptr + ; qt_is_const= false + ; qt_is_restrict= false + ; qt_is_volatile= false } + +let var_decl_info ~is_global = + { vdi_is_global= is_global + ; vdi_is_extern= false + ; vdi_is_static_local= false + ; vdi_is_static_data_member= false + ; vdi_is_const_expr= false + ; vdi_is_init_ice= false + ; vdi_is_init_expr_cxx11_constant= false + ; vdi_init_expr= None + ; vdi_parm_index_in_function= None + ; vdi_is_static = false} + +let stmt_info pointer = + { si_pointer= pointer + ; si_source_range= (empty_source_location, empty_source_location) } + +let expr_info qual_type = + { ei_qual_type= qual_type + ; ei_value_kind= `RValue + ; ei_object_kind= `Ordinary } + +let cxx_construct_expr_info decl_ref is_copy_constructor = + { xcei_decl_ref= decl_ref + ; xcei_is_elidable= false + ; xcei_requires_zero_initialization= false + ; xcei_is_copy_constructor= is_copy_constructor } + + +let () = + let di = decl_info empty_source_location empty_source_location in + let decl = LabelDecl (di, name_info "foo") in + assert_equal "get_decl_kind_string" (get_decl_kind_string decl) "LabelDecl" ; + assert_equal "get_decl_tuple" (get_decl_tuple decl) di ; + assert_equal "get_decl_context_tuple" (get_decl_context_tuple decl) None ; + assert_equal "get_named_decl_tuple" (get_named_decl_tuple decl) (Some (di, name_info "foo")) ; + assert_equal "get_type_decl_tuple" (get_type_decl_tuple decl) None ; + assert_equal "get_tag_decl_tuple" (get_tag_decl_tuple decl) None ; + assert_equal "is_valid_astnode_kind" (is_valid_astnode_kind (get_decl_kind_string decl)) true ; + assert_equal "is_valid_astnode_kind" (is_valid_astnode_kind "AFakeNodeThatDoesNotExist") false ; + let decl2 = update_named_decl_tuple (fun (di, info) -> (di, append_name_info info "bar")) decl in + assert_equal "update_named_decl_tuple" (get_named_decl_tuple decl2) + (Some (di, name_info "foobar")) ; + let di2 = decl_info (source_location ~file:"bla" ()) (source_location ~file:"bleh" ()) in + let decl3 = update_decl_tuple (fun _ -> di2) decl in + assert_equal "update_decl_tuple" (get_decl_tuple decl3) di2 ; + + assert_equal "get_var_decl_tuple_none" (get_var_decl_tuple decl) None ; + let vdi = var_decl_info ~is_global:true in + let qt = qual_type (Clang_ast_types.TypePtr.wrap 0) in + let var_decl = ParmVarDecl(di, name_info "fooey", qt, vdi) in + assert_equal "get_var_decl_tuple" (get_var_decl_tuple var_decl) + (Some (di, name_info "fooey", qt, vdi)) ; + let updated_var_decl = update_var_decl_tuple + (fun (di, ni, qt, vdi) -> + (di, append_name_info ni "-mod", qt, var_decl_info ~is_global:false)) + var_decl in + assert_equal "update_var_decl_tuple" (get_var_decl_tuple updated_var_decl) + (Some (di, name_info "fooey-mod", qt, var_decl_info ~is_global:false)) ; + + let stmt = DoStmt(stmt_info 0, []) in + assert_equal "get_cxx_construct_expr_tuple_from_stmt" + (get_cxx_construct_expr_tuple stmt) None ; + let ei = expr_info qt in + let dr = { dr_kind= `CXXConstructor + ; dr_decl_pointer= 0 + ; dr_name= None + ; dr_is_hidden= false + ; dr_qual_type= None } in + let xcei = cxx_construct_expr_info dr true in + let xcei2 = cxx_construct_expr_info dr false in + let cxx_ctor_expr = CXXConstructExpr(stmt_info 1, [], ei, xcei) in + assert_equal "get_cxx_construct_expr_tuple" + (get_cxx_construct_expr_tuple cxx_ctor_expr) + (Some (stmt_info 1, [], ei, xcei)) ; + let updated_cxx_ctor_expr = update_cxx_construct_expr_tuple + (fun (si, sl, ei, xcei) -> + (stmt_info (si.si_pointer + 1)), sl, ei, xcei2) + cxx_ctor_expr in + assert_equal "update_cxx_construct_expr_tuple" + (get_cxx_construct_expr_tuple updated_cxx_ctor_expr) + (Some (stmt_info 2, [], ei, xcei2)) ; diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_types.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_types.ml new file mode 100644 index 000000000..a333b8cdd --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_types.ml @@ -0,0 +1,17 @@ +(* + * Copyright (c) 2015-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. + *) +(* Type pointers *) +module TypePtr = struct + (* extensible type to allow users to specify more variants *) + type t = .. + + type t += Ptr of int + + let wrap x = Ptr x + + let unwrap = function Ptr x -> x | _ -> raise (invalid_arg "Unknown variant type") +end diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_visit.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_visit.ml new file mode 100644 index 000000000..7ae60cfaa --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_visit.ml @@ -0,0 +1,47 @@ +(* + * Copyright (c) 2015-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. + *) + +type visit_decl_t = Atdgen_runtime.Util.Validation.path -> Clang_ast_t.decl -> unit + +type visit_stmt_t = Atdgen_runtime.Util.Validation.path -> Clang_ast_t.stmt -> unit + +type visit_type_t = Atdgen_runtime.Util.Validation.path -> Clang_ast_t.c_type -> unit + +type visit_src_loc_t = Atdgen_runtime.Util.Validation.path -> Clang_ast_t.source_location -> unit + +let empty_visitor _path _decl = () + +let decl_visitor = ref (empty_visitor : visit_decl_t) + +let stmt_visitor = ref (empty_visitor : visit_stmt_t) + +let type_visitor = ref (empty_visitor : visit_type_t) + +let source_location_visitor = ref (empty_visitor : visit_src_loc_t) + +let visit_decl path decl = + !decl_visitor path decl ; + (* return None to pass atd validation *) + None + + +let visit_stmt path stmt = + !stmt_visitor path stmt ; + (* return None to pass atd validation *) + None + + +let visit_type path c_type = + !type_visitor path c_type ; + (* return None to pass atd validation *) + None + + +let visit_source_loc path src_loc = + !source_location_visitor path src_loc ; + (* return None to pass atd validation *) + None diff --git a/facebook-clang-plugins/clang-ocaml/clang_ast_yojson_validator.ml b/facebook-clang-plugins/clang-ocaml/clang_ast_yojson_validator.ml new file mode 100644 index 000000000..7ab216aa5 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/clang_ast_yojson_validator.ml @@ -0,0 +1,8 @@ +(* + * Copyright (c) 2014-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. + *) + +let main = Yojson_utils.make_yojson_validator Clang_ast_j.read_decl Clang_ast_j.write_decl Sys.argv diff --git a/facebook-clang-plugins/clang-ocaml/process.ml b/facebook-clang-plugins/clang-ocaml/process.ml new file mode 100644 index 000000000..30773d8bd --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/process.ml @@ -0,0 +1,125 @@ +(* + * Copyright (c) 2014-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. + *) + +module U = Unix + +let file_exists name = + try + U.access name [U.F_OK] ; + true + with U.Unix_error _ -> false + + +(* Forked processes will not start from 0 but this is inessential. *) +let tmp_counter = ref 0 + +let mktemp base = + let pid = U.getpid () in + let rec aux () = + let name = Printf.sprintf "%s.%d.%08d.tmp" base pid !tmp_counter in + incr tmp_counter ; + if + file_exists name + (* This should not happen unless the file is very old and the pid is reused. *) + then aux () + else name + in + aux () + + +let buffer_size = 8192 + +let tee ic ocs = + let buffer = Bytes.create buffer_size in + let rec loop () = + match input ic buffer 0 buffer_size with + | 0 -> + () + | r -> + List.iter (fun oc -> output oc buffer 0 r) ocs ; + loop () + in + loop () + + +let gzip ic oc = + let ocz = Gzip.open_out_chan oc in + let buffer = Bytes.create buffer_size in + let rec loop () = + match input ic buffer 0 buffer_size with 0 -> () | r -> Gzip.output ocz buffer 0 r ; loop () + in + let success = try loop () ; true with Gzip.Error _ -> false in + Gzip.close_out ocz ; success + + +let gunzip ic oc = + let icz = Gzip.open_in_chan ic in + let buffer = Bytes.create buffer_size in + let rec loop () = + match Gzip.input icz buffer 0 buffer_size with 0 -> () | r -> output oc buffer 0 r ; loop () + in + let success = try loop () ; true with Gzip.Error _ -> false in + Gzip.close_in icz ; success + + +let copy ic oc = tee ic [oc] + +let rec restart_on_EINTR f x = try f x with U.Unix_error (U.EINTR, _, _) -> restart_on_EINTR f x + +let close fd = try U.close fd with U.Unix_error _ -> () + +let close_in = close_in_noerr + +let close_out = close_out_noerr + +let wait pid = + match snd (restart_on_EINTR (U.waitpid []) pid) with U.WEXITED 0 -> true | _ -> false + + +let exec args stdin stdout stderr = + wait + (U.create_process args.(0) args (U.descr_of_in_channel stdin) (U.descr_of_out_channel stdout) + (U.descr_of_out_channel stderr)) + + +let diff file1 file2 oc = exec [|"diff"; file1; file2|] stdin oc stderr + +let fork f = + let fd_in, fd_out = U.pipe () in + match U.fork () with + | 0 + -> ( + U.close fd_in ; + try if f (U.out_channel_of_descr fd_out) then exit 0 else ( close fd_out ; exit 1 ) + with _ -> close fd_out ; exit 2 ) + | pid -> + if pid < 0 then failwith "fork error" + else ( U.close fd_out ; (pid, U.in_channel_of_descr fd_in) ) + + +let compose f g ic oc = + let pid, ic1 = fork (f ic) in + let r1 = g ic1 oc in + let r2 = wait pid in + close_in ic1 ; r1 && r2 + + +let diff_on_same_input f1 f2 ic oc = + let file = mktemp "input" in + let ofile = open_out file in + copy ic ofile ; + close_out ofile ; + let ifile1 = open_in file and ifile2 = open_in file in + let file1 = mktemp "output1" and file2 = mktemp "output2" in + let ofile1 = open_out file1 and ofile2 = open_out file2 in + let r1 = f1 ifile1 ofile1 and r2 = f2 ifile2 ofile2 in + close_in ifile1 ; + close_in ifile2 ; + close_out ofile1 ; + close_out ofile2 ; + let success = if r1 && r2 then diff file1 file2 oc else false in + U.unlink file ; U.unlink file1 ; U.unlink file2 ; success diff --git a/facebook-clang-plugins/clang-ocaml/process.mli b/facebook-clang-plugins/clang-ocaml/process.mli new file mode 100644 index 000000000..cc981839a --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/process.mli @@ -0,0 +1,38 @@ +(* + * Copyright (c) 2014-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. + *) + +val file_exists : string -> bool + +val mktemp : string -> string + +val wait : int -> bool + +val exec : string array -> in_channel -> out_channel -> out_channel -> bool + +val close_in : in_channel -> unit + +val close_out : out_channel -> unit + +val tee : in_channel -> out_channel list -> unit + +val copy : in_channel -> out_channel -> unit + +val diff : string -> string -> out_channel -> bool + +val gzip : in_channel -> out_channel -> bool + +val gunzip : in_channel -> out_channel -> bool + +val fork : (out_channel -> bool) -> int * in_channel + +val compose : + (in_channel -> out_channel -> bool) -> (in_channel -> out_channel -> bool) -> in_channel + -> out_channel -> bool + +val diff_on_same_input : + (in_channel -> out_channel -> bool) -> (in_channel -> out_channel -> bool) -> in_channel + -> out_channel -> bool diff --git a/facebook-clang-plugins/clang-ocaml/process_test.ml b/facebook-clang-plugins/clang-ocaml/process_test.ml new file mode 100644 index 000000000..bc5dd0a1c --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/process_test.ml @@ -0,0 +1,19 @@ +(* + * Copyright (c) 2014-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. + *) + +open Process + +let main = + let pid, ic = + fork (fun oc -> + output_string oc "This is a test\n" ; + true ) + in + let zipunzip = compose gzip gunzip in + ignore (diff_on_same_input (fun ic oc -> copy ic oc ; flush_all () ; true) zipunzip ic stderr) ; + close_in ic ; + ignore (wait pid) diff --git a/facebook-clang-plugins/clang-ocaml/tests/clang_ast_converter.exp b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_converter.exp new file mode 100644 index 000000000..e69de29bb diff --git a/facebook-clang-plugins/clang-ocaml/tests/clang_ast_main_test.exp b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_main_test.exp new file mode 100644 index 000000000..fc07dbca7 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_main_test.exp @@ -0,0 +1,1752 @@ +9 0 75 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + FunctionDecl tests/c_attributes.c:7:1 tests/c_attributes.c:7:60 + ParmVarDecl tests/c_attributes.c:7:18 tests/c_attributes.c:7:22 + TypedefDecl tests/c_attributes.c:7:22 tests/c_attributes.c:7:22 +16 9 84 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/bind_temporary.cpp:7:1 tests/bind_temporary.cpp:11:1 + CXXRecordDecl tests/bind_temporary.cpp:7:1 tests/bind_temporary.cpp:7:8 + AccessSpecDecl tests/bind_temporary.cpp:8:2 tests/bind_temporary.cpp:8:8 + CXXConstructorDecl tests/bind_temporary.cpp:9:3 tests/bind_temporary.cpp:9:8 + CompoundStmt + CXXDestructorDecl tests/bind_temporary.cpp:10:3 tests/bind_temporary.cpp:10:9 + CompoundStmt + CXXConstructorDecl tests/bind_temporary.cpp:7:8 tests/bind_temporary.cpp:7:8 + ParmVarDecl tests/bind_temporary.cpp:7:8 tests/bind_temporary.cpp:7:8 + FunctionDecl tests/bind_temporary.cpp:12:1 tests/bind_temporary.cpp:14:1 + CompoundStmt + DeclStmt + ExprWithCleanups + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CXXTemporaryObjectExpr + VarDecl tests/bind_temporary.cpp:13:3 tests/bind_temporary.cpp:13:22 + ExprWithCleanups + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CXXTemporaryObjectExpr + TypedefDecl tests/bind_temporary.cpp:13:22 tests/bind_temporary.cpp:13:22 +10 9 76 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + VarDecl tests/c_cast.cpp:7:1 tests/c_cast.cpp:7:9 + IntegerLiteral + VarDecl tests/c_cast.cpp:8:1 tests/c_cast.cpp:8:16 + CStyleCastExpr + ImplicitCastExpr + ImplicitCastExpr + DeclRefExpr + VarDecl tests/c_cast.cpp:9:1 tests/c_cast.cpp:9:16 + CXXFunctionalCastExpr + ImplicitCastExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/c_cast.cpp:9:15 tests/c_cast.cpp:9:15 +15 9 83 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/const_cast.cpp:7:1 tests/const_cast.cpp:10:1 + CXXRecordDecl tests/const_cast.cpp:7:1 tests/const_cast.cpp:7:7 + AccessSpecDecl tests/const_cast.cpp:8:2 tests/const_cast.cpp:8:8 + CXXMethodDecl tests/const_cast.cpp:9:3 tests/const_cast.cpp:9:16 + CompoundStmt + FunctionDecl tests/const_cast.cpp:12:1 tests/const_cast.cpp:15:1 + ParmVarDecl tests/const_cast.cpp:12:19 tests/const_cast.cpp:12:30 + CompoundStmt + DeclStmt + CXXConstCastExpr + DeclRefExpr + VarDecl tests/const_cast.cpp:13:3 tests/const_cast.cpp:13:34 + CXXConstCastExpr + DeclRefExpr + CXXMemberCallExpr + MemberExpr + DeclRefExpr + VarDecl tests/const_cast.cpp:17:1 tests/const_cast.cpp:17:19 + IntegerLiteral + TypedefDecl tests/const_cast.cpp:17:19 tests/const_cast.cpp:17:19 +44 40 111 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/dynamic_cast.cpp:7:1 tests/dynamic_cast.cpp:9:1 + CXXRecordDecl tests/dynamic_cast.cpp:7:1 tests/dynamic_cast.cpp:7:8 + CXXMethodDecl tests/dynamic_cast.cpp:8:3 tests/dynamic_cast.cpp:8:21 + CompoundStmt + CXXMethodDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + ParmVarDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + CXXMethodDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + ParmVarDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + CXXDestructorDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + CXXConstructorDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + CompoundStmt + CXXConstructorDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + ParmVarDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + CXXConstructorDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + ParmVarDecl tests/dynamic_cast.cpp:7:8 tests/dynamic_cast.cpp:7:8 + CXXRecordDecl tests/dynamic_cast.cpp:10:1 tests/dynamic_cast.cpp:10:22 + CXXRecordDecl tests/dynamic_cast.cpp:10:1 tests/dynamic_cast.cpp:10:8 + CXXMethodDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + ParmVarDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + CXXMethodDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + ParmVarDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + CXXDestructorDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + CXXConstructorDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + CompoundStmt + CXXConstructExpr + CXXConstructorDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + ParmVarDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + CXXConstructorDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + ParmVarDecl tests/dynamic_cast.cpp:10:8 tests/dynamic_cast.cpp:10:8 + CXXRecordDecl tests/dynamic_cast.cpp:11:1 tests/dynamic_cast.cpp:11:11 + CXXRecordDecl tests/dynamic_cast.cpp:11:1 tests/dynamic_cast.cpp:11:8 + FunctionDecl tests/dynamic_cast.cpp:13:1 tests/dynamic_cast.cpp:25:1 + CompoundStmt + DeclStmt + CXXConstructExpr + VarDecl tests/dynamic_cast.cpp:14:3 tests/dynamic_cast.cpp:14:5 + CXXConstructExpr + DeclStmt + CXXConstructExpr + VarDecl tests/dynamic_cast.cpp:15:3 tests/dynamic_cast.cpp:15:5 + CXXConstructExpr + DeclStmt + ImplicitCastExpr + UnaryOperator + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:17:3 tests/dynamic_cast.cpp:17:12 + ImplicitCastExpr + UnaryOperator + DeclRefExpr + DeclStmt + CXXDynamicCastExpr + UnaryOperator + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:18:3 tests/dynamic_cast.cpp:18:31 + CXXDynamicCastExpr + UnaryOperator + DeclRefExpr + DeclStmt + CXXDynamicCastExpr + ImplicitCastExpr + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:19:3 tests/dynamic_cast.cpp:19:31 + CXXDynamicCastExpr + ImplicitCastExpr + DeclRefExpr + DeclStmt + CXXDynamicCastExpr + ImplicitCastExpr + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:20:3 tests/dynamic_cast.cpp:20:30 + CXXDynamicCastExpr + ImplicitCastExpr + DeclRefExpr + DeclStmt + CXXDynamicCastExpr + UnaryOperator + ImplicitCastExpr + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:22:3 tests/dynamic_cast.cpp:22:32 + CXXDynamicCastExpr + UnaryOperator + ImplicitCastExpr + DeclRefExpr + DeclStmt + CXXDynamicCastExpr + UnaryOperator + ImplicitCastExpr + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:23:3 tests/dynamic_cast.cpp:23:32 + CXXDynamicCastExpr + UnaryOperator + ImplicitCastExpr + DeclRefExpr + DeclStmt + CXXDynamicCastExpr + UnaryOperator + ImplicitCastExpr + DeclRefExpr + VarDecl tests/dynamic_cast.cpp:24:3 tests/dynamic_cast.cpp:24:32 + CXXDynamicCastExpr + UnaryOperator + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/dynamic_cast.cpp:24:30 tests/dynamic_cast.cpp:24:30 +33 54 98 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/expr_with_cleanups.cpp:7:1 tests/expr_with_cleanups.cpp:13:1 + CXXRecordDecl tests/expr_with_cleanups.cpp:7:1 tests/expr_with_cleanups.cpp:7:7 + AccessSpecDecl tests/expr_with_cleanups.cpp:8:2 tests/expr_with_cleanups.cpp:8:8 + CXXConstructorDecl tests/expr_with_cleanups.cpp:9:3 tests/expr_with_cleanups.cpp:9:8 + ParmVarDecl tests/expr_with_cleanups.cpp:9:5 tests/expr_with_cleanups.cpp:9:5 + CXXConstructorDecl tests/expr_with_cleanups.cpp:10:3 tests/expr_with_cleanups.cpp:10:14 + ParmVarDecl tests/expr_with_cleanups.cpp:10:5 tests/expr_with_cleanups.cpp:10:13 + CXXMethodDecl tests/expr_with_cleanups.cpp:11:3 tests/expr_with_cleanups.cpp:11:25 + ParmVarDecl tests/expr_with_cleanups.cpp:11:16 tests/expr_with_cleanups.cpp:11:24 + CXXDestructorDecl tests/expr_with_cleanups.cpp:12:3 tests/expr_with_cleanups.cpp:12:6 + CXXRecordDecl tests/expr_with_cleanups.cpp:14:1 tests/expr_with_cleanups.cpp:18:1 + CXXRecordDecl tests/expr_with_cleanups.cpp:14:1 tests/expr_with_cleanups.cpp:14:7 + AccessSpecDecl tests/expr_with_cleanups.cpp:15:2 tests/expr_with_cleanups.cpp:15:8 + CXXConstructorDecl tests/expr_with_cleanups.cpp:16:3 tests/expr_with_cleanups.cpp:16:8 + ParmVarDecl tests/expr_with_cleanups.cpp:16:5 tests/expr_with_cleanups.cpp:16:5 + CXXDestructorDecl tests/expr_with_cleanups.cpp:17:3 tests/expr_with_cleanups.cpp:17:6 + CXXConstructorDecl tests/expr_with_cleanups.cpp:14:7 tests/expr_with_cleanups.cpp:14:7 + ParmVarDecl tests/expr_with_cleanups.cpp:14:7 tests/expr_with_cleanups.cpp:14:7 + CompoundStmt + FunctionDecl tests/expr_with_cleanups.cpp:19:1 tests/expr_with_cleanups.cpp:19:6 + ParmVarDecl tests/expr_with_cleanups.cpp:19:5 tests/expr_with_cleanups.cpp:19:5 + FunctionDecl tests/expr_with_cleanups.cpp:20:1 tests/expr_with_cleanups.cpp:20:6 + ParmVarDecl tests/expr_with_cleanups.cpp:20:5 tests/expr_with_cleanups.cpp:20:5 + FunctionDecl tests/expr_with_cleanups.cpp:21:1 tests/expr_with_cleanups.cpp:26:1 + CompoundStmt + DeclStmt + CXXConstructExpr + IntegerLiteral + VarDecl tests/expr_with_cleanups.cpp:22:3 tests/expr_with_cleanups.cpp:22:8 + CXXConstructExpr + IntegerLiteral + DeclStmt + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + CXXBindTemporaryExpr + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXFunctionalCastExpr + CXXBindTemporaryExpr + CXXConstructExpr + IntegerLiteral + VarDecl tests/expr_with_cleanups.cpp:23:3 tests/expr_with_cleanups.cpp:23:15 + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + CXXBindTemporaryExpr + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXFunctionalCastExpr + CXXBindTemporaryExpr + CXXConstructExpr + IntegerLiteral + DeclStmt + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + CXXBindTemporaryExpr + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXFunctionalCastExpr + CXXBindTemporaryExpr + CXXConstructExpr + IntegerLiteral + VarDecl tests/expr_with_cleanups.cpp:24:3 tests/expr_with_cleanups.cpp:24:15 + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + CXXBindTemporaryExpr + CXXConstructExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXFunctionalCastExpr + CXXBindTemporaryExpr + CXXConstructExpr + IntegerLiteral + ExprWithCleanups + CXXOperatorCallExpr + ImplicitCastExpr + DeclRefExpr + DeclRefExpr + MaterializeTemporaryExpr + ImplicitCastExpr + CXXBindTemporaryExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + CXXBindTemporaryExpr + CXXConstructExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/expr_with_cleanups.cpp:25:9 tests/expr_with_cleanups.cpp:25:9 +41 57 104 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + FunctionDecl tests/inheritance.cpp:7:1 tests/inheritance.cpp:7:26 + ParmVarDecl tests/inheritance.cpp:7:20 tests/inheritance.cpp:7:20 + FunctionDecl tests/inheritance.cpp:8:1 tests/inheritance.cpp:8:33 + ParmVarDecl tests/inheritance.cpp:8:19 tests/inheritance.cpp:8:19 + ParmVarDecl tests/inheritance.cpp:8:27 tests/inheritance.cpp:8:27 + CXXRecordDecl tests/inheritance.cpp:10:1 tests/inheritance.cpp:21:1 + CXXRecordDecl tests/inheritance.cpp:10:1 tests/inheritance.cpp:10:7 + AccessSpecDecl tests/inheritance.cpp:11:2 tests/inheritance.cpp:11:9 + FieldDecl tests/inheritance.cpp:12:3 tests/inheritance.cpp:12:10 + AccessSpecDecl tests/inheritance.cpp:14:2 tests/inheritance.cpp:14:8 + FieldDecl tests/inheritance.cpp:15:3 tests/inheritance.cpp:15:7 + CXXMethodDecl tests/inheritance.cpp:16:3 tests/inheritance.cpp:16:27 + CompoundStmt + CXXMethodDecl tests/inheritance.cpp:18:3 tests/inheritance.cpp:18:41 + CompoundStmt + ReturnStmt + ImplicitCastExpr + MemberExpr + CXXThisExpr + CXXMethodDecl tests/inheritance.cpp:20:3 tests/inheritance.cpp:20:50 + ParmVarDecl tests/inheritance.cpp:20:16 tests/inheritance.cpp:20:23 + CompoundStmt + BinaryOperator + MemberExpr + CXXThisExpr + ImplicitCastExpr + DeclRefExpr + CXXMethodDecl tests/inheritance.cpp:10:7 tests/inheritance.cpp:10:7 + ParmVarDecl tests/inheritance.cpp:10:7 tests/inheritance.cpp:10:7 + CXXMethodDecl tests/inheritance.cpp:10:7 tests/inheritance.cpp:10:7 + ParmVarDecl tests/inheritance.cpp:10:7 tests/inheritance.cpp:10:7 + CXXDestructorDecl tests/inheritance.cpp:10:7 tests/inheritance.cpp:10:7 + CXXRecordDecl tests/inheritance.cpp:23:1 tests/inheritance.cpp:35:1 + CXXRecordDecl tests/inheritance.cpp:23:1 tests/inheritance.cpp:23:7 + AccessSpecDecl tests/inheritance.cpp:24:2 tests/inheritance.cpp:24:8 + CXXMethodDecl tests/inheritance.cpp:25:3 tests/inheritance.cpp:25:28 + CompoundStmt + CXXMethodDecl tests/inheritance.cpp:26:3 tests/inheritance.cpp:30:3 + CompoundStmt + DeclStmt + VarDecl tests/inheritance.cpp:27:5 tests/inheritance.cpp:27:12 + BinaryOperator + DeclRefExpr + CXXMemberCallExpr + MemberExpr + ImplicitCastExpr + CXXThisExpr + ReturnStmt + CallExpr + ImplicitCastExpr + DeclRefExpr + BinaryOperator + BinaryOperator + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + IntegerLiteral + FloatingLiteral + CXXMethodDecl tests/inheritance.cpp:32:3 tests/inheritance.cpp:32:76 + ParmVarDecl tests/inheritance.cpp:32:17 tests/inheritance.cpp:32:24 + CompoundStmt + CXXMemberCallExpr + MemberExpr + ImplicitCastExpr + CXXThisExpr + BinaryOperator + CallExpr + ImplicitCastExpr + DeclRefExpr + BinaryOperator + ImplicitCastExpr + DeclRefExpr + FloatingLiteral + ImplicitCastExpr + IntegerLiteral + FloatingLiteral + CXXMethodDecl tests/inheritance.cpp:34:3 tests/inheritance.cpp:34:40 + CompoundStmt + ReturnStmt + ParenExpr + BinaryOperator + ImplicitCastExpr + MemberExpr + ImplicitCastExpr + CXXThisExpr + IntegerLiteral + CXXMethodDecl tests/inheritance.cpp:23:7 tests/inheritance.cpp:23:7 + ParmVarDecl tests/inheritance.cpp:23:7 tests/inheritance.cpp:23:7 + CXXMethodDecl tests/inheritance.cpp:23:7 tests/inheritance.cpp:23:7 + ParmVarDecl tests/inheritance.cpp:23:7 tests/inheritance.cpp:23:7 + CXXDestructorDecl tests/inheritance.cpp:23:7 tests/inheritance.cpp:23:7 + TypedefDecl tests/inheritance.cpp:23:7 tests/inheritance.cpp:23:7 +41 48 131 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + FunctionDecl tests/lambda.cpp:7:1 tests/lambda.cpp:17:1 + CompoundStmt + DeclStmt + VarDecl tests/lambda.cpp:8:3 tests/lambda.cpp:8:7 + VarDecl tests/lambda.cpp:8:3 tests/lambda.cpp:8:10 + DeclStmt + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + LambdaExpr + CompoundStmt + ReturnStmt + IntegerLiteral + CXXRecordDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CXXMethodDecl tests/lambda.cpp:10:15 tests/lambda.cpp:10:29 + CompoundStmt + ReturnStmt + IntegerLiteral + CXXConversionDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:29 + CXXMethodDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:29 + CXXDestructorDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CXXConstructorDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + ParmVarDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CXXConstructorDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + ParmVarDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CompoundStmt + VarDecl tests/lambda.cpp:10:3 tests/lambda.cpp:10:29 + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + LambdaExpr + CompoundStmt + ReturnStmt + IntegerLiteral + CXXRecordDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CXXMethodDecl tests/lambda.cpp:10:15 tests/lambda.cpp:10:29 + CompoundStmt + ReturnStmt + IntegerLiteral + CXXConversionDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:29 + CXXMethodDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:29 + CXXDestructorDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CXXConstructorDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + ParmVarDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CXXConstructorDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + ParmVarDecl tests/lambda.cpp:10:12 tests/lambda.cpp:10:12 + CompoundStmt + DeclStmt + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + LambdaExpr + DeclRefExpr + ImplicitCastExpr + DeclRefExpr + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + CXXRecordDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CXXMethodDecl tests/lambda.cpp:12:27 tests/lambda.cpp:12:41 + ParmVarDecl tests/lambda.cpp:12:22 tests/lambda.cpp:12:26 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FieldDecl tests/lambda.cpp:12:16 tests/lambda.cpp:12:16 + FieldDecl tests/lambda.cpp:12:19 tests/lambda.cpp:12:19 + CXXDestructorDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CXXConstructorDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + ParmVarDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CXXConstructorDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + ParmVarDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CompoundStmt + MemberExpr + CXXStaticCastExpr + DeclRefExpr + ImplicitCastExpr + MemberExpr + CXXStaticCastExpr + DeclRefExpr + VarDecl tests/lambda.cpp:12:3 tests/lambda.cpp:12:41 + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + LambdaExpr + DeclRefExpr + ImplicitCastExpr + DeclRefExpr + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + CXXRecordDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CXXMethodDecl tests/lambda.cpp:12:27 tests/lambda.cpp:12:41 + ParmVarDecl tests/lambda.cpp:12:22 tests/lambda.cpp:12:26 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FieldDecl tests/lambda.cpp:12:16 tests/lambda.cpp:12:16 + FieldDecl tests/lambda.cpp:12:19 tests/lambda.cpp:12:19 + CXXDestructorDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CXXConstructorDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + ParmVarDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CXXConstructorDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + ParmVarDecl tests/lambda.cpp:12:14 tests/lambda.cpp:12:14 + CompoundStmt + MemberExpr + CXXStaticCastExpr + DeclRefExpr + ImplicitCastExpr + MemberExpr + CXXStaticCastExpr + DeclRefExpr + DeclStmt + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + LambdaExpr + IntegerLiteral + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + CXXRecordDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CXXMethodDecl tests/lambda.cpp:14:31 tests/lambda.cpp:14:45 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FieldDecl tests/lambda.cpp:14:24 tests/lambda.cpp:14:24 + CXXDestructorDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CXXConstructorDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + ParmVarDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CXXConstructorDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + ParmVarDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CompoundStmt + ImplicitCastExpr + MemberExpr + CXXStaticCastExpr + DeclRefExpr + VarDecl tests/lambda.cpp:14:24 tests/lambda.cpp:14:28 + IntegerLiteral + VarDecl tests/lambda.cpp:14:3 tests/lambda.cpp:14:45 + ExprWithCleanups + CXXConstructExpr + MaterializeTemporaryExpr + LambdaExpr + IntegerLiteral + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + CXXRecordDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CXXMethodDecl tests/lambda.cpp:14:31 tests/lambda.cpp:14:45 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FieldDecl tests/lambda.cpp:14:24 tests/lambda.cpp:14:24 + CXXDestructorDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CXXConstructorDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + ParmVarDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CXXConstructorDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + ParmVarDecl tests/lambda.cpp:14:23 tests/lambda.cpp:14:23 + CompoundStmt + ImplicitCastExpr + MemberExpr + CXXStaticCastExpr + DeclRefExpr + VarDecl tests/lambda.cpp:14:24 tests/lambda.cpp:14:28 + IntegerLiteral + ReturnStmt + IntegerLiteral + TypedefDecl tests/lambda.cpp:16:10 tests/lambda.cpp:16:10 +8 4 77 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + VarDecl tests/materialize_temporary.cpp:7:1 tests/materialize_temporary.cpp:7:16 + ExprWithCleanups + MaterializeTemporaryExpr + ImplicitCastExpr + FloatingLiteral + TypedefDecl tests/materialize_temporary.cpp:7:16 tests/materialize_temporary.cpp:7:16 +14 0 76 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + NamespaceDecl tests/namespace_decl.cpp:7:1 tests/namespace_decl.cpp:15:1 + NamespaceDecl tests/namespace_decl.cpp:8:1 tests/namespace_decl.cpp:9:1 + NamespaceDecl tests/namespace_decl.cpp:10:1 tests/namespace_decl.cpp:11:1 + NamespaceDecl tests/namespace_decl.cpp:12:1 tests/namespace_decl.cpp:14:1 + VarDecl tests/namespace_decl.cpp:13:1 tests/namespace_decl.cpp:13:5 + NamespaceDecl tests/namespace_decl.cpp:17:1 tests/namespace_decl.cpp:19:1 + UsingDirectiveDecl tests/namespace_decl.cpp:17:11 tests/namespace_decl.cpp:17:11 + TypedefDecl tests/namespace_decl.cpp:17:11 tests/namespace_decl.cpp:17:11 +58 98 139 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/new.cpp:7:1 tests/new.cpp:9:1 + CXXRecordDecl tests/new.cpp:7:1 tests/new.cpp:7:8 + FieldDecl tests/new.cpp:8:3 tests/new.cpp:8:7 + CXXConstructorDecl tests/new.cpp:7:8 tests/new.cpp:7:8 + CompoundStmt + CXXConstructorDecl tests/new.cpp:7:8 tests/new.cpp:7:8 + ParmVarDecl tests/new.cpp:7:8 tests/new.cpp:7:8 + CXXConstructorDecl tests/new.cpp:7:8 tests/new.cpp:7:8 + ParmVarDecl tests/new.cpp:7:8 tests/new.cpp:7:8 + CXXDestructorDecl tests/new.cpp:7:8 tests/new.cpp:7:8 + CXXRecordDecl tests/new.cpp:11:1 tests/new.cpp:17:1 + CXXRecordDecl tests/new.cpp:11:1 tests/new.cpp:11:8 + FieldDecl tests/new.cpp:12:3 tests/new.cpp:12:7 + FieldDecl tests/new.cpp:13:3 tests/new.cpp:13:7 + FieldDecl tests/new.cpp:14:3 tests/new.cpp:14:7 + CXXConstructorDecl tests/new.cpp:15:3 tests/new.cpp:15:28 + CompoundStmt + IntegerLiteral + IntegerLiteral + CXXConstructExpr + CXXConstructorDecl tests/new.cpp:16:3 tests/new.cpp:16:39 + ParmVarDecl tests/new.cpp:16:11 tests/new.cpp:16:15 + ParmVarDecl tests/new.cpp:16:18 tests/new.cpp:16:22 + CompoundStmt + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + DeclRefExpr + CXXConstructExpr + CXXConstructorDecl tests/new.cpp:11:8 tests/new.cpp:11:8 + ParmVarDecl tests/new.cpp:11:8 tests/new.cpp:11:8 + CXXConstructorDecl tests/new.cpp:11:8 tests/new.cpp:11:8 + ParmVarDecl tests/new.cpp:11:8 tests/new.cpp:11:8 + CXXDestructorDecl tests/new.cpp:11:8 tests/new.cpp:11:8 + FunctionDecl tests/new.cpp:19:1 tests/new.cpp:35:1 + CompoundStmt + DeclStmt + CXXNewExpr + IntegerLiteral + VarDecl tests/new.cpp:20:3 tests/new.cpp:20:22 + CXXNewExpr + IntegerLiteral + DeclStmt + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + VarDecl tests/new.cpp:21:3 tests/new.cpp:21:25 + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + DeclStmt + CXXNewExpr + CXXConstructExpr + VarDecl tests/new.cpp:23:3 tests/new.cpp:23:17 + CXXNewExpr + CXXConstructExpr + DeclStmt + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + CXXConstructExpr + VarDecl tests/new.cpp:24:3 tests/new.cpp:24:25 + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + CXXConstructExpr + DeclStmt + CXXNewExpr + CXXConstructExpr + IntegerLiteral + IntegerLiteral + VarDecl tests/new.cpp:26:3 tests/new.cpp:26:29 + CXXNewExpr + CXXConstructExpr + IntegerLiteral + IntegerLiteral + DeclStmt + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + CXXConstructExpr + VarDecl tests/new.cpp:27:3 tests/new.cpp:27:29 + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + CXXConstructExpr + CXXDeleteExpr + ImplicitCastExpr + DeclRefExpr + CXXDeleteExpr + ImplicitCastExpr + DeclRefExpr + CXXDeleteExpr + ImplicitCastExpr + DeclRefExpr + CXXDeleteExpr + ImplicitCastExpr + DeclRefExpr + CXXDeleteExpr + ImplicitCastExpr + DeclRefExpr + CXXDeleteExpr + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + ParmVarDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + FunctionDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + ParmVarDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + FunctionDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + ParmVarDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + FunctionDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + ParmVarDecl tests/new.cpp:34:12 tests/new.cpp:34:12 + FunctionDecl tests/new.cpp:38:1 tests/new.cpp:43:1 + CompoundStmt + DeclStmt + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + InitListExpr + IntegerLiteral + IntegerLiteral + IntegerLiteral + VarDecl tests/new.cpp:39:3 tests/new.cpp:39:31 + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + InitListExpr + IntegerLiteral + IntegerLiteral + IntegerLiteral + DeclStmt + CXXNewExpr + CXXConstructExpr + IntegerLiteral + IntegerLiteral + VarDecl tests/new.cpp:40:3 tests/new.cpp:40:29 + CXXNewExpr + CXXConstructExpr + IntegerLiteral + IntegerLiteral + DeclStmt + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + InitListExpr + CXXConstructExpr + IntegerLiteral + IntegerLiteral + CXXConstructExpr + IntegerLiteral + IntegerLiteral + CXXConstructExpr + IntegerLiteral + IntegerLiteral + VarDecl tests/new.cpp:41:3 tests/new.cpp:41:52 + CXXNewExpr + ImplicitCastExpr + IntegerLiteral + InitListExpr + CXXConstructExpr + IntegerLiteral + IntegerLiteral + CXXConstructExpr + IntegerLiteral + IntegerLiteral + CXXConstructExpr + IntegerLiteral + IntegerLiteral + FunctionDecl tests/new.cpp:45:1 tests/new.cpp:47:1 + ParmVarDecl tests/new.cpp:45:20 tests/new.cpp:45:34 + ParmVarDecl tests/new.cpp:45:40 tests/new.cpp:45:46 + ParmVarDecl tests/new.cpp:45:51 tests/new.cpp:45:57 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + EmptyDecl tests/new.cpp:47:2 tests/new.cpp:47:2 + FunctionDecl tests/new.cpp:49:1 tests/new.cpp:52:1 + ParmVarDecl tests/new.cpp:49:21 tests/new.cpp:49:27 + CompoundStmt + DeclStmt + IntegerLiteral + VarDecl tests/new.cpp:50:3 tests/new.cpp:50:11 + IntegerLiteral + DeclStmt + CXXNewExpr + CXXConstructExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + UnaryOperator + DeclRefExpr + VarDecl tests/new.cpp:51:3 tests/new.cpp:51:27 + CXXNewExpr + CXXConstructExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + UnaryOperator + DeclRefExpr + TypedefDecl tests/new.cpp:51:24 tests/new.cpp:51:24 +28 10 89 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/struct.cpp:7:1 tests/struct.cpp:9:1 + CXXRecordDecl tests/struct.cpp:7:1 tests/struct.cpp:7:8 + FieldDecl tests/struct.cpp:8:3 tests/struct.cpp:8:10 + FieldDecl tests/struct.cpp:8:3 tests/struct.cpp:8:13 + FunctionDecl tests/struct.cpp:11:1 tests/struct.cpp:14:1 + CompoundStmt + DeclStmt + CXXRecordDecl tests/struct.cpp:12:3 tests/struct.cpp:12:13 + CXXRecordDecl tests/struct.cpp:12:3 tests/struct.cpp:12:10 + CXXConstructorDecl tests/struct.cpp:12:10 tests/struct.cpp:12:10 + CompoundStmt + CXXConstructorDecl tests/struct.cpp:12:10 tests/struct.cpp:12:10 + ParmVarDecl tests/struct.cpp:12:10 tests/struct.cpp:12:10 + CXXConstructorDecl tests/struct.cpp:12:10 tests/struct.cpp:12:10 + ParmVarDecl tests/struct.cpp:12:10 tests/struct.cpp:12:10 + DeclStmt + CXXConstructExpr + VarDecl tests/struct.cpp:13:3 tests/struct.cpp:13:5 + CXXConstructExpr + VarDecl tests/struct.cpp:16:1 tests/struct.cpp:16:24 + InitListExpr + FloatingLiteral + FloatingLiteral + CXXRecordDecl tests/struct.cpp:18:1 tests/struct.cpp:20:1 + CXXRecordDecl tests/struct.cpp:18:1 tests/struct.cpp:18:8 + VarDecl tests/struct.cpp:19:3 tests/struct.cpp:19:14 + VarDecl tests/struct.cpp:22:1 tests/struct.cpp:22:12 + IntegerLiteral + CXXRecordDecl tests/struct.cpp:24:1 tests/struct.cpp:26:1 + CXXRecordDecl tests/struct.cpp:24:1 tests/struct.cpp:24:8 + VarDecl tests/struct.cpp:25:3 tests/struct.cpp:25:24 + IntegerLiteral + TypedefDecl tests/struct.cpp:25:24 tests/struct.cpp:25:24 +11 5 79 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/this.cpp:7:1 tests/this.cpp:10:1 + CXXRecordDecl tests/this.cpp:7:1 tests/this.cpp:7:7 + FieldDecl tests/this.cpp:8:3 tests/this.cpp:8:7 + CXXMethodDecl tests/this.cpp:9:3 tests/this.cpp:9:31 + CompoundStmt + BinaryOperator + MemberExpr + CXXThisExpr + IntegerLiteral + TypedefDecl tests/this.cpp:9:28 tests/this.cpp:9:28 +8 0 89 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + ClassTemplateDecl tests/unresolved_lookup.cpp:7:1 tests/unresolved_lookup.cpp:12:1 + TypedefDecl tests/unresolved_lookup.cpp:12:1 tests/unresolved_lookup.cpp:12:1 +13 2 76 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + NamespaceDecl tests/using_directive.cpp:7:1 tests/using_directive.cpp:11:1 + NamespaceDecl tests/using_directive.cpp:8:1 tests/using_directive.cpp:10:1 + VarDecl tests/using_directive.cpp:9:1 tests/using_directive.cpp:9:5 + UsingDirectiveDecl tests/using_directive.cpp:12:1 tests/using_directive.cpp:12:22 + NamespaceAliasDecl tests/using_directive.cpp:13:1 tests/using_directive.cpp:13:20 + VarDecl tests/using_directive.cpp:14:1 tests/using_directive.cpp:14:9 + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/using_directive.cpp:14:9 tests/using_directive.cpp:14:9 +36 23 125 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + NamespaceDecl tests/class_template.cpp:7:1 tests/class_template.cpp:27:1 + ClassTemplateDecl tests/class_template.cpp:8:1 tests/class_template.cpp:11:1 + ClassTemplateSpecializationDecl tests/class_template.cpp:13:1 tests/class_template.cpp:16:1 + CXXRecordDecl tests/class_template.cpp:14:1 tests/class_template.cpp:14:8 + FieldDecl tests/class_template.cpp:15:3 tests/class_template.cpp:15:5 + CXXConstructorDecl tests/class_template.cpp:14:8 tests/class_template.cpp:14:8 + CompoundStmt + CXXConstructExpr + CXXConstructorDecl tests/class_template.cpp:14:8 tests/class_template.cpp:14:8 + ParmVarDecl tests/class_template.cpp:14:8 tests/class_template.cpp:14:8 + CXXConstructorDecl tests/class_template.cpp:14:8 tests/class_template.cpp:14:8 + ParmVarDecl tests/class_template.cpp:14:8 tests/class_template.cpp:14:8 + ClassTemplatePartialSpecializationDecl tests/class_template.cpp:13:1 tests/class_template.cpp:16:1 + CXXRecordDecl tests/class_template.cpp:14:1 tests/class_template.cpp:14:8 + FieldDecl tests/class_template.cpp:15:3 tests/class_template.cpp:15:5 + ClassTemplateSpecializationDecl tests/class_template.cpp:18:1 tests/class_template.cpp:21:1 + CXXRecordDecl tests/class_template.cpp:19:1 tests/class_template.cpp:19:8 + FieldDecl tests/class_template.cpp:20:3 tests/class_template.cpp:20:7 + CXXConstructorDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + CompoundStmt + CXXDestructorDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + CXXConstructorDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + ParmVarDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + CXXConstructorDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + ParmVarDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + CXXMethodDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + ParmVarDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + CompoundStmt + BinaryOperator + MemberExpr + CXXThisExpr + ImplicitCastExpr + MemberExpr + DeclRefExpr + ReturnStmt + UnaryOperator + CXXThisExpr + CXXMethodDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + ParmVarDecl tests/class_template.cpp:19:8 tests/class_template.cpp:19:8 + FunctionDecl tests/class_template.cpp:23:1 tests/class_template.cpp:26:1 + ParmVarDecl tests/class_template.cpp:23:11 tests/class_template.cpp:23:18 + CompoundStmt + DeclStmt + CXXConstructExpr + VarDecl tests/class_template.cpp:24:3 tests/class_template.cpp:24:15 + CXXConstructExpr + CXXOperatorCallExpr + ImplicitCastExpr + DeclRefExpr + MemberExpr + DeclRefExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/class_template.cpp:25:15 tests/class_template.cpp:25:15 +19 35 97 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + FunctionTemplateDecl tests/function_template.cpp:8:1 tests/function_template.cpp:11:1 + FunctionDecl tests/function_template.cpp:9:1 tests/function_template.cpp:11:1 + ParmVarDecl tests/function_template.cpp:9:7 tests/function_template.cpp:9:9 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/function_template.cpp:9:1 tests/function_template.cpp:11:1 + ParmVarDecl tests/function_template.cpp:9:7 tests/function_template.cpp:9:9 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/function_template.cpp:9:1 tests/function_template.cpp:11:1 + ParmVarDecl tests/function_template.cpp:9:7 tests/function_template.cpp:9:9 + CompoundStmt + ReturnStmt + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/function_template.cpp:14:1 tests/function_template.cpp:17:1 + ParmVarDecl tests/function_template.cpp:15:9 tests/function_template.cpp:15:13 + CompoundStmt + ReturnStmt + BinaryOperator + IntegerLiteral + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/function_template.cpp:22:1 tests/function_template.cpp:27:1 + CompoundStmt + DeclStmt + VarDecl tests/function_template.cpp:23:3 tests/function_template.cpp:23:8 + DeclStmt + VarDecl tests/function_template.cpp:24:3 tests/function_template.cpp:24:9 + BinaryOperator + DeclRefExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + DeclRefExpr + BinaryOperator + DeclRefExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/function_template.cpp:26:11 tests/function_template.cpp:26:11 +20 13 93 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + CXXRecordDecl tests/type_trait.cpp:8:1 tests/type_trait.cpp:10:1 + CXXRecordDecl tests/type_trait.cpp:8:1 tests/type_trait.cpp:8:8 + CXXMethodDecl tests/type_trait.cpp:9:3 tests/type_trait.cpp:9:21 + CompoundStmt + CXXMethodDecl tests/type_trait.cpp:8:8 tests/type_trait.cpp:8:8 + ParmVarDecl tests/type_trait.cpp:8:8 tests/type_trait.cpp:8:8 + CXXMethodDecl tests/type_trait.cpp:8:8 tests/type_trait.cpp:8:8 + ParmVarDecl tests/type_trait.cpp:8:8 tests/type_trait.cpp:8:8 + CXXDestructorDecl tests/type_trait.cpp:8:8 tests/type_trait.cpp:8:8 + FunctionTemplateDecl tests/type_trait.cpp:12:1 tests/type_trait.cpp:15:1 + FunctionDecl tests/type_trait.cpp:13:1 tests/type_trait.cpp:15:1 + CompoundStmt + ReturnStmt + TypeTraitExpr + FunctionDecl tests/type_trait.cpp:13:1 tests/type_trait.cpp:15:1 + CompoundStmt + ReturnStmt + TypeTraitExpr + VarDecl tests/type_trait.cpp:17:1 tests/type_trait.cpp:17:22 + CallExpr + ImplicitCastExpr + DeclRefExpr + VarDecl tests/type_trait.cpp:18:1 tests/type_trait.cpp:18:20 + CallExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/type_trait.cpp:18:18 tests/type_trait.cpp:18:18 +10 8 82 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + FunctionDecl tests/no_except_expr.cpp:7:1 tests/no_except_expr.cpp:7:27 + CompoundStmt + EmptyDecl tests/no_except_expr.cpp:7:28 tests/no_except_expr.cpp:7:28 + FunctionDecl tests/no_except_expr.cpp:9:1 tests/no_except_expr.cpp:9:43 + CompoundStmt + ReturnStmt + ImplicitCastExpr + CXXNoexceptExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/no_except_expr.cpp:9:30 tests/no_except_expr.cpp:9:30 +21 2 113 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + ClassTemplateDecl tests/friend.cpp:8:1 tests/friend.cpp:9:22 + ClassTemplateSpecializationDecl tests/friend.cpp:8:1 tests/friend.cpp:9:22 + ClassTemplateDecl tests/friend.cpp:11:1 tests/friend.cpp:16:1 + ClassTemplateSpecializationDecl tests/friend.cpp:11:1 tests/friend.cpp:16:1 + CXXRecordDecl tests/friend.cpp:12:1 tests/friend.cpp:12:8 + FriendDecl tests/friend.cpp:13:3 tests/friend.cpp:13:32 + FriendDecl tests/friend.cpp:14:3 tests/friend.cpp:15:16 + ClassTemplateDecl tests/friend.cpp:14:3 tests/friend.cpp:15:16 + CXXConstructorDecl tests/friend.cpp:12:8 tests/friend.cpp:12:8 + CompoundStmt + CXXConstructorDecl tests/friend.cpp:12:8 tests/friend.cpp:12:8 + ParmVarDecl tests/friend.cpp:12:8 tests/friend.cpp:12:8 + CXXConstructorDecl tests/friend.cpp:12:8 tests/friend.cpp:12:8 + ParmVarDecl tests/friend.cpp:12:8 tests/friend.cpp:12:8 + VarDecl tests/friend.cpp:18:1 tests/friend.cpp:18:8 + CXXConstructExpr + TypedefDecl tests/friend.cpp:18:8 tests/friend.cpp:18:8 +58 37 112 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + ObjCInterfaceDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl tests/FoundationStub.h:8:1 tests/FoundationStub.h:8:13 + TypedefDecl tests/FoundationStub.h:9:1 tests/FoundationStub.h:9:22 + ObjCInterfaceDecl tests/FoundationStub.h:16:1 tests/FoundationStub.h:27:2 + ObjCMethodDecl tests/FoundationStub.h:18:1 tests/FoundationStub.h:18:22 + ObjCMethodDecl tests/FoundationStub.h:19:1 tests/FoundationStub.h:19:20 + ObjCMethodDecl tests/FoundationStub.h:20:1 tests/FoundationStub.h:20:28 + ObjCMethodDecl tests/FoundationStub.h:21:1 tests/FoundationStub.h:21:21 + ObjCMethodDecl tests/FoundationStub.h:22:1 tests/FoundationStub.h:22:15 + ObjCMethodDecl tests/FoundationStub.h:24:1 tests/FoundationStub.h:24:34 + ParmVarDecl tests/FoundationStub.h:24:29 tests/FoundationStub.h:24:33 + ObjCMethodDecl tests/FoundationStub.h:25:1 tests/FoundationStub.h:25:41 + ParmVarDecl tests/FoundationStub.h:25:29 tests/FoundationStub.h:25:40 + ObjCInterfaceDecl tests/FoundationStub.h:29:1 tests/FoundationStub.h:31:2 + ObjCMethodDecl tests/FoundationStub.h:30:1 tests/FoundationStub.h:30:37 + ParmVarDecl tests/FoundationStub.h:30:32 tests/FoundationStub.h:30:36 + ObjCInterfaceDecl tests/FoundationStub.h:33:1 tests/FoundationStub.h:35:2 + ObjCMethodDecl tests/FoundationStub.h:34:1 tests/FoundationStub.h:34:21 + ObjCInterfaceDecl tests/FoundationStub.h:37:1 tests/FoundationStub.h:42:2 + ObjCMethodDecl tests/FoundationStub.h:38:1 tests/FoundationStub.h:40:56 + ParmVarDecl tests/FoundationStub.h:38:46 tests/FoundationStub.h:38:51 + ParmVarDecl tests/FoundationStub.h:39:46 tests/FoundationStub.h:39:51 + ParmVarDecl tests/FoundationStub.h:40:40 tests/FoundationStub.h:40:51 + ObjCMethodDecl tests/FoundationStub.h:41:1 tests/FoundationStub.h:41:38 + ParmVarDecl tests/FoundationStub.h:41:32 tests/FoundationStub.h:41:35 + ObjCInterfaceDecl tests/FoundationStub.h:44:1 tests/FoundationStub.h:47:2 + ObjCMethodDecl tests/FoundationStub.h:45:1 tests/FoundationStub.h:45:64 + ParmVarDecl tests/FoundationStub.h:45:35 tests/FoundationStub.h:45:40 + ParmVarDecl tests/FoundationStub.h:45:52 tests/FoundationStub.h:45:61 + ObjCMethodDecl tests/FoundationStub.h:46:1 tests/FoundationStub.h:46:49 + ParmVarDecl tests/FoundationStub.h:46:33 tests/FoundationStub.h:46:44 + ObjCInterfaceDecl tests/FoundationStub.h:49:1 tests/FoundationStub.h:50:2 + FunctionDecl tests/FoundationStub.h:52:13 tests/FoundationStub.h:52:13 + ParmVarDecl tests/FoundationStub.h:52:13 tests/FoundationStub.h:52:13 + FunctionDecl tests/FoundationStub.h:52:1 tests/FoundationStub.h:52:34 + ParmVarDecl tests/FoundationStub.h:52:19 tests/FoundationStub.h:52:28 + ObjCInterfaceDecl tests/Hello.m:10:1 tests/Hello.m:12:2 + ObjCMethodDecl tests/Hello.m:11:1 tests/Hello.m:11:19 + ParmVarDecl tests/Hello.m:11:14 tests/Hello.m:11:18 + ObjCImplementationDecl tests/Hello.m:14:1 tests/Hello.m:20:1 + ObjCMethodDecl tests/Hello.m:15:1 tests/Hello.m:19:1 + ParmVarDecl tests/Hello.m:15:14 tests/Hello.m:15:18 + ImplicitParamDecl tests/Hello.m:15:18 tests/Hello.m:15:18 + ImplicitParamDecl tests/Hello.m:15:18 tests/Hello.m:15:18 + CompoundStmt + IfStmt + BinaryOperator + ImplicitCastExpr + DeclRefExpr + IntegerLiteral + CompoundStmt + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/Hello.m:22:1 tests/Hello.m:29:1 + ParmVarDecl tests/Hello.m:22:10 tests/Hello.m:22:14 + ParmVarDecl tests/Hello.m:22:20 tests/Hello.m:22:31 + CompoundStmt + ForStmt + DeclStmt + IntegerLiteral + VarDecl tests/Hello.m:23:8 tests/Hello.m:23:16 + IntegerLiteral + NullStmt + BinaryOperator + ImplicitCastExpr + DeclRefExpr + IntegerLiteral + UnaryOperator + DeclRefExpr + CompoundStmt + ObjCAutoreleasePoolStmt + CompoundStmt + ExprWithCleanups + ObjCMessageExpr + ImplicitCastExpr + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + ReturnStmt + IntegerLiteral + TypedefDecl tests/Hello.m:28:10 tests/Hello.m:28:10 +132 193 139 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + ObjCInterfaceDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl tests/FoundationStub.h:8:1 tests/FoundationStub.h:8:13 + TypedefDecl tests/FoundationStub.h:9:1 tests/FoundationStub.h:9:22 + ObjCInterfaceDecl tests/FoundationStub.h:16:1 tests/FoundationStub.h:27:2 + ObjCMethodDecl tests/FoundationStub.h:18:1 tests/FoundationStub.h:18:22 + ObjCMethodDecl tests/FoundationStub.h:19:1 tests/FoundationStub.h:19:20 + ObjCMethodDecl tests/FoundationStub.h:20:1 tests/FoundationStub.h:20:28 + ObjCMethodDecl tests/FoundationStub.h:21:1 tests/FoundationStub.h:21:21 + ObjCMethodDecl tests/FoundationStub.h:22:1 tests/FoundationStub.h:22:15 + ObjCMethodDecl tests/FoundationStub.h:24:1 tests/FoundationStub.h:24:34 + ParmVarDecl tests/FoundationStub.h:24:29 tests/FoundationStub.h:24:33 + ObjCMethodDecl tests/FoundationStub.h:25:1 tests/FoundationStub.h:25:41 + ParmVarDecl tests/FoundationStub.h:25:29 tests/FoundationStub.h:25:40 + ObjCInterfaceDecl tests/FoundationStub.h:29:1 tests/FoundationStub.h:31:2 + ObjCMethodDecl tests/FoundationStub.h:30:1 tests/FoundationStub.h:30:37 + ParmVarDecl tests/FoundationStub.h:30:32 tests/FoundationStub.h:30:36 + ObjCInterfaceDecl tests/FoundationStub.h:33:1 tests/FoundationStub.h:35:2 + ObjCMethodDecl tests/FoundationStub.h:34:1 tests/FoundationStub.h:34:21 + ObjCInterfaceDecl tests/FoundationStub.h:37:1 tests/FoundationStub.h:42:2 + ObjCMethodDecl tests/FoundationStub.h:38:1 tests/FoundationStub.h:40:56 + ParmVarDecl tests/FoundationStub.h:38:46 tests/FoundationStub.h:38:51 + ParmVarDecl tests/FoundationStub.h:39:46 tests/FoundationStub.h:39:51 + ParmVarDecl tests/FoundationStub.h:40:40 tests/FoundationStub.h:40:51 + ObjCMethodDecl tests/FoundationStub.h:41:1 tests/FoundationStub.h:41:38 + ParmVarDecl tests/FoundationStub.h:41:32 tests/FoundationStub.h:41:35 + ObjCInterfaceDecl tests/FoundationStub.h:44:1 tests/FoundationStub.h:47:2 + ObjCMethodDecl tests/FoundationStub.h:45:1 tests/FoundationStub.h:45:64 + ParmVarDecl tests/FoundationStub.h:45:35 tests/FoundationStub.h:45:40 + ParmVarDecl tests/FoundationStub.h:45:52 tests/FoundationStub.h:45:61 + ObjCMethodDecl tests/FoundationStub.h:46:1 tests/FoundationStub.h:46:49 + ParmVarDecl tests/FoundationStub.h:46:33 tests/FoundationStub.h:46:44 + ObjCInterfaceDecl tests/FoundationStub.h:49:1 tests/FoundationStub.h:50:2 + FunctionDecl tests/FoundationStub.h:52:13 tests/FoundationStub.h:52:13 + ParmVarDecl tests/FoundationStub.h:52:13 tests/FoundationStub.h:52:13 + FunctionDecl tests/FoundationStub.h:52:1 tests/FoundationStub.h:52:34 + ParmVarDecl tests/FoundationStub.h:52:19 tests/FoundationStub.h:52:28 + ObjCProtocolDecl tests/ObjCTest.m:10:1 tests/ObjCTest.m:12:2 + ObjCPropertyDecl tests/ObjCTest.m:11:1 tests/ObjCTest.m:11:38 + ObjCMethodDecl tests/ObjCTest.m:11:38 tests/ObjCTest.m:11:38 + ObjCMethodDecl tests/ObjCTest.m:11:38 tests/ObjCTest.m:11:38 + ParmVarDecl tests/ObjCTest.m:11:38 tests/ObjCTest.m:11:38 + ObjCProtocolDecl tests/ObjCTest.m:14:1 tests/ObjCTest.m:14:11 + ObjCInterfaceDecl tests/ObjCTest.m:16:1 tests/ObjCTest.m:24:2 + ObjCPropertyDecl tests/ObjCTest.m:18:1 tests/ObjCTest.m:18:38 + ObjCPropertyDecl tests/ObjCTest.m:20:1 tests/ObjCTest.m:20:36 + ObjCPropertyDecl tests/ObjCTest.m:21:1 tests/ObjCTest.m:21:34 + ObjCPropertyDecl tests/ObjCTest.m:22:1 tests/ObjCTest.m:22:54 + ObjCMethodDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ImplicitParamDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ImplicitParamDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ObjCMethodDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ParmVarDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ImplicitParamDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ImplicitParamDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ObjCMethodDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ImplicitParamDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ImplicitParamDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ObjCMethodDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ParmVarDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ImplicitParamDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ImplicitParamDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ObjCMethodDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ImplicitParamDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ImplicitParamDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ObjCMethodDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ParmVarDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ImplicitParamDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ImplicitParamDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ObjCMethodDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ImplicitParamDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ImplicitParamDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ObjCMethodDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ParmVarDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ImplicitParamDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ImplicitParamDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ObjCCategoryDecl tests/ObjCTest.m:26:1 tests/ObjCTest.m:30:2 + ObjCMethodDecl tests/ObjCTest.m:28:1 tests/ObjCTest.m:28:35 + ParmVarDecl tests/ObjCTest.m:28:14 tests/ObjCTest.m:28:34 + ObjCImplementationDecl tests/ObjCTest.m:32:1 tests/ObjCTest.m:65:1 + ObjCMethodDecl tests/ObjCTest.m:34:1 tests/ObjCTest.m:63:1 + ParmVarDecl tests/ObjCTest.m:34:14 tests/ObjCTest.m:34:34 + ImplicitParamDecl tests/ObjCTest.m:34:34 tests/ObjCTest.m:34:34 + ImplicitParamDecl tests/ObjCTest.m:34:34 tests/ObjCTest.m:34:34 + CompoundStmt + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ImplicitCastExpr + ObjCEncodeExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + ObjCSelectorExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ObjCMessageExpr + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + ObjCProtocolExpr + DeclStmt + ExprWithCleanups + BlockExpr + BlockDecl tests/ObjCTest.m:42:38 tests/ObjCTest.m:45:3 + ParmVarDecl tests/ObjCTest.m:42:40 tests/ObjCTest.m:42:50 + CompoundStmt + PseudoObjectExpr + BinaryOperator + ObjCPropertyRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + OpaqueValueExpr + DeclRefExpr + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + OpaqueValueExpr + DeclRefExpr + ReturnStmt + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + VarDecl tests/ObjCTest.m:42:3 tests/ObjCTest.m:45:3 + ExprWithCleanups + BlockExpr + BlockDecl tests/ObjCTest.m:42:38 tests/ObjCTest.m:45:3 + ParmVarDecl tests/ObjCTest.m:42:40 tests/ObjCTest.m:42:50 + CompoundStmt + PseudoObjectExpr + BinaryOperator + ObjCPropertyRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + OpaqueValueExpr + DeclRefExpr + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + OpaqueValueExpr + DeclRefExpr + ReturnStmt + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + ObjCAtTryStmt + CompoundStmt + DeclStmt + ExprWithCleanups + ImplicitCastExpr + ObjCArrayLiteral + ImplicitCastExpr + ImplicitCastExpr + ObjCBoxedExpr + IntegerLiteral + VarDecl tests/ObjCTest.m:48:5 tests/ObjCTest.m:48:26 + ExprWithCleanups + ImplicitCastExpr + ObjCArrayLiteral + ImplicitCastExpr + ImplicitCastExpr + ObjCBoxedExpr + IntegerLiteral + ExprWithCleanups + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + PseudoObjectExpr + ObjCSubscriptRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + IntegerLiteral + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + IntegerLiteral + ImplicitCastExpr + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + OpaqueValueExpr + IntegerLiteral + DeclStmt + ExprWithCleanups + ImplicitCastExpr + ObjCDictionaryLiteral + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ImplicitCastExpr + ImplicitCastExpr + ObjCBoxedExpr + IntegerLiteral + VarDecl tests/ObjCTest.m:51:5 tests/ObjCTest.m:51:36 + ExprWithCleanups + ImplicitCastExpr + ObjCDictionaryLiteral + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ImplicitCastExpr + ImplicitCastExpr + ObjCBoxedExpr + IntegerLiteral + ExprWithCleanups + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + PseudoObjectExpr + ObjCSubscriptRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ObjCStringLiteral + StringLiteral + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ObjCStringLiteral + StringLiteral + ImplicitCastExpr + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + OpaqueValueExpr + ObjCStringLiteral + StringLiteral + ObjCAtCatchStmt + CompoundStmt + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ImplicitCastExpr + DeclRefExpr + VarDecl tests/ObjCTest.m:53:13 tests/ObjCTest.m:53:26 + ObjCAtFinallyStmt + CompoundStmt + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + GotoStmt + ReturnStmt + LabelStmt + CallExpr + ImplicitCastExpr + DeclRefExpr + ImplicitCastExpr + ObjCStringLiteral + StringLiteral + ObjCIvarDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ObjCPropertyImplDecl tests/ObjCTest.m:18:38 tests/ObjCTest.m:18:38 + ObjCIvarDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ObjCPropertyImplDecl tests/ObjCTest.m:20:36 tests/ObjCTest.m:20:36 + ObjCIvarDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ObjCPropertyImplDecl tests/ObjCTest.m:21:34 tests/ObjCTest.m:21:34 + ObjCIvarDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ObjCPropertyImplDecl tests/ObjCTest.m:22:54 tests/ObjCTest.m:22:54 + ObjCCategoryDecl tests/ObjCTest.m:67:1 tests/ObjCTest.m:71:2 + ObjCMethodDecl tests/ObjCTest.m:69:1 tests/ObjCTest.m:69:26 + ParmVarDecl tests/ObjCTest.m:69:14 tests/ObjCTest.m:69:25 + ObjCCategoryImplDecl tests/ObjCTest.m:73:1 tests/ObjCTest.m:81:1 + ObjCMethodDecl tests/ObjCTest.m:75:1 tests/ObjCTest.m:79:1 + ParmVarDecl tests/ObjCTest.m:75:14 tests/ObjCTest.m:75:25 + ImplicitParamDecl tests/ObjCTest.m:75:25 tests/ObjCTest.m:75:25 + ImplicitParamDecl tests/ObjCTest.m:75:25 tests/ObjCTest.m:75:25 + CompoundStmt + PseudoObjectExpr + BinaryOperator + ObjCPropertyRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + PseudoObjectExpr + BinaryOperator + ObjCPropertyRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + IntegerLiteral + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + IntegerLiteral + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + IntegerLiteral + PseudoObjectExpr + BinaryOperator + ObjCPropertyRefExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + OpaqueValueExpr + ImplicitCastExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + ObjCMessageExpr + OpaqueValueExpr + ImplicitCastExpr + DeclRefExpr + OpaqueValueExpr + ImplicitCastExpr + OpaqueValueExpr + ParenExpr + CStyleCastExpr + IntegerLiteral + ObjCInterfaceDecl tests/ObjCTest.m:83:1 tests/ObjCTest.m:85:2 + ObjCInterfaceDecl tests/ObjCTest.m:87:1 tests/ObjCTest.m:89:2 + ObjCMethodDecl tests/ObjCTest.m:88:1 tests/ObjCTest.m:88:60 + ParmVarDecl tests/ObjCTest.m:88:28 tests/ObjCTest.m:88:58 + ObjCInterfaceDecl tests/ObjCTest.m:91:1 tests/ObjCTest.m:92:2 + ObjCImplementationDecl tests/ObjCTest.m:94:1 tests/ObjCTest.m:104:1 + ObjCMethodDecl tests/ObjCTest.m:96:1 tests/ObjCTest.m:98:1 + ParmVarDecl tests/ObjCTest.m:96:14 tests/ObjCTest.m:96:25 + ImplicitParamDecl tests/ObjCTest.m:96:25 tests/ObjCTest.m:96:25 + ImplicitParamDecl tests/ObjCTest.m:96:25 tests/ObjCTest.m:96:25 + CompoundStmt + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + ObjCMethodDecl tests/ObjCTest.m:100:1 tests/ObjCTest.m:102:1 + ParmVarDecl tests/ObjCTest.m:100:14 tests/ObjCTest.m:100:34 + ImplicitParamDecl tests/ObjCTest.m:100:34 tests/ObjCTest.m:100:34 + ImplicitParamDecl tests/ObjCTest.m:100:34 tests/ObjCTest.m:100:34 + CompoundStmt + ObjCMessageExpr + ImplicitCastExpr + DeclRefExpr + FunctionDecl tests/ObjCTest.m:106:1 tests/ObjCTest.m:112:1 + ParmVarDecl tests/ObjCTest.m:106:10 tests/ObjCTest.m:106:14 + ParmVarDecl tests/ObjCTest.m:106:20 tests/ObjCTest.m:106:27 + CompoundStmt + ObjCAutoreleasePoolStmt + CompoundStmt + ExprWithCleanups + ObjCMessageExpr + ImplicitCastExpr + ObjCMessageExpr + ImplicitCastExpr + ObjCMessageExpr + ObjCStringLiteral + StringLiteral + ExprWithCleanups + ObjCMessageExpr + ImplicitCastExpr + ObjCMessageExpr + ObjCStringLiteral + StringLiteral + ReturnStmt + IntegerLiteral + TypedefDecl tests/ObjCTest.m:111:10 tests/ObjCTest.m:111:10 +56 8 115 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + ObjCInterfaceDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl tests/FoundationStub.h:8:1 tests/FoundationStub.h:8:13 + TypedefDecl tests/FoundationStub.h:9:1 tests/FoundationStub.h:9:22 + ObjCInterfaceDecl tests/FoundationStub.h:16:1 tests/FoundationStub.h:27:2 + ObjCMethodDecl tests/FoundationStub.h:18:1 tests/FoundationStub.h:18:22 + ObjCMethodDecl tests/FoundationStub.h:19:1 tests/FoundationStub.h:19:20 + ObjCMethodDecl tests/FoundationStub.h:20:1 tests/FoundationStub.h:20:28 + ObjCMethodDecl tests/FoundationStub.h:21:1 tests/FoundationStub.h:21:21 + ObjCMethodDecl tests/FoundationStub.h:22:1 tests/FoundationStub.h:22:15 + ObjCMethodDecl tests/FoundationStub.h:24:1 tests/FoundationStub.h:24:34 + ParmVarDecl tests/FoundationStub.h:24:29 tests/FoundationStub.h:24:33 + ObjCMethodDecl tests/FoundationStub.h:25:1 tests/FoundationStub.h:25:41 + ParmVarDecl tests/FoundationStub.h:25:29 tests/FoundationStub.h:25:40 + ObjCInterfaceDecl tests/FoundationStub.h:29:1 tests/FoundationStub.h:31:2 + ObjCMethodDecl tests/FoundationStub.h:30:1 tests/FoundationStub.h:30:37 + ParmVarDecl tests/FoundationStub.h:30:32 tests/FoundationStub.h:30:36 + ObjCInterfaceDecl tests/FoundationStub.h:33:1 tests/FoundationStub.h:35:2 + ObjCMethodDecl tests/FoundationStub.h:34:1 tests/FoundationStub.h:34:21 + ObjCInterfaceDecl tests/FoundationStub.h:37:1 tests/FoundationStub.h:42:2 + ObjCMethodDecl tests/FoundationStub.h:38:1 tests/FoundationStub.h:40:56 + ParmVarDecl tests/FoundationStub.h:38:46 tests/FoundationStub.h:38:51 + ParmVarDecl tests/FoundationStub.h:39:46 tests/FoundationStub.h:39:51 + ParmVarDecl tests/FoundationStub.h:40:40 tests/FoundationStub.h:40:51 + ObjCMethodDecl tests/FoundationStub.h:41:1 tests/FoundationStub.h:41:38 + ParmVarDecl tests/FoundationStub.h:41:32 tests/FoundationStub.h:41:35 + ObjCInterfaceDecl tests/FoundationStub.h:44:1 tests/FoundationStub.h:47:2 + ObjCMethodDecl tests/FoundationStub.h:45:1 tests/FoundationStub.h:45:64 + ParmVarDecl tests/FoundationStub.h:45:35 tests/FoundationStub.h:45:40 + ParmVarDecl tests/FoundationStub.h:45:52 tests/FoundationStub.h:45:61 + ObjCMethodDecl tests/FoundationStub.h:46:1 tests/FoundationStub.h:46:49 + ParmVarDecl tests/FoundationStub.h:46:33 tests/FoundationStub.h:46:44 + ObjCInterfaceDecl tests/FoundationStub.h:49:1 tests/FoundationStub.h:50:2 + FunctionDecl tests/FoundationStub.h:52:13 tests/FoundationStub.h:52:13 + ParmVarDecl tests/FoundationStub.h:52:13 tests/FoundationStub.h:52:13 + FunctionDecl tests/FoundationStub.h:52:1 tests/FoundationStub.h:52:34 + ParmVarDecl tests/FoundationStub.h:52:19 tests/FoundationStub.h:52:28 + RecordDecl tests/ObjCBridgeTransferTest.m:3:9 tests/ObjCBridgeTransferTest.m:4:1 + TypedefDecl tests/ObjCBridgeTransferTest.m:3:1 tests/ObjCBridgeTransferTest.m:4:3 + ObjCInterfaceDecl tests/ObjCBridgeTransferTest.m:6:1 tests/ObjCBridgeTransferTest.m:7:2 + FunctionDecl tests/ObjCBridgeTransferTest.m:9:1 tests/ObjCBridgeTransferTest.m:9:27 + ObjCInterfaceDecl tests/ObjCBridgeTransferTest.m:11:1 tests/ObjCBridgeTransferTest.m:12:2 + ObjCImplementationDecl tests/ObjCBridgeTransferTest.m:14:1 tests/ObjCBridgeTransferTest.m:20:1 + ObjCMethodDecl tests/ObjCBridgeTransferTest.m:16:1 tests/ObjCBridgeTransferTest.m:18:1 + ImplicitParamDecl tests/ObjCBridgeTransferTest.m:18:1 tests/ObjCBridgeTransferTest.m:18:1 + ImplicitParamDecl tests/ObjCBridgeTransferTest.m:18:1 tests/ObjCBridgeTransferTest.m:18:1 + CompoundStmt + DeclStmt + ExprWithCleanups + ImplicitCastExpr + ObjCBridgedCastExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + VarDecl tests/ObjCBridgeTransferTest.m:17:3 tests/ObjCBridgeTransferTest.m:17:65 + ExprWithCleanups + ImplicitCastExpr + ObjCBridgedCastExpr + CallExpr + ImplicitCastExpr + DeclRefExpr + TypedefDecl tests/ObjCBridgeTransferTest.m:17:51 tests/ObjCBridgeTransferTest.m:17:51 +12 0 84 +TranslationUnitDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + ObjCInterfaceDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + TypedefDecl None:None:None None:None:None + FunctionTemplateDecl tests/objcpp_template_unboxing.mm:7:1 tests/objcpp_template_unboxing.mm:10:1 + TypedefDecl tests/objcpp_template_unboxing.mm:10:1 tests/objcpp_template_unboxing.mm:10:1 diff --git a/facebook-clang-plugins/clang-ocaml/tests/clang_ast_named_decl_printer.exp b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_named_decl_printer.exp new file mode 100644 index 000000000..f1057900b --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_named_decl_printer.exp @@ -0,0 +1,440 @@ +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +add_all_ints +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +S +S +S +~S +S +test +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +i +l +m +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +Foo +Foo +func +someFunction +i +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +A +A +f +operator= +operator= +~A +A +A +A +B +B +operator= +operator= +~B +B +B +B +C +C +f +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +X +X +X +X +operator= +~X +Y +Y +Y +~Y +Y +f +g +h +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +sqrt +pow +Form +Form +area +color +vmethod +getArea +setArea +operator= +operator= +~Form +Circle +Circle +vmethod +getRatio +setRatio +isDark +operator= +operator= +~Circle +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +main +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +r +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +Q +V +V +I +i + + +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +pod +pod +a +pod +pod +pod +~pod +cpplike +cpplike +a +b +c +cpplike +cpplike +cpplike +cpplike +~cpplike +test +operator new +operator new[] +operator delete +operator delete[] +test_c11 +operator new +test_placement +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +Point +Point +x +y +fun +blank +A +A +a +a +B +B +b +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +T +T +age +foo +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +S +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +nsa +nsb +a + +B +b +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +N +S +S +S +field +S +S +field +S +~S +S +S +operator= +operator= +test +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +get +get +test +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +X +X +f +operator= +operator= +~X +is_pod +a +b +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +no_throw +main +instancetype +__int128_t +__uint128_t +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +AnotherClass +Y +y1 +instancetype +__int128_t +__uint128_t +SEL +id +Class +Protocol +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +BOOL +NSUInteger +NSObject +alloc +new +autorelease +init +class +respondsToSelector: +conformsToProtocol: +NSNumber +numberWithInt: +NSString +length +NSDictionary +dictionaryWithObjects:forKeys:count: +objectForKeyedSubscript: +NSArray +arrayWithObjects:count: +objectAtIndexedSubscript: +NSException +NSLog +NSLog +Hello +say: +Hello +say: +main +instancetype +__int128_t +__uint128_t +SEL +id +Class +Protocol +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +BOOL +NSUInteger +NSObject +alloc +new +autorelease +init +class +respondsToSelector: +conformsToProtocol: +NSNumber +numberWithInt: +NSString +length +NSDictionary +dictionaryWithObjects:forKeys:count: +objectForKeyedSubscript: +NSArray +arrayWithObjects:count: +objectAtIndexedSubscript: +NSException +NSLog +NSLog +MyProtocol +str +str +setStr: +SomeProtocol +MyClass +str +x +y +delegate +str +setStr: +x +setX: +y +setY: +delegate +setDelegate: + +foo: +MyClass +foo: +_str +_x +_y +_delegate +MyCategory +bar: +MyCategory +bar: +MyClassGenerics +BarGenerics +newWithCs: +MySubclass +MySubclass +bar: +foo: +main +instancetype +__int128_t +__uint128_t +SEL +id +Class +Protocol +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +BOOL +NSUInteger +NSObject +alloc +new +autorelease +init +class +respondsToSelector: +conformsToProtocol: +NSNumber +numberWithInt: +NSString +length +NSDictionary +dictionaryWithObjects:forKeys:count: +objectForKeyedSubscript: +NSArray +arrayWithObjects:count: +objectAtIndexedSubscript: +NSException +NSLog +NSLog +ABFDataRef +ABFDataRef +ABFData +ABFDataCreate +A +A +bridge_transfer_example +instancetype +__int128_t +__uint128_t +SEL +id +Class +Protocol +__NSConstantString +__builtin_ms_va_list +__builtin_va_list +box +instancetype diff --git a/facebook-clang-plugins/clang-ocaml/tests/clang_ast_proj_test.exp b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_proj_test.exp new file mode 100644 index 000000000..e69de29bb diff --git a/facebook-clang-plugins/clang-ocaml/tests/clang_ast_yojson_validation.exp b/facebook-clang-plugins/clang-ocaml/tests/clang_ast_yojson_validation.exp new file mode 100644 index 000000000..e69de29bb diff --git a/facebook-clang-plugins/clang-ocaml/tests/process_test.exp b/facebook-clang-plugins/clang-ocaml/tests/process_test.exp new file mode 100644 index 000000000..e69de29bb diff --git a/facebook-clang-plugins/clang-ocaml/tests/tree_example.exp b/facebook-clang-plugins/clang-ocaml/tests/tree_example.exp new file mode 100644 index 000000000..3ff8fa34d --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/tests/tree_example.exp @@ -0,0 +1,21 @@ +length of raw value: 135 +pretty-printed value (without dictionary): +<#33e33622: + (<#33e33622: (<#0307aa6d>, { #00000078: 1, #00000079: 2 }, <#0307aa6d>)>, + { #00000078: 2, #00000079: 2 }, + <#33e33622: + (<#33e33622: + (<#0307aa6d>, { #00000078: 3, #00000079: 2 }, <#0307aa6d>)>, + { #00000078: 4, #00000079: 2 }, + <#33e33622: + (<#0307aa6d>, { #00000078: 5, #00000079: 2 }, <#0307aa6d>)>)>)> +pretty-printed value (with dictionary): +<"Node": + (<"Node": (<"Empty">, { #00000078: 1, #00000079: 2 }, <"Empty">)>, + { #00000078: 2, #00000079: 2 }, + <"Node": + (<"Node": (<"Empty">, { #00000078: 3, #00000079: 2 }, <"Empty">)>, + { #00000078: 4, #00000079: 2 }, + <"Node": (<"Empty">, { #00000078: 5, #00000079: 2 }, <"Empty">)>)>)> +value:<"Node":(<"Node":(<"Empty">,{"x":1,"y":2},<"Empty">)>,{"x":2,"y":2},<"Node":(<"Node":(<"Empty">,{"x":3,"y":2},<"Empty">)>,{"x":4,"y":2},<"Node":(<"Empty">,{"x":5,"y":2},<"Empty">)>)>)> +length: 184 diff --git a/facebook-clang-plugins/clang-ocaml/tests/utils_test.exp b/facebook-clang-plugins/clang-ocaml/tests/utils_test.exp new file mode 100644 index 000000000..e69de29bb diff --git a/facebook-clang-plugins/clang-ocaml/tests/yojson_utils_test.exp b/facebook-clang-plugins/clang-ocaml/tests/yojson_utils_test.exp new file mode 100644 index 000000000..e69de29bb diff --git a/facebook-clang-plugins/clang-ocaml/utils.ml b/facebook-clang-plugins/clang-ocaml/utils.ml new file mode 100644 index 000000000..ad27c8a46 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/utils.ml @@ -0,0 +1,194 @@ +(* + * Copyright (c) 2014-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. + *) + +module H = Hashtbl + +(* misc *) +(* maps '-' to the standard input *) +let open_in name = if name = "-" then stdin else Pervasives.open_in name + +(* maps '-' to the standard output *) +let open_out name = if name = "-" then stdout else Pervasives.open_out name + +let make_cached f = + let h = H.create 10 in + function + | x -> + try H.find h x with Not_found -> + let y = f x in + H.add h x y ; y + + +(* missing string API *) + +let string_starts_with s1 s2 = + try + let n = String.length s2 in + String.sub s1 0 n = s2 + with Invalid_argument _ -> false + + +let string_ends_with s1 s2 = + try + let n = String.length s2 in + String.sub s1 (String.length s1 - n) n = s2 + with Invalid_argument _ -> false + + +let string_split c s = + let len = String.length s in + let rec aux acc pos = + if pos >= len then "" :: acc + else + try + let next = String.index_from s pos c in + aux (String.sub s pos (next - pos) :: acc) (next + 1) + with Not_found -> String.sub s pos (String.length s - pos) :: acc + in + List.rev (aux [] 0) + + +let string_join c l = String.concat (String.make 1 c) l + +(* lists *) + +let rec list_starts_with l1 l2 = + match (l1, l2) with + | _, [] -> + true + | x1 :: q1, x2 :: q2 when x1 = x2 -> + list_starts_with q1 q2 + | _ -> + false + + +let list_ends_with l1 l2 = list_starts_with (List.rev l1) (List.rev l2) + +(* missing stream API *) + +let line_stream_of_channel channel = + Stream.from (fun _ -> try Some (input_line channel) with End_of_file -> None) + + +let stream_concat streams = + let current_stream = ref None in + let rec next i = + try + let stream = + match !current_stream with + | Some stream -> + stream + | None -> + let stream = Stream.next streams in + current_stream := Some stream ; + stream + in + try Some (Stream.next stream) with Stream.Failure -> + current_stream := None ; + next i + with Stream.Failure -> None + in + Stream.from next + + +let stream_append s1 s2 = stream_concat (Stream.of_list [s1; s2]) + +let stream_map f stream = + let rec next _ = try Some (f (Stream.next stream)) with Stream.Failure -> None in + Stream.from next + + +let stream_filter p stream = + let rec next i = + try + let value = Stream.next stream in + if p value then Some value else next i + with Stream.Failure -> None + in + Stream.from next + + +let stream_fold f init stream = + let result = ref init in + Stream.iter (fun x -> result := f x !result) stream ; + !result + + +let stream_to_list s = List.rev (stream_fold (fun x l -> x :: l) [] s) + +(* simplistic unit testing *) + +let string_counters = Hashtbl.create 10 + +let assert_true s b = + ( try + let i = Hashtbl.find string_counters s in + Hashtbl.replace string_counters s (i + 1) + with Not_found -> Hashtbl.add string_counters s 1 ) ; + if not b then ( + Printf.fprintf stderr "%s (%d)\n" s (Hashtbl.find string_counters s) ; + exit 1 ) + else () + + +let assert_false s b = assert_true s (not b) + +let assert_equal s x y = assert_true s (x = y) + +(* union-find data structure *) + +module DisjointSet = struct + type 'a bucket = {mutable parent: 'a; mutable rank: int} + + type 'a t = ('a, 'a bucket) Hashtbl.t + + let create () = Hashtbl.create 10 + + let bucket t x = + try Hashtbl.find t x with Not_found -> + let b = {parent= x; rank= 0} in + Hashtbl.add t x b ; b + + + let rec find_bucket t x = + let b = bucket t x in + if b.parent = x then b + else + let b0 = find_bucket t b.parent in + b.parent <- b0.parent ; + b0 + + + let find t x = (find_bucket t x).parent + + let union t x y = + let bx = find_bucket t x and by = find_bucket t y in + if bx.parent <> by.parent then + if bx.rank < by.rank then bx.parent <- by.parent + else ( + by.parent <- bx.parent ; + if bx.rank = by.rank then bx.rank <- bx.rank + 1 ) + + + let iter t f = Hashtbl.iter (fun x b -> f x (if x = b.parent then x else find t b.parent)) t +end + +(* Helper for command line parsing with Arg *) + +let fix_arg_spec l usage_msg = + let result = ref [] in + let usage () = + Arg.usage !result usage_msg ; + exit 0 + in + let extra = + [ ("-h", Arg.Unit usage, " Display this list of options.") + ; ("-help", Arg.Unit usage, " ") + ; ("--help", Arg.Unit usage, " ") ] + in + result := Arg.align (l @ extra) ; + !result diff --git a/facebook-clang-plugins/clang-ocaml/utils.mli b/facebook-clang-plugins/clang-ocaml/utils.mli new file mode 100644 index 000000000..aa8503f64 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/utils.mli @@ -0,0 +1,59 @@ +(* + * Copyright (c) 2014-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. + *) + +val open_in : string -> in_channel + +val open_out : string -> out_channel + +val string_starts_with : string -> string -> bool + +val string_ends_with : string -> string -> bool + +val string_split : char -> string -> string list + +val string_join : char -> string list -> string + +val list_starts_with : 'a list -> 'a list -> bool + +val list_ends_with : 'a list -> 'a list -> bool + +val make_cached : ('a -> 'b) -> 'a -> 'b + +val line_stream_of_channel : in_channel -> string Stream.t + +val stream_concat : 'a Stream.t Stream.t -> 'a Stream.t + +val stream_append : 'a Stream.t -> 'a Stream.t -> 'a Stream.t + +val stream_map : ('a -> 'b) -> 'a Stream.t -> 'b Stream.t + +val stream_filter : ('a -> bool) -> 'a Stream.t -> 'a Stream.t + +val stream_fold : ('a -> 'b -> 'b) -> 'b -> 'a Stream.t -> 'b + +val stream_to_list : 'a Stream.t -> 'a list + +val assert_true : string -> bool -> unit + +val assert_false : string -> bool -> unit + +val assert_equal : string -> 'a -> 'a -> unit + +module DisjointSet : sig + type 'a t + + val create : unit -> 'a t + + val find : 'a t -> 'a -> 'a + + val union : 'a t -> 'a -> 'a -> unit + + val iter : 'a t -> ('a -> 'a -> unit) -> unit +end + +val fix_arg_spec : + (Arg.key * Arg.spec * Arg.doc) list -> Arg.usage_msg -> (Arg.key * Arg.spec * Arg.doc) list diff --git a/facebook-clang-plugins/clang-ocaml/utils_test.ml b/facebook-clang-plugins/clang-ocaml/utils_test.ml new file mode 100644 index 000000000..4cb77ca73 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/utils_test.ml @@ -0,0 +1,93 @@ +(* + * Copyright (c) 2014-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. + *) + +open Utils +open Process + +let () = + assert_true "string_ends_with" (string_ends_with "foo" "o") ; + assert_true "string_ends_with" (string_ends_with "foo" "") ; + assert_false "string_ends_with" (string_ends_with "foo" "f") + + +let () = + assert_true "string_starts_with" (string_starts_with "foo" "f") ; + assert_true "string_starts_with" (string_starts_with "foo" "") ; + assert_false "string_starts_with" (string_starts_with "foo" "o") + + +let () = + assert_equal "string_split" (string_split ' ' "foo bla") ["foo"; "bla"] ; + assert_equal "string_split" (string_split ' ' "foo") ["foo"] ; + assert_equal "string_split" (string_split ' ' "") [""] ; + assert_equal "string_split" (string_split ' ' " ") [""; ""] ; + assert_equal "string_split" (string_split ' ' " foo bla ") [""; "foo"; "bla"; ""] + + +let () = + assert_true "list_ends_with" (list_ends_with [1; 2; 3] [3]) ; + assert_false "list_ends_with" (list_ends_with [1; 2; 3] [2]) + + +let () = + assert_true "list_starts_with" (list_starts_with [1; 2; 3] [1]) ; + assert_false "list_starts_with" (list_starts_with [1; 2; 3] [2]) + + +let () = + let pid, ic = Process.fork (fun oc -> output_string oc "foo\nbar\n" ; true) in + let lines = stream_to_list (line_stream_of_channel ic) in + assert_true "line_stream_of_channel::wait" (Process.wait pid) ; + assert_equal "line_stream_of_channel::result" lines ["foo"; "bar"] + + +let () = + let lines = stream_to_list (stream_append (Stream.of_list ["foo"]) (Stream.of_list ["bar"])) in + assert_equal "line_stream_of_channel::result" lines ["foo"; "bar"] + + +let () = + let count = ref 0 in + let f _ = incr count in + let g = make_cached f in + List.iter g [1; 2; 1; 3; 1] ; + assert_equal "make_cached" !count 3 + + +let () = + let s = DisjointSet.create () in + assert_equal "DisjointSet" (DisjointSet.find s 1) 1 ; + assert_equal "DisjointSet" (DisjointSet.find s 2) 2 ; + DisjointSet.union s 1 2 ; + DisjointSet.union s 1 3 ; + DisjointSet.union s 2 4 ; + DisjointSet.union s 5 6 ; + assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 2) ; + assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 3) ; + assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 4) ; + assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 4) ; + assert_equal "DisjointSet" (DisjointSet.find s 5) (DisjointSet.find s 6) ; + assert_true "DisjointSet" (DisjointSet.find s 1 <> DisjointSet.find s 6) ; + DisjointSet.union s 3 6 ; + assert_true "DisjointSet" (DisjointSet.find s 1 = DisjointSet.find s 6) ; + assert_equal "DisjointSet" (DisjointSet.find s 5) (DisjointSet.find s 6) ; + let l = ref [] in + DisjointSet.iter s (fun x y -> l := (y, x) :: !l) ; + assert_equal "DisjointSetFinal" (List.sort compare !l |> List.map snd) [1; 2; 3; 4; 5; 6] + + +let () = + let take13 = List.map (fun (x, y, z) -> (x, z)) in + assert_equal "fix_arg_spec" + (fix_arg_spec [] "bla" |> take13) + [("-h", " Display this list of options."); ("-help", " "); ("--help", " ")] ; + assert_equal "fix_arg_spec" + (fix_arg_spec [("--foo", Arg.String ignore, "FOO fooling")] "bla" |> take13) + [ ("--foo", "FOO fooling") + ; ("-h", " Display this list of options.") + ; ("-help", " ") + ; ("--help", " ") ] diff --git a/facebook-clang-plugins/clang-ocaml/yojson_utils.ml b/facebook-clang-plugins/clang-ocaml/yojson_utils.ml new file mode 100644 index 000000000..712028646 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/yojson_utils.ml @@ -0,0 +1,106 @@ +(* + * Copyright (c) 2014-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. + *) + +module U = Utils +module P = Process + +(* Needed as a (pointer-stable) default value for atd specs. *) +let empty_string = "" + +let ydump ?(compact_json= false) ?(std_json= false) ic oc = + let cmd = + ["ydump"] @ (if compact_json then ["-c"] else []) @ if std_json then ["-std"] else [] + in + P.exec (Array.of_list cmd) ic oc stderr + + +let read_data_from_file reader fname = + let input_gunzipped read_data ic = + let pid, icz = P.fork (P.gunzip ic) in + let data = read_data icz in + let r = P.wait pid in + P.close_in icz ; + if not r then failwith "read_data_from_file (gunzip)" else () ; + data + in + let ic = open_in fname in + let data = + if U.string_ends_with fname ".value.gz" then input_gunzipped Marshal.from_channel ic + else if U.string_ends_with fname ".gz" then + input_gunzipped (Atdgen_runtime.Util.Json.from_channel ~fname reader) ic + else if U.string_ends_with fname ".value" then Marshal.from_channel ic + else Atdgen_runtime.Util.Json.from_channel ~fname reader ic + in + close_in ic ; data + + +let write_data_to_file ?(pretty= false) ?(compact_json= false) ?(std_json= false) writer fname data = + let output_gzipped write_data oc data = + let pid, icz = P.fork (fun ocz -> write_data ocz data ; true) in + let r1 = P.gzip icz oc and r2 = P.wait pid in + P.close_in icz ; + if not (r1 && r2) then failwith "write_data_to_file (gzip)" else () + and output_pretty write_data oc data = + (* TODO(mathieubaudet): find out how to write directly pretty json? *) + let pid, icp = P.fork (fun ocp -> write_data ocp data ; true) in + let r1 = ydump ~compact_json ~std_json icp oc and r2 = P.wait pid in + P.close_in icp ; + if not (r1 && r2) then failwith "write_data_to_file (pretty)" else () + in + let write_json ocx data = + if pretty then output_pretty (Atdgen_runtime.Util.Json.to_channel writer) ocx data + else Atdgen_runtime.Util.Json.to_channel writer ocx data + in + let oc = open_out fname in + if U.string_ends_with fname ".value.gz" then + output_gzipped (fun oc data -> Marshal.to_channel oc data []) oc data + else if U.string_ends_with fname ".value" then Marshal.to_channel oc data [] + else if U.string_ends_with fname ".gz" then output_gzipped write_json oc data + else write_json oc data ; + close_out oc + + +let convert ?(pretty= false) ?(compact_json= false) ?(std_json= false) reader writer fin fout = + try + read_data_from_file reader fin + |> write_data_to_file writer ~pretty ~compact_json ~std_json fout + with + | Yojson.Json_error s | Atdgen_runtime.Oj_run.Error s -> + prerr_string s ; prerr_newline () ; exit 1 + + +let run_converter_tool reader writer = + let pretty = ref false + and std_json = ref false + and compact_json = ref false + and files = ref [] in + let add_files x = files := x :: !files + and usage_msg = + "Usage: " ^ Sys.argv.(0) ^ "[OPTIONS] INPUT_FILE [OUTPUT_FILE]\n" + ^ "Parse yojson values and convert them to another format based on the extension" + ^ " of the output file (default: ${INPUT_FILE}.value.gz).\n" + in + let spec = + Utils.fix_arg_spec + [ ("--pretty", Arg.Set pretty, " Pretty print outputs.") + ; ("--std", Arg.Set std_json, " Use standard json for outputs.") + ; ("--compact", Arg.Set compact_json, " Use compact json for outputs.") + ; ("--", Arg.Rest add_files, " Mark the end of options.") ] usage_msg + in + (* Parse the command line. *) + Arg.parse spec add_files usage_msg ; + let input, output = + match List.rev !files with + | [input] -> + (input, input ^ ".value.gz") + | [input; output] -> + (input, output) + | _ -> + prerr_string usage_msg ; exit 1 + in + convert ~pretty:!pretty ~std_json:!std_json ~compact_json:!compact_json reader writer input + output diff --git a/facebook-clang-plugins/clang-ocaml/yojson_utils.mli b/facebook-clang-plugins/clang-ocaml/yojson_utils.mli new file mode 100644 index 000000000..62a1e50f6 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/yojson_utils.mli @@ -0,0 +1,19 @@ +(* + * Copyright (c) 2014-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. + *) + +val read_data_from_file : 'a Atdgen_runtime.Util.Json.reader -> string -> 'a + +val write_data_to_file : + ?pretty:bool -> ?compact_json:bool -> ?std_json:bool -> 'a Atdgen_runtime.Util.Json.writer + -> string -> 'a -> unit + +val ydump : ?compact_json:bool -> ?std_json:bool -> in_channel -> out_channel -> bool + +val empty_string : string + +val run_converter_tool : + 'a Atdgen_runtime.Util.Json.reader -> 'a Atdgen_runtime.Util.Json.writer -> unit diff --git a/facebook-clang-plugins/clang-ocaml/yojson_utils_test.ml b/facebook-clang-plugins/clang-ocaml/yojson_utils_test.ml new file mode 100644 index 000000000..2e4e3d0ae --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/yojson_utils_test.ml @@ -0,0 +1,24 @@ +(* + * Copyright (c) 2014-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. + *) + +open Clang_ast_j +open Yojson_utils + +let data = {sl_file= Some "foo"; sl_line= Some 1; sl_column= None} + +let basic_test pretty name = + write_data_to_file ~pretty write_source_location name data ; + let data3 = read_data_from_file read_source_location name in + Unix.unlink name ; + Utils.assert_equal (Printf.sprintf "test %s pretty=%b" name pretty) data data3 + + +let files = List.map (( ^ ) "yojson_utils_test_tmpfile") [".gz"; ".value"; ".value.gz"; ".yjson"] + +let test1 = List.iter (basic_test false) files + +let test2 = List.iter (basic_test true) files diff --git a/facebook-clang-plugins/clang-ocaml/yojson_validator.sh b/facebook-clang-plugins/clang-ocaml/yojson_validator.sh new file mode 100755 index 000000000..5f427d2d7 --- /dev/null +++ b/facebook-clang-plugins/clang-ocaml/yojson_validator.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Copyright (c) 2014-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. + +# Script to validate Yojson outputs w.r.t. ATD specifications. +# This works by running a given 'converter' to parse and pretty-print the outputs, then observing the difference with gunzip + pretty-print. + +if [ "$2" == "--std" ]; then + CONVERTER=("$1" --std --pretty) + YDUMP=(ydump -std) + shift 2 +else + CONVERTER=("$1" --pretty) + YDUMP=(ydump) + shift +fi + +while [ -n "$1" ] +do + if [[ "$1" == *.gz ]]; then + DUMP_CMD=(gunzip -c "$1") + else + DUMP_CMD=(cat "$1") + fi + + if ! diff -q <("${DUMP_CMD[@]}" | "${YDUMP[@]}") <("${CONVERTER[@]}" "$1" /dev/stdout) >/dev/null 2>&1; then + echo "The file '$1' does not respect the ATD format implemented by $CONVERTER." + echo "Here is the command that shows the problem:" + echo -n " diff <(" + printf '%s ' "${DUMP_CMD[@]}" + echo -n "| " + printf '"%s" ' "${YDUMP[@]}" + echo -n ") <(" + printf '"%s" ' "${CONVERTER[@]}" "$1" + echo "/dev/stdout)" + exit 2 + fi + + shift; +done diff --git a/facebook-clang-plugins/clang/setup.sh b/facebook-clang-plugins/clang/setup.sh new file mode 100755 index 000000000..85a6d9662 --- /dev/null +++ b/facebook-clang-plugins/clang/setup.sh @@ -0,0 +1,239 @@ +#!/bin/bash +# Copyright (c) 2014-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. + +# Simple installation script for llvm/clang. + +set -e +set -o pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SCRIPT_RELATIVE_PATH="$(basename "${BASH_SOURCE[0]}")" +CLANG_RELATIVE_SRC="src/llvm_clang_compiler-rt_libcxx_libcxxabi_openmp-9.0.0.tar.xz" +CLANG_SRC="$SCRIPT_DIR/$CLANG_RELATIVE_SRC" +CLANG_PREBUILD_PATCHES=( + "$SCRIPT_DIR/src/err_ret_local_block.patch" + "$SCRIPT_DIR/src/mangle_suppress_errors.patch" + "$SCRIPT_DIR/src/template_ambiguous.patch" +) +CLANG_PREFIX="$SCRIPT_DIR/install" +CLANG_INSTALLED_VERSION_FILE="$SCRIPT_DIR/installed.version" +PATCH=${PATCH:-patch} +STRIP=${STRIP:-strip} + +NCPUS="$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)" +JOBS="${JOBS:-$(($NCPUS>=8?$NCPUS/4:2))}" + +SHASUM=${SHASUM:-shasum -a 256} + +usage () { + echo "Usage: $0 [-chr]" + echo + echo " options:" + echo " -c,--only-check-install check if recompiling clang is needed" + echo " -h,--help show this message" + echo " -n,--ninja use ninja for building" + echo " -r,--only-record-install do not install clang but pretend we did" + echo " -s,--sequential-link only use one process for linking (ninja only)" +} + +check_installed () { + pushd "$SCRIPT_DIR" > /dev/null + $SHASUM -c "$CLANG_INSTALLED_VERSION_FILE" >& /dev/null + local result=$? + popd > /dev/null + return $result +} + +record_installed () { + pushd "$SCRIPT_DIR" > /dev/null + $SHASUM "$CLANG_RELATIVE_SRC" "$SCRIPT_RELATIVE_PATH" > "$CLANG_INSTALLED_VERSION_FILE" + popd > /dev/null +} + +ONLY_CHECK= +ONLY_RECORD= +USE_NINJA= +SEQUENTIAL_LINK= + +while [[ $# -gt 0 ]]; do + opt_key="$1" + case $opt_key in + -c|--only-check-install) + ONLY_CHECK=yes + shift + continue + ;; + -r|--only-record-install) + ONLY_RECORD=yes + shift + continue + ;; + -n|--ninja) + USE_NINJA=yes + shift + continue + ;; + -s|--sequential-link) + SEQUENTIAL_LINK=yes + shift + continue + ;; + -h|--help) + usage + exit 0 + ;; + *) + usage + exit 2 + esac + shift +done + +if [ "$ONLY_RECORD" = "yes" ]; then + record_installed + exit 0 +fi + +if check_installed; then + # already installed + if [ "$ONLY_CHECK" = "yes" ]; then + exit 0 + fi + echo "Clang is already installed according to $CLANG_INSTALLED_VERSION_FILE" + echo "Nothing to do, exiting." + exit 0 +else + if [ "$ONLY_CHECK" = "yes" ]; then + exit 1 + fi +fi + +set -x + +if [[ x"$MAKEFLAGS" != x ]]; then + echo "WARNING: MAKEFLAGS var was set to: $MAKEFLAGS" + echo " which may (and will!) interfere with the setup" + echo " ... ignoring MAKEFLAGS." + unset MAKEFLAGS +fi + +if [[ x"$DESTDIR" != x ]]; then + echo "WARNING: DESTDIR var was set to: $DESTDIR" + echo " but the setup script is not designed to handle" + echo " relocation of the installation." + echo " ... ignoring DESTDIR." + unset DESTDIR +fi + +platform=`uname` + +CMAKE_ARGS=( + -DCMAKE_INSTALL_PREFIX="$CLANG_PREFIX" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_C_FLAGS="$CFLAGS $CMAKE_C_FLAGS" + -DCMAKE_CXX_FLAGS="$CXXFLAGS $CMAKE_CXX_FLAGS" + -DLLVM_ENABLE_ASSERTIONS=Off + -DLLVM_ENABLE_EH=On + -DLLVM_ENABLE_RTTI=On + -DLLVM_INCLUDE_DOCS=Off + -DLLVM_TARGETS_TO_BUILD="X86;AArch64;ARM;Mips" + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=On +) + +if [ "$platform" = "Darwin" ]; then + CMAKE_ARGS+=( + -DLLVM_ENABLE_LIBCXX=On + -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS $CMAKE_SHARED_LINKER_FLAGS" + -DLLVM_BUILD_LLVM_DYLIB=ON + ) +else + CMAKE_ARGS+=( + -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS $CMAKE_SHARED_LINKER_FLAGS -lstdc++ -fPIC" + ) +fi + +if [ "$USE_NINJA" = "yes" ]; then + CMAKE_GENERATOR="Ninja" + BUILD_BIN="ninja" + # Do not set a 'j' build default for Ninja (let Ninja decide) + BUILD_ARGS="" +else + CMAKE_GENERATOR="Unix Makefiles" + BUILD_BIN="make" + BUILD_ARGS="-j $JOBS" +fi + +if [ "$SEQUENTIAL_LINK" = "yes" ]; then + if [[ x"$USE_NINJA" = x ]]; then + echo "Linking with a single process is only supported with the Ninja generator." + echo "Unable to proceed, exiting." + exit 1 + fi + # For Ninja, the compile jobs is the number of CPUs *not* $JOBS + CMAKE_ARGS+=( + -DCMAKE_JOB_POOLS:STRING="compile=$NCPUS;link=1" + -DCMAKE_JOB_POOL_COMPILE:STRING="compile" + -DCMAKE_JOB_POOL_LINK:STRING="link" + ) +fi + +# start the installation +if [ -n "$CLANG_TMP_DIR" ]; then + TMP=$CLANG_TMP_DIR +else + TMP=`mktemp -d /tmp/clang-setup.XXXXXX` +fi +pushd "$TMP" + +if tar --version | grep -q 'GNU'; then + # GNU tar is too verbose if the tarball was created on MacOS + QUIET_TAR="--warning=no-unknown-keyword" +fi +echo "unpacking '$CLANG_SRC'..." +tar --extract $QUIET_TAR --file "$CLANG_SRC" + +# apply prebuild patch +for PATCH_FILE in ${CLANG_PREBUILD_PATCHES[*]}; do + "$PATCH" --batch -p 1 < "$PATCH_FILE" +done + +mkdir -p build +pushd build + +# workaround install issue with ocaml llvm bindings and ocamldoc +mkdir -p docs/ocamldoc/html + +cmake -G "$CMAKE_GENERATOR" ../llvm "${CMAKE_ARGS[@]}" $CLANG_CMAKE_ARGS + +$BUILD_BIN $BUILD_ARGS + +echo "testing clang build" +./bin/clang --version + +# "uninstall" previous clang +rm -fr "$CLANG_PREFIX" + +$BUILD_BIN $BUILD_ARGS install + +popd # build +popd # $TMP + +# brutally strip everything, ignore errors +set +e +find "$CLANG_PREFIX"/{bin,lib} -type f -exec "$STRIP" -x \{\} \; +set -e + +echo "testing installed clang" +"$CLANG_PREFIX"/bin/clang --version + +echo "deleting temp dir '$CLANG_TMP_DIR'..." +if [ -n "$CLANG_TMP_DIR" ]; then + rm -rf "$TMP/*" +else + rm -rf "$TMP" +fi + +record_installed diff --git a/facebook-clang-plugins/clang/src/checksums.txt b/facebook-clang-plugins/clang/src/checksums.txt new file mode 100644 index 000000000..d526160f1 --- /dev/null +++ b/facebook-clang-plugins/clang/src/checksums.txt @@ -0,0 +1,31 @@ += LLVM+Clang 9.0.0 -- official release + +Downloaded from http://releases.llvm.org/download.html#9.0.0 + +Included components: +$ sha256sum *.tar.xz +7ba81eef7c22ca5da688fdf9d88c20934d2d6b40bfe150ffd338900890aa4610 cfe-9.0.0.src.tar.xz +56e4cd96dd1d8c346b07b4d6b255f976570c6f2389697347a6c3dcb9e820d10e compiler-rt-9.0.0.src.tar.xz +3c4162972b5d3204ba47ac384aa456855a17b5e97422723d4758251acf1ed28c libcxx-9.0.0.src.tar.xz +675041783565c906ac2f7f8b2bc5c40f14d871ecfa8ade34855aa18de95530e9 libcxxabi-9.0.0.src.tar.xz +d6a0565cf21f22e9b4353b2eb92622e8365000a9e90a16b09b56f8157eabfe84 llvm-9.0.0.src.tar.xz +9979eb1133066376cc0be29d1682bc0b0e7fb541075b391061679111ae4d3b5b openmp-9.0.0.src.tar.xz + +Script to build the archive: + +tar xf llvm-9.0.0.src.tar.xz +cd llvm-9.0.0.src/tools/ +tar xf ../../cfe-9.0.0.src.tar.xz +mv cfe-9.0.0.src/ clang +cd ../projects/ +tar xf ../../compiler-rt-9.0.0.src.tar.xz +mv compiler-rt-9.0.0.src/ compiler-rt +tar xf ../../libcxx-9.0.0.src.tar.xz +mv libcxx-9.0.0.src/ libcxx +tar xf ../../libcxxabi-9.0.0.src.tar.xz +mv libcxxabi-9.0.0.src/ libcxxabi +tar xf ../../openmp-9.0.0.src.tar.xz +mv openmp-9.0.0.src/ openmp +cd ../.. +mv llvm-9.0.0.src llvm +tar cJ llvm > llvm_clang_compiler-rt_libcxx_libcxxabi_openmp-9.0.0.tar.xz diff --git a/facebook-clang-plugins/clang/src/err_ret_local_block.patch b/facebook-clang-plugins/clang/src/err_ret_local_block.patch new file mode 100644 index 000000000..569f37bf8 --- /dev/null +++ b/facebook-clang-plugins/clang/src/err_ret_local_block.patch @@ -0,0 +1,13 @@ +--- a/llvm/tools/clang/lib/Sema/SemaInit.cpp ++++ b/llvm/tools/clang/lib/Sema/SemaInit.cpp +@@ -7147,7 +7147,9 @@ void Sema::checkInitializerLifetime(const InitializedEntity &Entity, + << Entity.getType()->isReferenceType() << DRE->getDecl() + << isa(DRE->getDecl()) << DiagRange; + } else if (isa(L)) { +- Diag(DiagLoc, diag::err_ret_local_block) << DiagRange; ++ // Don't throw this error during Infer runs ++ // Diag(DiagLoc, diag::err_ret_local_block) << DiagRange; ++ return false; + } else if (isa(L)) { + // Don't warn when returning a label from a statement expression. + // Leaving the scope doesn't end its lifetime. diff --git a/facebook-clang-plugins/clang/src/mangle_suppress_errors.patch b/facebook-clang-plugins/clang/src/mangle_suppress_errors.patch new file mode 100644 index 000000000..912842d9c --- /dev/null +++ b/facebook-clang-plugins/clang/src/mangle_suppress_errors.patch @@ -0,0 +1,77 @@ +--- a/llvm/tools/clang/lib/AST/ItaniumMangle.cpp ++++ b/llvm/tools/clang/lib/AST/ItaniumMangle.cpp +@@ -3048,11 +3048,7 @@ void CXXNameMangler::mangleNeonVectorType(const VectorType *T) { + } + + void CXXNameMangler::mangleNeonVectorType(const DependentVectorType *T) { +- DiagnosticsEngine &Diags = Context.getDiags(); +- unsigned DiagID = Diags.getCustomDiagID( +- DiagnosticsEngine::Error, +- "cannot mangle this dependent neon vector type yet"); +- Diags.Report(T->getAttributeLoc(), DiagID); ++ Out << "__unhandled_NeonVectorType"; + } + + static StringRef mangleAArch64VectorBase(const BuiltinType *EltType) { +@@ -3123,11 +3119,7 @@ void CXXNameMangler::mangleAArch64NeonVectorType(const VectorType *T) { + Out << TypeName.length() << TypeName; + } + void CXXNameMangler::mangleAArch64NeonVectorType(const DependentVectorType *T) { +- DiagnosticsEngine &Diags = Context.getDiags(); +- unsigned DiagID = Diags.getCustomDiagID( +- DiagnosticsEngine::Error, +- "cannot mangle this dependent neon vector type yet"); +- Diags.Report(T->getAttributeLoc(), DiagID); ++ Out << "__unhandled_AArch64NeonVectorType"; + } + + // GNU extension: vector types +@@ -3626,12 +3618,7 @@ recurse: + case Expr::BuiltinBitCastExprClass: + { + if (!NullOut) { +- // As bad as this diagnostic is, it's better than crashing. +- DiagnosticsEngine &Diags = Context.getDiags(); +- unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, +- "cannot yet mangle expression type %0"); +- Diags.Report(E->getExprLoc(), DiagID) +- << E->getStmtClassName() << E->getSourceRange(); ++ Out << "__unhandled_expression"; + } + break; + } +@@ -3652,12 +3639,7 @@ recurse: + + // Even gcc-4.5 doesn't mangle this. + case Expr::BinaryConditionalOperatorClass: { +- DiagnosticsEngine &Diags = Context.getDiags(); +- unsigned DiagID = +- Diags.getCustomDiagID(DiagnosticsEngine::Error, +- "?: operator with omitted middle operand cannot be mangled"); +- Diags.Report(E->getExprLoc(), DiagID) +- << E->getStmtClassName() << E->getSourceRange(); ++ Out << "__unhandled_BinaryConditionalOperatorClass"; + break; + } + +@@ -3952,18 +3934,11 @@ recurse: + Out << 'a'; + break; + case UETT_VecStep: { +- DiagnosticsEngine &Diags = Context.getDiags(); +- unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, +- "cannot yet mangle vec_step expression"); +- Diags.Report(DiagID); ++ Out << "__unhandled_VecStep"; + return; + } + case UETT_OpenMPRequiredSimdAlign: { +- DiagnosticsEngine &Diags = Context.getDiags(); +- unsigned DiagID = Diags.getCustomDiagID( +- DiagnosticsEngine::Error, +- "cannot yet mangle __builtin_omp_required_simd_align expression"); +- Diags.Report(DiagID); ++ Out << "__unhandled_UETT_OpenMPRequiredSimdAlign"; + return; + } + } diff --git a/facebook-clang-plugins/clang/src/template_ambiguous.patch b/facebook-clang-plugins/clang/src/template_ambiguous.patch new file mode 100644 index 000000000..2d798ca56 --- /dev/null +++ b/facebook-clang-plugins/clang/src/template_ambiguous.patch @@ -0,0 +1,12 @@ +--- a/llvm/tools/clang/lib/Sema/SemaTemplate.cpp ++++ b/llvm/tools/clang/lib/Sema/SemaTemplate.cpp +@@ -441,9 +441,6 @@ bool Sema::LookupTemplateName(LookupResult &Found, + IsDependent |= Found.wasNotFoundInCurrentInstantiation(); + } + +- if (Found.isAmbiguous()) +- return false; +- + if (ATK && !SS.isSet() && ObjectType.isNull() && TemplateKWLoc.isInvalid()) { + // C++2a [temp.names]p2: + // A name is also considered to refer to a template if it is an diff --git a/facebook-clang-plugins/libtooling/ASTExporter.cpp b/facebook-clang-plugins/libtooling/ASTExporter.cpp new file mode 100644 index 000000000..5489c286b --- /dev/null +++ b/facebook-clang-plugins/libtooling/ASTExporter.cpp @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2014, Facebook, Inc. + * Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign. + * All rights reserved. + * + * This file is distributed under the University of Illinois Open Source + * License. + * See LLVM-LICENSE for details. + * + */ + +/** + * Clang frontend plugin to export an AST of clang into Json, Yojson and Biniou + * while conforming to the inlined ATD specifications. + */ + +#include "ASTExporter.h" + +//===----------------------------------------------------------------------===// +// ASTExporter Plugin +//===----------------------------------------------------------------------===// + +static ASTLib::FrontendPluginRegistry::Add X( + "JsonASTExporter", + "Export the AST of source files into ATD-specified Json data"); + +static ASTLib::FrontendPluginRegistry::Add Y( + "YojsonASTExporter", + "Export the AST of source files into ATD-specified Yojson data"); + +static ASTLib::FrontendPluginRegistry::Add Z( + "BiniouASTExporter", + "Export the AST of source files into ATD-specified biniou data"); diff --git a/facebook-clang-plugins/libtooling/ASTExporter.h b/facebook-clang-plugins/libtooling/ASTExporter.h new file mode 100644 index 000000000..d5e83148f --- /dev/null +++ b/facebook-clang-plugins/libtooling/ASTExporter.h @@ -0,0 +1,5397 @@ +/** + * Copyright (c) 2014, Facebook, Inc. + * Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign. + * All rights reserved. + * + * This file is distributed under the University of Illinois Open Source + * License. + * See LLVM-LICENSE for details. + * + */ + +/** + * Utility class to export an AST of clang into Json and Yojson (and ultimately + * Biniou) + * while conforming to the inlined ATD specifications. + * + * /!\ + * '//@atd' comments are meant to be extracted and processed to generate ATD + * specifications for the Json dumper. + * Do not modify ATD comments without modifying the Json emission accordingly + * (and conversely). + * See ATD_GUIDELINES.md for more guidelines on how to write and test ATD + * annotations. + * + * This file was obtained by modifying the file ASTdumper.cpp from the + * LLVM/clang project. + * The general layout should be maintained to make future merging easier. + */ + +#pragma once +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "AttrParameterVectorStream.h" +#include "NamePrinter.h" +#include "SimplePluginASTAction.h" +#include "atdlib/ATDWriter.h" + +//===----------------------------------------------------------------------===// +// ASTExporter Visitor +//===----------------------------------------------------------------------===// + +namespace ASTLib { + +struct ASTExporterOptions : ASTPluginLib::PluginASTOptionsBase { + bool withPointers = true; + bool dumpComments = false; + bool useMacroExpansionLocation = true; + ATDWriter::ATDWriterOptions atdWriterOptions = { + .useYojson = false, + .prettifyJson = true, + }; + + void loadValuesFromEnvAndMap( + const ASTPluginLib::PluginASTOptionsBase::argmap_t &map) { + ASTPluginLib::PluginASTOptionsBase::loadValuesFromEnvAndMap(map); + loadBool(map, "AST_WITH_POINTERS", withPointers); + loadBool(map, "USE_YOJSON", atdWriterOptions.useYojson); + loadBool(map, "PRETTIFY_JSON", atdWriterOptions.prettifyJson); + } +}; + +using namespace clang; +using namespace clang::comments; + +template +struct TupleSizeBase { + // Decls + +#define DECL(DERIVED, BASE) \ + int DERIVED##DeclTupleSize() { \ + return static_cast(this)->BASE##TupleSize(); \ + } +#define ABSTRACT_DECL(DECL) DECL +#include + + int tupleSizeOfDeclKind(const Decl::Kind kind) { + switch (kind) { +#define DECL(DERIVED, BASE) \ + case Decl::DERIVED: \ + return static_cast(this)->DERIVED##DeclTupleSize(); +#define ABSTRACT_DECL(DECL) +#include + } + llvm_unreachable("Decl that isn't part of DeclNodes.inc!"); + } + + // Stmts + +#define STMT(CLASS, PARENT) \ + int CLASS##TupleSize() { \ + return static_cast(this)->PARENT##TupleSize(); \ + } +#define ABSTRACT_STMT(STMT) STMT +#include + + int tupleSizeOfStmtClass(const Stmt::StmtClass stmtClass) { + switch (stmtClass) { +#define STMT(CLASS, PARENT) \ + case Stmt::CLASS##Class: \ + return static_cast(this)->CLASS##TupleSize(); +#define ABSTRACT_STMT(STMT) +#include + case Stmt::NoStmtClass: + break; + } + llvm_unreachable("Stmt that isn't part of StmtNodes.inc!"); + } + + // Comments + +#define COMMENT(CLASS, PARENT) \ + int CLASS##TupleSize() { \ + return static_cast(this)->PARENT##TupleSize(); \ + } +#define ABSTRACT_COMMENT(COMMENT) COMMENT +#include + + int tupleSizeOfCommentKind(const Comment::CommentKind kind) { + switch (kind) { +#define COMMENT(CLASS, PARENT) \ + case Comment::CLASS##Kind: \ + return static_cast(this)->CLASS##TupleSize(); +#define ABSTRACT_COMMENT(COMMENT) +#include + case Comment::NoCommentKind: + break; + } + llvm_unreachable("Comment that isn't part of CommentNodes.inc!"); + } + + // Types + +#define TYPE(DERIVED, BASE) \ + int DERIVED##TypeTupleSize() { \ + return static_cast(this)->BASE##TupleSize(); \ + } +#define ABSTRACT_TYPE(DERIVED, BASE) TYPE(DERIVED, BASE) +#include + + int tupleSizeOfTypeClass(const Type::TypeClass typeClass) { + switch (typeClass) { +#define TYPE(DERIVED, BASE) \ + case Type::DERIVED: \ + return static_cast(this)->DERIVED##TypeTupleSize(); +#define ABSTRACT_TYPE(DERIVED, BASE) +#include + } + llvm_unreachable("Type that isn't part of TypeNodes.def!"); + } + + // Attributes + +#define ATTR(NAME) \ + int NAME##AttrTupleSize() { return 1; } +#include + + int tupleSizeOfAttrKind(const attr::Kind attrKind) { + switch (attrKind) { +#define ATTR(NAME) \ + case attr::Kind::NAME: \ + return static_cast(this)->NAME##AttrTupleSize(); +#include + } + llvm_unreachable("Attr that isn't part of AttrList.inc!"); + } +}; + +typedef ATDWriter::JsonWriter JsonWriter; + +template +class ASTExporter : public ConstDeclVisitor>, + public ConstStmtVisitor>, + public ConstCommentVisitor>, + public TypeVisitor>, + public ConstAttrVisitor>, + public TupleSizeBase> { + typedef typename ATDWriter::ObjectScope ObjectScope; + typedef typename ATDWriter::ArrayScope ArrayScope; + typedef typename ATDWriter::TupleScope TupleScope; + typedef typename ATDWriter::VariantScope VariantScope; + ATDWriter OF; + + ASTContext &Context; + + const ASTExporterOptions &Options; + + std::unique_ptr Mangler; + + // Encoding of NULL pointers into suitable empty nodes + // This is a hack but using option types in children lists would make the Json + // terribly verbose. + // Also these useless nodes could have occurred in the original AST anyway :) + // + // Note: We are not using std::unique_ptr because 'delete' appears to be + // protected (at least on Stmt). + const Stmt *const NullPtrStmt; + const Decl *const NullPtrDecl; + const Comment *const NullPtrComment; + + // Keep track of the last location we print out so that we can + // print out deltas from then on out. + const char *LastLocFilename; + unsigned LastLocLine; + + // The \c FullComment parent of the comment being dumped. + const FullComment *FC; + + NamePrinter NamePrint; + + public: + ASTExporter(raw_ostream &OS, + ASTContext &Context, + const ASTExporterOptions &Opts) + : OF(OS, Opts.atdWriterOptions), + Context(Context), + Options(Opts), + Mangler( + ItaniumMangleContext::create(Context, Context.getDiagnostics())), + NullPtrStmt(new (Context) NullStmt(SourceLocation())), + NullPtrDecl(EmptyDecl::Create( + Context, Context.getTranslationUnitDecl(), SourceLocation())), + NullPtrComment(new (Context) Comment( + Comment::NoCommentKind, SourceLocation(), SourceLocation())), + LastLocFilename(""), + LastLocLine(~0U), + FC(0), + NamePrint(Context.getSourceManager(), OF) {} + + void dumpDecl(const Decl *D); + void dumpStmt(const Stmt *S); + void dumpFullComment(const FullComment *C); + void dumpType(const Type *T); + void dumpPointerToType(const Type *T); + void dumpQualTypeNoQuals(const QualType &qt); + void dumpClassLambdaCapture(const LambdaCapture *C); + void dumpVersionTuple(const VersionTuple &VT); + + // Utilities + void dumpPointer(const void *Ptr); + void dumpSourceRange(SourceRange R); + void dumpSourceLocation(SourceLocation Loc); + void dumpQualType(const QualType &qt); + void dumpTypeOld(const Type *T); + void dumpDeclRef(const Decl &Node); + bool hasNodes(const DeclContext *DC); + void dumpLookups(const DeclContext &DC); + void dumpSelector(const Selector sel); + void dumpName(const NamedDecl &decl); + void dumpInputKind(const InputKind kind); + void dumpIntegerTypeWidths(const TargetInfo &info); + + bool alwaysEmitParent(const Decl *D); + + void emitAPInt(bool isSigned, const llvm::APInt &value); + + // C++ Utilities + void dumpAccessSpecifier(AccessSpecifier AS); + void dumpCXXCtorInitializer(const CXXCtorInitializer &Init); + void dumpDeclarationName(const DeclarationName &Name); + void dumpNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS); + void dumpTemplateArgument(const TemplateArgument &Arg); + void dumpTemplateSpecialization(const TemplateDecl *D, + const TemplateArgumentList &Args); + // void dumpTemplateParameters(const TemplateParameterList *TPL); + // void dumpTemplateArgumentListInfo(const TemplateArgumentListInfo &TALI); + // void dumpTemplateArgumentLoc(const TemplateArgumentLoc &A); + // void dumpTemplateArgumentList(const TemplateArgumentList &TAL); + // void dumpTemplateArgument(const TemplateArgument &A, + // SourceRange R = SourceRange()); + void dumpCXXBaseSpecifier(const CXXBaseSpecifier &Base); + +#define DECLARE_VISITOR(NAME) \ + int NAME##TupleSize(); \ + void Visit##NAME(const NAME *D); +#define DECLARE_LOWERCASE_VISITOR(NAME) \ + int NAME##TupleSize(); \ + void visit##NAME(const NAME *D); + + // Decls + DECLARE_VISITOR(Decl) + DECLARE_VISITOR(DeclContext) + DECLARE_VISITOR(BlockDecl) + DECLARE_VISITOR(CapturedDecl) + DECLARE_VISITOR(LinkageSpecDecl) + DECLARE_VISITOR(NamespaceDecl) + DECLARE_VISITOR(ObjCContainerDecl) + DECLARE_VISITOR(TagDecl) + DECLARE_VISITOR(TypeDecl) + DECLARE_VISITOR(TranslationUnitDecl) + DECLARE_VISITOR(NamedDecl) + DECLARE_VISITOR(ValueDecl) + DECLARE_VISITOR(TypedefDecl) + DECLARE_VISITOR(EnumDecl) + DECLARE_VISITOR(RecordDecl) + DECLARE_VISITOR(EnumConstantDecl) + DECLARE_VISITOR(IndirectFieldDecl) + DECLARE_VISITOR(FunctionDecl) + DECLARE_VISITOR(FieldDecl) + DECLARE_VISITOR(VarDecl) + // no use for these yet, ignore them + // DECLARE_VISITOR(FileScopeAsmDecl) + DECLARE_VISITOR(ImportDecl) + + // C++ Decls + DECLARE_VISITOR(UsingDirectiveDecl) + DECLARE_VISITOR(NamespaceAliasDecl) + DECLARE_VISITOR(CXXRecordDecl) + DECLARE_VISITOR(ClassTemplateSpecializationDecl) + DECLARE_VISITOR(CXXMethodDecl) + DECLARE_VISITOR(ClassTemplateDecl) + DECLARE_VISITOR(FunctionTemplateDecl) + DECLARE_VISITOR(FriendDecl) + + // void VisitTypeAliasDecl(const TypeAliasDecl *D); + // void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D); + // void VisitStaticAssertDecl(const StaticAssertDecl *D); + // template + // void VisitTemplateDeclSpecialization(ChildDumper &Children, + // const SpecializationDecl *D, + // bool DumpExplicitInst, + // bool DumpRefOnly); + // void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D); + // void VisitClassTemplateSpecializationDecl( + // const ClassTemplateSpecializationDecl *D); + // void VisitClassTemplatePartialSpecializationDecl( + // const ClassTemplatePartialSpecializationDecl *D); + // void VisitClassScopeFunctionSpecializationDecl( + // const ClassScopeFunctionSpecializationDecl *D); + // void VisitVarTemplateDecl(const VarTemplateDecl *D); + // void VisitVarTemplateSpecializationDecl( + // const VarTemplateSpecializationDecl *D); + // void VisitVarTemplatePartialSpecializationDecl( + // const VarTemplatePartialSpecializationDecl *D); + // void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D); + // void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D); + // void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D); + // void VisitUsingDecl(const UsingDecl *D); + // void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl + // *D); + // void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D); + // void VisitUsingShadowDecl(const UsingShadowDecl *D); + // void VisitLinkageSpecDecl(const LinkageSpecDecl *D); + // void VisitAccessSpecDecl(const AccessSpecDecl *D); + // + // // ObjC Decls + DECLARE_VISITOR(ObjCIvarDecl) + DECLARE_VISITOR(ObjCMethodDecl) + DECLARE_VISITOR(ObjCCategoryDecl) + DECLARE_VISITOR(ObjCCategoryImplDecl) + DECLARE_VISITOR(ObjCProtocolDecl) + DECLARE_VISITOR(ObjCInterfaceDecl) + DECLARE_VISITOR(ObjCImplementationDecl) + DECLARE_VISITOR(ObjCCompatibleAliasDecl) + DECLARE_VISITOR(ObjCPropertyDecl) + DECLARE_VISITOR(ObjCPropertyImplDecl) + + // Stmts. + DECLARE_VISITOR(Stmt) + DECLARE_VISITOR(AttributedStmt) + DECLARE_VISITOR(CXXCatchStmt) + DECLARE_VISITOR(DeclStmt) + DECLARE_VISITOR(GotoStmt) + DECLARE_VISITOR(IfStmt) + DECLARE_VISITOR(LabelStmt) + DECLARE_VISITOR(SwitchStmt) + + // Exprs + DECLARE_VISITOR(Expr) + DECLARE_VISITOR(CastExpr) + DECLARE_VISITOR(ExplicitCastExpr) + DECLARE_VISITOR(DeclRefExpr) + DECLARE_VISITOR(PredefinedExpr) + DECLARE_VISITOR(CharacterLiteral) + DECLARE_VISITOR(IntegerLiteral) + DECLARE_VISITOR(FixedPointLiteral) + DECLARE_VISITOR(FloatingLiteral) + DECLARE_VISITOR(StringLiteral) + // DECLARE_VISITOR(InitListExpr) + DECLARE_VISITOR(UnaryOperator) + DECLARE_VISITOR(UnaryExprOrTypeTraitExpr) + DECLARE_VISITOR(MemberExpr) + DECLARE_VISITOR(ExtVectorElementExpr) + DECLARE_VISITOR(BinaryOperator) + DECLARE_VISITOR(CompoundAssignOperator) + DECLARE_VISITOR(AddrLabelExpr) + DECLARE_VISITOR(BlockExpr) + DECLARE_VISITOR(OpaqueValueExpr) + DECLARE_VISITOR(OffsetOfExpr) + + // C++ + DECLARE_VISITOR(CXXNamedCastExpr) + DECLARE_VISITOR(CXXBoolLiteralExpr) + DECLARE_VISITOR(CXXConstructExpr) + DECLARE_VISITOR(CXXInheritedCtorInitExpr) + DECLARE_VISITOR(CXXBindTemporaryExpr) + DECLARE_VISITOR(MaterializeTemporaryExpr) + DECLARE_VISITOR(ExprWithCleanups) + DECLARE_VISITOR(OverloadExpr) + DECLARE_VISITOR(UnresolvedLookupExpr) + void dumpCXXTemporary(const CXXTemporary *Temporary); + DECLARE_VISITOR(LambdaExpr) + DECLARE_VISITOR(CXXNewExpr) + DECLARE_VISITOR(CXXDeleteExpr) + DECLARE_VISITOR(CXXDefaultArgExpr) + DECLARE_VISITOR(CXXDefaultInitExpr) + DECLARE_VISITOR(TypeTraitExpr) + DECLARE_VISITOR(GenericSelectionExpr) + DECLARE_VISITOR(CXXNoexceptExpr) + + // ObjC + DECLARE_VISITOR(ObjCAtCatchStmt) + DECLARE_VISITOR(ObjCEncodeExpr) + DECLARE_VISITOR(ObjCMessageExpr) + DECLARE_VISITOR(ObjCBoxedExpr) + DECLARE_VISITOR(ObjCSelectorExpr) + DECLARE_VISITOR(ObjCProtocolExpr) + DECLARE_VISITOR(ObjCPropertyRefExpr) + DECLARE_VISITOR(ObjCSubscriptRefExpr) + DECLARE_VISITOR(ObjCIvarRefExpr) + DECLARE_VISITOR(ObjCBoolLiteralExpr) + DECLARE_VISITOR(ObjCAvailabilityCheckExpr) + DECLARE_VISITOR(ObjCArrayLiteral) + DECLARE_VISITOR(ObjCDictionaryLiteral) + DECLARE_VISITOR(ObjCBridgedCastExpr) + + // Comments. + const char *getCommandName(unsigned CommandID); + void dumpComment(const Comment *C); + + // Inline comments. + DECLARE_LOWERCASE_VISITOR(Comment) + // DECLARE_LOWERCASE_VISITOR(TextComment) + // void visitInlineCommandComment(const InlineCommandComment *C); + // void visitHTMLStartTagComment(const HTMLStartTagComment *C); + // void visitHTMLEndTagComment(const HTMLEndTagComment *C); + // + // // Block comments. + // void visitBlockCommandComment(const BlockCommandComment *C); + // void visitParamCommandComment(const ParamCommandComment *C); + // void visitTParamCommandComment(const TParamCommandComment *C); + // void visitVerbatimBlockComment(const VerbatimBlockComment *C); + // void visitVerbatimBlockLineComment(const VerbatimBlockLineComment *C); + // void visitVerbatimLineComment(const VerbatimLineComment *C); + + // Types - no template type handling yet + int TypeWithChildInfoTupleSize(); + DECLARE_VISITOR(Type) + DECLARE_VISITOR(AdjustedType) + DECLARE_VISITOR(ArrayType) + DECLARE_VISITOR(ConstantArrayType) + // DECLARE_VISITOR(DependentSizedArrayType) + // DECLARE_VISITOR(IncompleteArrayType) + DECLARE_VISITOR(VariableArrayType) + DECLARE_VISITOR(AtomicType) + DECLARE_VISITOR(AttributedType) // getEquivalentType() + getAttrKind -> string + // DECLARE_VISITOR(AutoType) + DECLARE_VISITOR(BlockPointerType) + DECLARE_VISITOR(BuiltinType) + // DECLARE_VISITOR(ComplexType) + DECLARE_VISITOR(DecltypeType) + // DECLARE_VISITOR(DependentSizedExtVectorType) + DECLARE_VISITOR(FunctionType) + // DECLARE_VISITOR(FunctionNoProtoType) + DECLARE_VISITOR(FunctionProtoType) + // DECLARE_VISITOR(InjectedClassNameType) + DECLARE_VISITOR(MemberPointerType) + DECLARE_VISITOR(ObjCObjectPointerType) + DECLARE_VISITOR(ObjCObjectType) + DECLARE_VISITOR(ObjCInterfaceType) + DECLARE_VISITOR(ParenType) + DECLARE_VISITOR(PointerType) + DECLARE_VISITOR(ReferenceType) + DECLARE_VISITOR(TagType) + DECLARE_VISITOR(TypedefType) + + void dumpAttrKind(attr::Kind Kind); + void dumpAttr(const Attr *A); + DECLARE_VISITOR(Attr) + DECLARE_VISITOR(AnnotateAttr) + DECLARE_VISITOR(AvailabilityAttr) + DECLARE_VISITOR(SentinelAttr) + DECLARE_VISITOR(VisibilityAttr) + + void dumpTypeAttr(AttributedType::Kind kind); + void dumpObjCLifetimeQual(Qualifiers::ObjCLifetime qual); + + /* #define TYPE(CLASS, PARENT) DECLARE_VISITOR(CLASS##Type) */ + /* #define ABSTRACT_TYPE(CLASS, PARENT) */ + /* #include */ +}; + +//===----------------------------------------------------------------------===// +// Utilities +//===----------------------------------------------------------------------===// + +bool hasMeaningfulTypeInfo(const Type *T) { + // clang goes into an infinite loop trying to compute the TypeInfo of + // dependent types, and a width of 0 if the type doesn't have a constant size + return T && !T->isIncompleteType() && !T->isDependentType() && + T->isConstantSizeType(); +} + +std::unordered_map pointerMap; +int pointerCounter = 1; + +//@atd type pointer = int +template +void writePointer(ATDWriter &OF, bool withPointers, const void *Ptr) { + if (!Ptr) { + OF.emitInteger(0); + return; + } + if (pointerMap.find(Ptr) == pointerMap.end()) { + pointerMap[Ptr] = pointerCounter++; + } + OF.emitInteger(pointerMap[Ptr]); +} + +template +void ASTExporter::dumpPointer(const void *Ptr) { + writePointer(OF, Options.withPointers, Ptr); +} + +//@atd type source_file = string +//@atd type source_location = { +//@atd ?file : source_file option; +//@atd ?line : int option; +//@atd ?column : int option; +//@atd } +template +void ASTExporter::dumpSourceLocation(SourceLocation Loc) { + const SourceManager &SM = Context.getSourceManager(); + SourceLocation ExpLoc = + Options.useMacroExpansionLocation ? SM.getExpansionLoc(Loc) : Loc; + SourceLocation SpellingLoc = SM.getSpellingLoc(ExpLoc); + + // The general format we print out is filename:line:col, but we drop pieces + // that haven't changed since the last loc printed. + PresumedLoc PLoc = SM.getPresumedLoc(SpellingLoc); + + if (PLoc.isInvalid()) { + ObjectScope Scope(OF, 0); + return; + } + + if (strcmp(PLoc.getFilename(), LastLocFilename) != 0) { + ObjectScope Scope(OF, 3); + OF.emitTag("file"); + // Normalizing filenames matters because the current directory may change + // during the compilation of large projects. + OF.emitString(Options.normalizeSourcePath(PLoc.getFilename())); + OF.emitTag("line"); + OF.emitInteger(PLoc.getLine()); + OF.emitTag("column"); + OF.emitInteger(PLoc.getColumn()); + } else if (PLoc.getLine() != LastLocLine) { + ObjectScope Scope(OF, 2); + OF.emitTag("line"); + OF.emitInteger(PLoc.getLine()); + OF.emitTag("column"); + OF.emitInteger(PLoc.getColumn()); + } else { + ObjectScope Scope(OF, 1); + OF.emitTag("column"); + OF.emitInteger(PLoc.getColumn()); + } + LastLocFilename = PLoc.getFilename(); + LastLocLine = PLoc.getLine(); + // TODO: lastLocColumn +} + +//@atd type source_range = (source_location * source_location) +template +void ASTExporter::dumpSourceRange(SourceRange R) { + TupleScope Scope(OF, 2); + dumpSourceLocation(R.getBegin()); + dumpSourceLocation(R.getEnd()); +} + +//@atd type qual_type = { +//@atd type_ptr : type_ptr; +//@atd ~is_const : bool; +//@atd ~is_restrict : bool; +//@atd ~is_volatile : bool; +//@atd } +template +void ASTExporter::dumpQualType(const QualType &qt) { + clang::Qualifiers Quals = + qt.isNull() ? clang::Qualifiers() : qt.getQualifiers(); + bool isConst = Quals.hasConst(); + bool isRestrict = Quals.hasRestrict(); + bool isVolatile = Quals.hasVolatile(); + ObjectScope oScope(OF, 1 + isConst + isVolatile + isRestrict); + OF.emitTag("type_ptr"); + dumpQualTypeNoQuals(qt); + OF.emitFlag("is_const", isConst); + OF.emitFlag("is_restrict", isRestrict); + OF.emitFlag("is_volatile", isVolatile); +} + +//@atd type named_decl_info = { +//@atd name : string; +//@atd qual_name : string list; +//@atd } +template +void ASTExporter::dumpName(const NamedDecl &Decl) { + // dump name + ObjectScope oScope(OF, 2); + + OF.emitTag("name"); + + std::string name = Decl.getNameAsString(); + if (name.length() == 0) { + const FieldDecl *FD = dyn_cast(&Decl); + if (FD) { + name = "__anon_field_" + std::to_string(FD->getFieldIndex()); + } + } + OF.emitString(name); + + OF.emitTag("qual_name"); + NamePrint.printDeclName(Decl); +} + +//@atd type decl_ref = { +//@atd kind : decl_kind; +//@atd decl_pointer : pointer; +//@atd ?name : named_decl_info option; +//@atd ~is_hidden : bool; +//@atd ?qual_type : qual_type option +//@atd } +//@atd type decl_kind = [ +#define DECL(DERIVED, BASE) //@atd | DERIVED +#define ABSTRACT_DECL(DECL) DECL +#include +//@atd ] +template +void ASTExporter::dumpDeclRef(const Decl &D) { + const NamedDecl *ND = dyn_cast(&D); + const ValueDecl *VD = dyn_cast(&D); + bool IsHidden = ND && ND->isHidden(); + ObjectScope Scope(OF, 2 + (bool)ND + (bool)VD + IsHidden); + + OF.emitTag("kind"); + OF.emitSimpleVariant(D.getDeclKindName()); + OF.emitTag("decl_pointer"); + dumpPointer(&D); + if (ND) { + OF.emitTag("name"); + dumpName(*ND); + OF.emitFlag("is_hidden", IsHidden); + } + if (VD) { + OF.emitTag("qual_type"); + dumpQualType(VD->getType()); + } +} + +template +int ASTExporter::DeclContextTupleSize() { + return 2; +} +//@atd #define decl_context_tuple decl list * decl_context_info +//@atd type decl_context_info = { +//@atd ~has_external_lexical_storage : bool; +//@atd ~has_external_visible_storage : bool +//@atd } +template +void ASTExporter::VisitDeclContext(const DeclContext *DC) { + if (!DC) { + { + ArrayScope Scope(OF, 0); + } + { ObjectScope Scope(OF, 0); } + return; + } + { + std::vector declsToDump; + for (auto I : DC->decls()) { + declsToDump.push_back(I); + } + /* Some typedefs are not part of AST. 'instancetype' is one of them. + Export it nevertheless as part of TranslationUnitDecl context. */ + // getObjCInstanceType() should return null type when 'instancetype' is not + // known yet - it doesn't work this way due to bug in clang, but keep + // the check for when the bug is fixed. + if (isa(DC) && + Context.getObjCInstanceType().getTypePtrOrNull()) { + declsToDump.push_back(Context.getObjCInstanceTypeDecl()); + } + ArrayScope Scope(OF, declsToDump.size()); + for (auto I : declsToDump) { + dumpDecl(I); + } + } + { + bool HasExternalLexicalStorage = DC->hasExternalLexicalStorage(); + bool HasExternalVisibleStorage = DC->hasExternalVisibleStorage(); + ObjectScope Scope(OF, + 0 + HasExternalLexicalStorage + + HasExternalVisibleStorage); // not covered by tests + + OF.emitFlag("has_external_lexical_storage", HasExternalLexicalStorage); + OF.emitFlag("has_external_visible_storage", HasExternalVisibleStorage); + } +} + +//@atd type lookups = { +//@atd decl_ref : decl_ref; +//@atd ?primary_context_pointer : pointer option; +//@atd lookups : lookup list; +//@atd ~has_undeserialized_decls : bool; +//@atd } +//@atd type lookup = { +//@atd decl_name : string; +//@atd decl_refs : decl_ref list; +//@atd } +template +void ASTExporter::dumpLookups(const DeclContext &DC) { + ObjectScope Scope(OF, 4); // not covered by tests + + OF.emitTag("decl_ref"); + dumpDeclRef(cast(DC)); + + const DeclContext *Primary = DC.getPrimaryContext(); + if (Primary != &DC) { + OF.emitTag("primary_context_pointer"); + dumpPointer(cast(Primary)); + } + + OF.emitTag("lookups"); + { + ArrayScope Scope(OF); + DeclContext::all_lookups_iterator I = Primary->noload_lookups_begin(), + E = Primary->noload_lookups_end(); + while (I != E) { + DeclarationName Name = I.getLookupName(); + DeclContextLookupResult R = *I++; + + ObjectScope Scope(OF, 2); // not covered by tests + OF.emitTag("decl_name"); + OF.emitString(Name.getAsString()); + + OF.emitTag("decl_refs"); + { + ArrayScope Scope(OF); + for (DeclContextLookupResult::iterator RI = R.begin(), RE = R.end(); + RI != RE; + ++RI) { + dumpDeclRef(**RI); + } + } + } + } + + bool HasUndeserializedLookups = Primary->hasExternalVisibleStorage(); + OF.emitFlag("has_undeserialized_decls", HasUndeserializedLookups); +} + +//===----------------------------------------------------------------------===// +// C++ Utilities +//===----------------------------------------------------------------------===// + +//@atd type access_specifier = [ None | Public | Protected | Private ] +template +void ASTExporter::dumpAccessSpecifier(AccessSpecifier AS) { + switch (AS) { + case AS_public: + OF.emitSimpleVariant("Public"); + break; + case AS_protected: + OF.emitSimpleVariant("Protected"); + break; + case AS_private: + OF.emitSimpleVariant("Private"); + break; + case AS_none: + OF.emitSimpleVariant("None"); + break; + } +} + +//@atd type cxx_ctor_initializer = { +//@atd subject : cxx_ctor_initializer_subject; +//@atd source_range : source_range; +//@atd ?init_expr : stmt option; +//@atd } +//@atd type cxx_ctor_initializer_subject = [ +//@atd Member of decl_ref +//@atd | Delegating of type_ptr +//@atd | BaseClass of (type_ptr * bool) +//@atd ] +template +void ASTExporter::dumpCXXCtorInitializer( + const CXXCtorInitializer &Init) { + const Expr *E = Init.getInit(); + ObjectScope Scope(OF, 2 + (bool)E); + + OF.emitTag("subject"); + const FieldDecl *FD = Init.getAnyMember(); + if (FD) { + VariantScope Scope(OF, "Member"); + dumpDeclRef(*FD); + } else if (Init.isDelegatingInitializer()) { + VariantScope Scope(OF, "Delegating"); + dumpQualTypeNoQuals(Init.getTypeSourceInfo()->getType()); + } else { + VariantScope Scope(OF, "BaseClass"); + { + TupleScope Scope(OF, 2); + dumpQualTypeNoQuals(Init.getTypeSourceInfo()->getType()); + OF.emitBoolean(Init.isBaseVirtual()); + } + } + OF.emitTag("source_range"); + dumpSourceRange(Init.getSourceRange()); + if (E) { + OF.emitTag("init_expr"); + dumpStmt(E); + } +} + +//@atd type declaration_name = { +//@atd kind : declaration_name_kind; +//@atd name : string; +//@atd } +//@atd type declaration_name_kind = [ +//@atd Identifier +//@atd | ObjCZeroArgSelector +//@atd | ObjCOneArgSelector +//@atd | ObjCMultiArgSelector +//@atd | CXXConstructorName +//@atd | CXXDestructorName +//@atd | CXXConversionFunctionName +//@atd | CXXOperatorName +//@atd | CXXLiteralOperatorName +//@atd | CXXUsingDirective +//@atd | CXXDeductionGuideName +//@atd ] +template +void ASTExporter::dumpDeclarationName(const DeclarationName &Name) { + ObjectScope Scope(OF, 2); // not covered by tests + OF.emitTag("kind"); + switch (Name.getNameKind()) { + case DeclarationName::Identifier: + OF.emitSimpleVariant("Identifier"); + break; + case DeclarationName::ObjCZeroArgSelector: + OF.emitSimpleVariant("ObjCZeroArgSelector"); + break; + case DeclarationName::ObjCOneArgSelector: + OF.emitSimpleVariant("ObjCOneArgSelector"); + break; + case DeclarationName::ObjCMultiArgSelector: + OF.emitSimpleVariant("ObjCMultiArgSelector"); + break; + case DeclarationName::CXXConstructorName: + OF.emitSimpleVariant("CXXConstructorName"); + break; + case DeclarationName::CXXDestructorName: + OF.emitSimpleVariant("CXXDestructorName"); + break; + case DeclarationName::CXXConversionFunctionName: + OF.emitSimpleVariant("CXXConversionFunctionName"); + break; + case DeclarationName::CXXOperatorName: + OF.emitSimpleVariant("CXXOperatorName"); + break; + case DeclarationName::CXXLiteralOperatorName: + OF.emitSimpleVariant("CXXLiteralOperatorName"); + break; + case DeclarationName::CXXUsingDirective: + OF.emitSimpleVariant("CXXUsingDirective"); + break; + case DeclarationName::CXXDeductionGuideName: + OF.emitSimpleVariant("CXXDeductionGuideName"); + break; + } + OF.emitTag("name"); + OF.emitString(Name.getAsString()); +} +//@atd type nested_name_specifier_loc = { +//@atd kind : specifier_kind; +//@atd ?ref : decl_ref option; +//@atd } +//@atd type specifier_kind = [ +//@atd Identifier +//@atd | Namespace +//@atd | NamespaceAlias +//@atd | TypeSpec +//@atd | TypeSpecWithTemplate +//@atd | Global +//@atd | Super +//@atd ] +template +void ASTExporter::dumpNestedNameSpecifierLoc( + NestedNameSpecifierLoc NNS) { + SmallVector NestedNames; + while (NNS) { + NestedNames.push_back(NNS); + NNS = NNS.getPrefix(); + } + ArrayScope Scope(OF, NestedNames.size()); + while (!NestedNames.empty()) { + NNS = NestedNames.pop_back_val(); + NestedNameSpecifier::SpecifierKind Kind = + NNS.getNestedNameSpecifier()->getKind(); + ObjectScope Scope(OF, 2); + OF.emitTag("kind"); + switch (Kind) { + case NestedNameSpecifier::Identifier: + OF.emitSimpleVariant("Identifier"); + break; + case NestedNameSpecifier::Namespace: + OF.emitSimpleVariant("Namespace"); + OF.emitTag("ref"); + dumpDeclRef(*NNS.getNestedNameSpecifier()->getAsNamespace()); + break; + case NestedNameSpecifier::NamespaceAlias: + OF.emitSimpleVariant("NamespaceAlias"); + OF.emitTag("ref"); + dumpDeclRef(*NNS.getNestedNameSpecifier()->getAsNamespaceAlias()); + break; + case NestedNameSpecifier::TypeSpec: + OF.emitSimpleVariant("TypeSpec"); + break; + case NestedNameSpecifier::TypeSpecWithTemplate: + OF.emitSimpleVariant("TypeSpecWithTemplate"); + break; + case NestedNameSpecifier::Global: + OF.emitSimpleVariant("Global"); + break; + case NestedNameSpecifier::Super: + OF.emitSimpleVariant("Super"); + break; + } + } +} + +// template +// void ASTExporter::dumpTemplateParameters(const +// TemplateParameterList *TPL) { +// if (!TPL) +// return; +// +// for (TemplateParameterList::const_iterator I = TPL->begin(), E = TPL->end(); +// I != E; ++I) +// dumpDecl(*I); +//} +// +// template +// void ASTExporter::dumpTemplateArgumentListInfo( +// const TemplateArgumentListInfo &TALI) { +// for (unsigned i = 0, e = TALI.size(); i < e; ++i) { +// dumpTemplateArgumentLoc(TALI[i]); +// } +//} +// +// template +// void ASTExporter::dumpTemplateArgumentLoc(const +// TemplateArgumentLoc &A) { +// dumpTemplateArgument(A.getArgument(), A.getSourceRange()); +//} +// +// template +// void ASTExporter::dumpTemplateArgumentList(const +// TemplateArgumentList &TAL) { +// for (unsigned i = 0, e = TAL.size(); i < e; ++i) +// dumpTemplateArgument(TAL[i]); +//} +// +// template +// void ASTExporter::dumpTemplateArgument(const TemplateArgument &A, +// SourceRange R) { +// ObjectScope Scope(OF); +// OS << "TemplateArgument"; +// if (R.isValid()) +// dumpSourceRange(R); +// +// switch (A.getKind()) { +// case TemplateArgument::Null: +// OS << " null"; +// break; +// case TemplateArgument::Type: +// OS << " type"; +// dumpQualType(A.getAsType()); +// break; +// case TemplateArgument::Declaration: +// OS << " decl"; +// dumpDeclRef(A.getAsDecl()); +// break; +// case TemplateArgument::NullPtr: +// OS << " nullptr"; +// break; +// case TemplateArgument::Integral: +// OS << " integral " << A.getAsIntegral(); +// break; +// case TemplateArgument::Template: +// OS << " template "; +// // FIXME: do not use the local dump method +// A.getAsTemplate().dump(OS); +// break; +// case TemplateArgument::TemplateExpansion: +// OS << " template expansion"; +// // FIXME: do not use the local dump method +// A.getAsTemplateOrTemplatePattern().dump(OS); +// break; +// case TemplateArgument::Expression: +// OS << " expr"; +// dumpStmt(A.getAsExpr()); +// break; +// case TemplateArgument::Pack: +// OS << " pack"; +// for (TemplateArgument::pack_iterator I = A.pack_begin(), E = A.pack_end(); +// I != E; ++I) { +// dumpTemplateArgument(*I); +// } +// break; +// } +//} + +template +bool ASTExporter::alwaysEmitParent(const Decl *D) { + if (isa(D) || isa(D) || isa(D) || + isa(D) || isa(D) || + isa(D) || isa(D) || + isa(D) || isa(D) || + isa(D) || isa(D) + || isa(D) ) { + return true; + } + return false; +} +//===----------------------------------------------------------------------===// +// Decl dumping methods. +//===----------------------------------------------------------------------===// + +#define DECL(DERIVED, BASE) //@atd #define @DERIVED@_decl_tuple @BASE@_tuple +#define ABSTRACT_DECL(DECL) DECL +#include +template +void ASTExporter::dumpDecl(const Decl *D) { + if (!D) { + // We use a fixed EmptyDecl node to represent null pointers + D = NullPtrDecl; + } + VariantScope Scope(OF, std::string(D->getDeclKindName()) + "Decl"); + { + TupleScope Scope(OF, ASTExporter::tupleSizeOfDeclKind(D->getKind())); + ConstDeclVisitor>::Visit(D); + } +} + +template +int ASTExporter::DeclTupleSize() { + return 1; +} + +//@atd #define decl_tuple decl_info +//@atd type decl_info = { +//@atd pointer : pointer; +//@atd ?parent_pointer : pointer option; +//@atd source_range : source_range; +//@atd ?owning_module : string option; +//@atd ~is_hidden : bool; +//@atd ~is_implicit : bool; +//@atd ~is_used : bool; +//@atd ~is_this_declaration_referenced : bool; +//@atd ~is_invalid_decl : bool; +//@atd ~attributes : attribute list; +//@atd ?full_comment : comment option; +//@atd ~access : access_specifier +//@atd } +template +void ASTExporter::VisitDecl(const Decl *D) { + { + bool ShouldEmitParentPointer = + alwaysEmitParent(D) || + D->getLexicalDeclContext() != D->getDeclContext(); + Module *M = D->getImportedOwningModule(); + if (!M) { + M = D->getLocalOwningModule(); + } + const NamedDecl *ND = dyn_cast(D); + bool IsNDHidden = ND && ND->isHidden(); + bool IsDImplicit = D->isImplicit(); + bool IsDUsed = D->isUsed(); + bool IsDReferenced = D->isThisDeclarationReferenced(); + bool IsDInvalid = D->isInvalidDecl(); + bool HasAttributes = D->hasAttrs(); + const FullComment *Comment = + Options.dumpComments + ? D->getASTContext().getLocalCommentForDeclUncached(D) + : nullptr; + AccessSpecifier Access = D->getAccess(); + bool HasAccess = Access != AccessSpecifier::AS_none; + int size = 2 + ShouldEmitParentPointer + (bool)M + IsNDHidden + + IsDImplicit + IsDUsed + IsDReferenced + IsDInvalid + + HasAttributes + (bool)Comment + HasAccess; + ObjectScope Scope(OF, size); + + OF.emitTag("pointer"); + dumpPointer(D); + if (ShouldEmitParentPointer) { + OF.emitTag("parent_pointer"); + dumpPointer(cast(D->getDeclContext())); + } + + OF.emitTag("source_range"); + dumpSourceRange(D->getSourceRange()); + if (M) { + OF.emitTag("owning_module"); + OF.emitString(M->getFullModuleName()); + } + OF.emitFlag("is_hidden", IsNDHidden); + OF.emitFlag("is_implicit", IsDImplicit); + OF.emitFlag("is_used", IsDUsed); + OF.emitFlag("is_this_declaration_referenced", IsDReferenced); + OF.emitFlag("is_invalid_decl", IsDInvalid); + + if (HasAttributes) { + OF.emitTag("attributes"); + ArrayScope ArrayAttr(OF, D->getAttrs().size()); + for (auto I : D->getAttrs()) { + dumpAttr(I); + } + } + + if (Comment) { + OF.emitTag("full_comment"); + dumpFullComment(Comment); + } + + if (HasAccess) { + OF.emitTag("access"); + dumpAccessSpecifier(Access); + } + } +} + +template +int ASTExporter::CapturedDeclTupleSize() { + return DeclTupleSize() + DeclContextTupleSize(); +} +//@atd #define captured_decl_tuple decl_tuple * decl_context_tuple +template +void ASTExporter::VisitCapturedDecl(const CapturedDecl *D) { + VisitDecl(D); + VisitDeclContext(D); +} + +template +int ASTExporter::LinkageSpecDeclTupleSize() { + return DeclTupleSize() + DeclContextTupleSize(); +} +//@atd #define linkage_spec_decl_tuple decl_tuple * decl_context_tuple +template +void ASTExporter::VisitLinkageSpecDecl(const LinkageSpecDecl *D) { + VisitDecl(D); + VisitDeclContext(D); +} + +template +int ASTExporter::NamespaceDeclTupleSize() { + return NamedDeclTupleSize() + DeclContextTupleSize() + 1; +} +//@atd #define namespace_decl_tuple named_decl_tuple * decl_context_tuple * namespace_decl_info +//@atd type namespace_decl_info = { +//@atd ~is_inline : bool; +//@atd ?original_namespace : decl_ref option; +//@atd } +template +void ASTExporter::VisitNamespaceDecl(const NamespaceDecl *D) { + VisitNamedDecl(D); + VisitDeclContext(D); + + bool IsInline = D->isInline(); + bool IsOriginalNamespace = D->isOriginalNamespace(); + ObjectScope Scope(OF, 0 + IsInline + !IsOriginalNamespace); + + OF.emitFlag("is_inline", IsInline); + if (!IsOriginalNamespace) { + OF.emitTag("original_namespace"); + dumpDeclRef(*D->getOriginalNamespace()); + } +} + +template +int ASTExporter::ObjCContainerDeclTupleSize() { + return NamedDeclTupleSize() + DeclContextTupleSize(); +} +//@atd #define obj_c_container_decl_tuple named_decl_tuple * decl_context_tuple +template +void ASTExporter::VisitObjCContainerDecl( + const ObjCContainerDecl *D) { + VisitNamedDecl(D); + VisitDeclContext(D); +} + +template +int ASTExporter::TagDeclTupleSize() { + return TypeDeclTupleSize() + DeclContextTupleSize() + 1; +} +//@atd type tag_kind = [ +//@atd TTK_Struct +//@atd | TTK_Interface +//@atd | TTK_Union +//@atd | TTK_Class +//@atd | TTK_Enum +//@atd ] +//@atd #define tag_decl_tuple type_decl_tuple * decl_context_tuple * tag_kind +template +void ASTExporter::VisitTagDecl(const TagDecl *D) { + VisitTypeDecl(D); + VisitDeclContext(D); + switch (D->getTagKind()) { + case TagTypeKind::TTK_Struct: + OF.emitSimpleVariant("TTK_Struct"); + break; + case TagTypeKind::TTK_Interface: + OF.emitSimpleVariant("TTK_Interface"); + break; + case TagTypeKind::TTK_Union: + OF.emitSimpleVariant("TTK_Union"); + break; + case TagTypeKind::TTK_Class: + OF.emitSimpleVariant("TTK_Class"); + break; + case TagTypeKind::TTK_Enum: + OF.emitSimpleVariant("TTK_Enum"); + break; + } +} + +template +int ASTExporter::TypeDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define type_decl_tuple named_decl_tuple * type_ptr +template +void ASTExporter::VisitTypeDecl(const TypeDecl *D) { + VisitNamedDecl(D); + const Type *T = D->getTypeForDecl(); + dumpPointerToType(T); +} + +template +int ASTExporter::ValueDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define value_decl_tuple named_decl_tuple * qual_type +template +void ASTExporter::VisitValueDecl(const ValueDecl *D) { + VisitNamedDecl(D); + dumpQualType(D->getType()); +} + +template +int ASTExporter::TranslationUnitDeclTupleSize() { + return DeclTupleSize() + DeclContextTupleSize() + 1; +} +//@atd type input_kind = [ +//@atd IK_None +//@atd | IK_Asm +//@atd | IK_C +//@atd | IK_CXX +//@atd | IK_ObjC +//@atd | IK_ObjCXX +//@atd | IK_OpenCL +//@atd | IK_CUDA +//@atd | IK_HIP +//@atd | IK_RenderScript +//@atd | IK_LLVM_IR +//@atd ] +template +void ASTExporter::dumpInputKind(InputKind kind) { + // Despite here we deal only with the language field of InputKind, there are + // new info in InputKind that can still be used, e.g. whether the source is + // preprocessed (PP), or precompiled. + switch (kind.getLanguage()) { + case InputKind::Unknown: + OF.emitSimpleVariant("IK_None"); + break; + case InputKind::Asm: + OF.emitSimpleVariant("IK_Asm"); + break; + case InputKind::C: + OF.emitSimpleVariant("IK_C"); + break; + case InputKind::CXX: + OF.emitSimpleVariant("IK_CXX"); + break; + case InputKind::ObjC: + OF.emitSimpleVariant("IK_ObjC"); + break; + case InputKind::ObjCXX: + OF.emitSimpleVariant("IK_ObjCXX"); + break; + case InputKind::OpenCL: + OF.emitSimpleVariant("IK_OpenCL"); + break; + case InputKind::CUDA: + OF.emitSimpleVariant("IK_CUDA"); + break; + case InputKind::RenderScript: + OF.emitSimpleVariant("IK_RenderScript"); + break; + case InputKind::LLVM_IR: + OF.emitSimpleVariant("IK_LLVM_IR"); + break; + case InputKind::HIP: + OF.emitSimpleVariant("IK_HIP"); + break; + } +} +//@atd type integer_type_widths = { +//@atd char_type : int; +//@atd short_type : int; +//@atd int_type : int; +//@atd long_type : int; +//@atd longlong_type : int; +//@atd } +template +void ASTExporter::dumpIntegerTypeWidths(const TargetInfo &info) { + ObjectScope Scope(OF, 5); + OF.emitTag("char_type"); + OF.emitInteger(info.getCharWidth()); + OF.emitTag("short_type"); + OF.emitInteger(info.getShortWidth()); + OF.emitTag("int_type"); + OF.emitInteger(info.getIntWidth()); + OF.emitTag("long_type"); + OF.emitInteger(info.getLongWidth()); + OF.emitTag("longlong_type"); + OF.emitInteger(info.getLongLongWidth()); +} +//@atd #define translation_unit_decl_tuple decl_tuple * decl_context_tuple * translation_unit_decl_info +//@atd type translation_unit_decl_info = { +//@atd input_path : source_file; +//@atd input_kind : input_kind; +//@atd integer_type_widths : integer_type_widths; +//@atd types : c_type list; +//@atd } +template +void ASTExporter::VisitTranslationUnitDecl( + const TranslationUnitDecl *D) { + VisitDecl(D); + VisitDeclContext(D); + ObjectScope Scope(OF, 4); + OF.emitTag("input_path"); + OF.emitString( + Options.normalizeSourcePath(Options.inputFile.getFile().str().c_str())); + OF.emitTag("input_kind"); + dumpInputKind(Options.inputFile.getKind()); + OF.emitTag("integer_type_widths"); + dumpIntegerTypeWidths(Context.getTargetInfo()); + OF.emitTag("types"); + const auto &types = Context.getTypes(); + ArrayScope aScope(OF, types.size() + 1); // + 1 for nullptr + for (const Type *type : types) { + dumpType(type); + } + // Just in case, add NoneType to dumped types + dumpType(nullptr); +} + +template +int ASTExporter::NamedDeclTupleSize() { + return DeclTupleSize() + 1; +} +//@atd #define named_decl_tuple decl_tuple * named_decl_info +template +void ASTExporter::VisitNamedDecl(const NamedDecl *D) { + VisitDecl(D); + dumpName(*D); +} + +template +int ASTExporter::TypedefDeclTupleSize() { + return ASTExporter::TypedefNameDeclTupleSize() + 1; +} +//@atd #define typedef_decl_tuple typedef_name_decl_tuple * typedef_decl_info +//@atd type typedef_decl_info = { +//@atd ~is_module_private : bool +//@atd } +template +void ASTExporter::VisitTypedefDecl(const TypedefDecl *D) { + ASTExporter::VisitTypedefNameDecl(D); + + bool IsModulePrivate = D->isModulePrivate(); + ObjectScope Scope(OF, 0 + IsModulePrivate); + + OF.emitFlag("is_module_private", IsModulePrivate); +} + +template +int ASTExporter::EnumDeclTupleSize() { + return TagDeclTupleSize() + 1; +} +//@atd #define enum_decl_tuple tag_decl_tuple * enum_decl_info +//@atd type enum_decl_info = { +//@atd ?scope : enum_decl_scope option; +//@atd ~is_module_private : bool +//@atd } +//@atd type enum_decl_scope = [Class | Struct] +template +void ASTExporter::VisitEnumDecl(const EnumDecl *D) { + VisitTagDecl(D); + + bool IsScoped = D->isScoped(); + bool IsModulePrivate = D->isModulePrivate(); + ObjectScope Scope(OF, 0 + IsScoped + IsModulePrivate); // not covered by tests + + if (IsScoped) { + OF.emitTag("scope"); + if (D->isScopedUsingClassTag()) + OF.emitSimpleVariant("Class"); + else + OF.emitSimpleVariant("Struct"); + } + OF.emitFlag("is_module_private", IsModulePrivate); +} + +template +int ASTExporter::RecordDeclTupleSize() { + return TagDeclTupleSize() + 1; +} +//@atd #define record_decl_tuple tag_decl_tuple * record_decl_info +//@atd type record_decl_info = { +//@atd definition_ptr : pointer; +//@atd ~is_module_private : bool; +//@atd ~is_complete_definition : bool; +//@atd ~is_dependent_type : bool; +//@atd } +template +void ASTExporter::VisitRecordDecl(const RecordDecl *D) { + VisitTagDecl(D); + + bool IsModulePrivate = D->isModulePrivate(); + bool IsCompleteDefinition = D->isCompleteDefinition(); + bool IsDependentType = D->isDependentType(); + ObjectScope Scope( + OF, 1 + IsModulePrivate + IsCompleteDefinition + IsDependentType); + OF.emitTag("definition_ptr"); + dumpPointer(D->getDefinition()); + OF.emitFlag("is_module_private", IsModulePrivate); + OF.emitFlag("is_complete_definition", IsCompleteDefinition); + OF.emitFlag("is_dependent_type", IsDependentType); +} + +template +int ASTExporter::EnumConstantDeclTupleSize() { + return ValueDeclTupleSize() + 1; +} +//@atd #define enum_constant_decl_tuple value_decl_tuple * enum_constant_decl_info +//@atd type enum_constant_decl_info = { +//@atd ?init_expr : stmt option +//@atd } +template +void ASTExporter::VisitEnumConstantDecl(const EnumConstantDecl *D) { + VisitValueDecl(D); + + const Expr *Init = D->getInitExpr(); + ObjectScope Scope(OF, 0 + (bool)Init); // not covered by tests + + if (Init) { + OF.emitTag("init_expr"); + dumpStmt(Init); + } +} + +template +int ASTExporter::IndirectFieldDeclTupleSize() { + return ValueDeclTupleSize() + 1; +} +//@atd #define indirect_field_decl_tuple value_decl_tuple * decl_ref list +template +void ASTExporter::VisitIndirectFieldDecl( + const IndirectFieldDecl *D) { + VisitValueDecl(D); + ArrayScope Scope( + OF, + std::distance(D->chain_begin(), D->chain_end())); // not covered by tests + for (auto I : D->chain()) { + dumpDeclRef(*I); + } +} + +template +int ASTExporter::FunctionDeclTupleSize() { + return ASTExporter::DeclaratorDeclTupleSize() + 1; +} +//@atd #define function_decl_tuple declarator_decl_tuple * function_decl_info +//@atd type function_decl_info = { +//@atd ?mangled_name : string option; +//@atd ~is_cpp : bool; +//@atd ~is_inline : bool; +//@atd ~is_module_private : bool; +//@atd ~is_pure : bool; +//@atd ~is_delete_as_written : bool; +//@atd ~is_no_return : bool; +//@atd ~is_variadic : bool; +//@atd ~is_static : bool; +//@atd ~parameters : decl list; +//@atd ?decl_ptr_with_body : pointer option; +//@atd ?body : stmt option; +//@atd ?template_specialization : template_specialization_info option +//@atd } +template +void ASTExporter::VisitFunctionDecl(const FunctionDecl *D) { + ASTExporter::VisitDeclaratorDecl(D); + // We purposedly do not call VisitDeclContext(D). + + bool ShouldMangleName = Mangler->shouldMangleDeclName(D); + bool IsInlineSpecified = D->isInlineSpecified(); + bool IsModulePrivate = D->isModulePrivate(); + bool IsPure = D->isPure(); + bool IsDeletedAsWritten = D->isDeletedAsWritten(); + bool IsCpp = Mangler->getASTContext().getLangOpts().CPlusPlus; + bool IsVariadic = D->isVariadic(); + bool IsStatic = false; // static functions + if (D->getStorageClass() == SC_Static) { + IsStatic = true; + } + auto IsNoReturn = D->isNoReturn(); + bool HasParameters = !D->param_empty(); + const FunctionDecl *DeclWithBody = D; + // FunctionDecl::hasBody() will set DeclWithBody pointer to decl that + // has body. If there is no body in all decls of that function, + // then we need to set DeclWithBody to nullptr manually + if (!D->hasBody(DeclWithBody)) { + DeclWithBody = nullptr; + } + bool HasDeclarationBody = D->doesThisDeclarationHaveABody(); + FunctionTemplateDecl *TemplateDecl = D->getPrimaryTemplate(); + int size = ShouldMangleName + IsCpp + IsInlineSpecified + IsModulePrivate + + IsPure + IsDeletedAsWritten + IsNoReturn + IsVariadic + + IsStatic + HasParameters + (bool)DeclWithBody + + HasDeclarationBody + (bool)TemplateDecl; + ObjectScope Scope(OF, size); + + if (ShouldMangleName) { + OF.emitTag("mangled_name"); + SmallString<64> Buf; + llvm::raw_svector_ostream StrOS(Buf); + if (const auto *CD = dyn_cast(D)) { + Mangler->mangleCXXCtor(CD, Ctor_Complete, StrOS); + } else if (const auto *DD = dyn_cast(D)) { + Mangler->mangleCXXDtor(DD, Dtor_Deleting, StrOS); + } else { + Mangler->mangleName(D, StrOS); + } + // mangled names can get ridiculously long, so hash them to a fixed size + OF.emitString(std::to_string(fnv64Hash(StrOS))); + } + + OF.emitFlag("is_cpp", IsCpp); + OF.emitFlag("is_inline", IsInlineSpecified); + OF.emitFlag("is_module_private", IsModulePrivate); + OF.emitFlag("is_pure", IsPure); + OF.emitFlag("is_delete_as_written", IsDeletedAsWritten); + OF.emitFlag("is_no_return", IsNoReturn); + OF.emitFlag("is_variadic", IsVariadic); + OF.emitFlag("is_static", IsStatic); + + // if (const FunctionProtoType *FPT = + // D->getType()->getAs()) { + // FunctionProtoType::ExtProtoInfo EPI = FPT->getExtProtoInfo(); + // switch (EPI.ExceptionSpec.Type) { + // default: break; + // case EST_Unevaluated: + // OS << " noexcept-unevaluated " << EPI.ExceptionSpec.SourceDecl; + // break; + // case EST_Uninstantiated: + // OS << " noexcept-uninstantiated " << EPI.ExceptionSpec.SourceTemplate; + // break; + // } + // } + // + // const FunctionTemplateSpecializationInfo *FTSI = + // D->getTemplateSpecializationInfo(); + // bool HasTemplateSpecialization = FTSI; + // + // + // if (HasTemplateSpecialization) { + // dumpTemplateArgumentList(*FTSI->TemplateArguments); + // } + + if (HasParameters) { + FunctionDecl::param_const_iterator I = D->param_begin(), E = D->param_end(); + if (I != E) { + OF.emitTag("parameters"); + ArrayScope Scope(OF, std::distance(I, E)); + for (; I != E; ++I) { + dumpDecl(*I); + } + } + } + + if (DeclWithBody) { + OF.emitTag("decl_ptr_with_body"); + dumpPointer(DeclWithBody); + } + + if (HasDeclarationBody) { + const Stmt *Body = D->getBody(); + if (Body) { + OF.emitTag("body"); + dumpStmt(Body); + } + } + if (TemplateDecl) { + OF.emitTag("template_specialization"); + dumpTemplateSpecialization(TemplateDecl, + *D->getTemplateSpecializationArgs()); + } +} + +template +int ASTExporter::FieldDeclTupleSize() { + return ASTExporter::DeclaratorDeclTupleSize() + 1; +} +//@atd #define field_decl_tuple declarator_decl_tuple * field_decl_info +//@atd type field_decl_info = { +//@atd ~is_mutable : bool; +//@atd ~is_module_private : bool; +//@atd ?init_expr : stmt option; +//@atd ?bit_width_expr : stmt option +//@atd } +template +void ASTExporter::VisitFieldDecl(const FieldDecl *D) { + ASTExporter::VisitDeclaratorDecl(D); + + bool IsMutable = D->isMutable(); + bool IsModulePrivate = D->isModulePrivate(); + bool HasBitWidth = D->isBitField() && D->getBitWidth(); + Expr *Init = D->getInClassInitializer(); + ObjectScope Scope(OF, + 0 + IsMutable + IsModulePrivate + HasBitWidth + + (bool)Init); // not covered by tests + + OF.emitFlag("is_mutable", IsMutable); + OF.emitFlag("is_module_private", IsModulePrivate); + + if (HasBitWidth) { + OF.emitTag("bit_width_expr"); + dumpStmt(D->getBitWidth()); + } + + if (Init) { + OF.emitTag("init_expr"); + dumpStmt(Init); + } +} + +template +int ASTExporter::VarDeclTupleSize() { + return ASTExporter::DeclaratorDeclTupleSize() + 1; +} +//@atd #define var_decl_tuple declarator_decl_tuple * var_decl_info +//@atd type var_decl_info = { +//@atd ~is_global : bool; +//@atd ~is_extern : bool; +//@atd ~is_static : bool; +//@atd ~is_static_local : bool; +//@atd ~is_static_data_member : bool; +//@atd ~is_const_expr : bool; +//@atd ~is_init_ice : bool; +//@atd ?init_expr : stmt option; +//@atd ~is_init_expr_cxx11_constant: bool; +//@atd ?parm_index_in_function : int option; +//@atd } +template +void ASTExporter::VisitVarDecl(const VarDecl *D) { + ASTExporter::VisitDeclaratorDecl(D); + + bool IsGlobal = D->hasGlobalStorage(); // including static function variables + bool IsExtern = D->hasExternalStorage(); + bool IsStatic = false; // static variables + if (D->getStorageClass() == SC_Static) { + IsStatic = true; + } + bool IsStaticLocal = D->isStaticLocal(); // static function variables + bool IsStaticDataMember = D->isStaticDataMember(); + bool IsConstExpr = D->isConstexpr(); + bool IsInitICE = D->isInitKnownICE() && D->isInitICE(); + bool HasInit = D->hasInit(); + const ParmVarDecl *ParmDecl = dyn_cast(D); + bool HasParmIndex = (bool)ParmDecl; + bool isInitExprCXX11ConstantExpr = false; + ObjectScope Scope(OF, + IsGlobal + IsExtern + IsStatic + IsStaticLocal + + IsStaticDataMember + IsConstExpr + IsInitICE + HasInit + + HasParmIndex + isInitExprCXX11ConstantExpr); + + OF.emitFlag("is_global", IsGlobal); + OF.emitFlag("is_extern", IsExtern); + OF.emitFlag("is_static", IsStatic); + OF.emitFlag("is_static_local", IsStaticLocal); + OF.emitFlag("is_static_data_member", IsStaticDataMember); + OF.emitFlag("is_const_expr", IsConstExpr); + OF.emitFlag("is_init_ice", IsInitICE); + if (HasInit) { + OF.emitTag("init_expr"); + dumpStmt(D->getInit()); + OF.emitFlag("is_init_expr_cxx11_constant", isInitExprCXX11ConstantExpr); + } + if (HasParmIndex) { + OF.emitTag("parm_index_in_function"); + OF.emitInteger(ParmDecl->getFunctionScopeIndex()); + } +} + +template +int ASTExporter::ImportDeclTupleSize() { + return DeclTupleSize() + 1; +} +//@atd #define import_decl_tuple decl_tuple * string +template +void ASTExporter::VisitImportDecl(const ImportDecl *D) { + VisitDecl(D); + OF.emitString(D->getImportedModule()->getFullModuleName()); +} + +//===----------------------------------------------------------------------===// +// C++ Declarations +//===----------------------------------------------------------------------===// + +template +int ASTExporter::UsingDirectiveDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define using_directive_decl_tuple named_decl_tuple * using_directive_decl_info +//@atd type using_directive_decl_info = { +//@atd using_location : source_location; +//@atd namespace_key_location : source_location; +//@atd nested_name_specifier_locs : nested_name_specifier_loc list; +//@atd ?nominated_namespace : decl_ref option; +//@atd } +template +void ASTExporter::VisitUsingDirectiveDecl( + const UsingDirectiveDecl *D) { + VisitNamedDecl(D); + + bool HasNominatedNamespace = D->getNominatedNamespace(); + ObjectScope Scope(OF, 3 + HasNominatedNamespace); + + OF.emitTag("using_location"); + dumpSourceLocation(D->getUsingLoc()); + OF.emitTag("namespace_key_location"); + dumpSourceLocation(D->getNamespaceKeyLocation()); + OF.emitTag("nested_name_specifier_locs"); + dumpNestedNameSpecifierLoc(D->getQualifierLoc()); + if (HasNominatedNamespace) { + OF.emitTag("nominated_namespace"); + dumpDeclRef(*D->getNominatedNamespace()); + } +} + +template +int ASTExporter::NamespaceAliasDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define namespace_alias_decl_tuple named_decl_tuple * namespace_alias_decl_info +//@atd type namespace_alias_decl_info = { +//@atd namespace_loc : source_location; +//@atd target_name_loc : source_location; +//@atd nested_name_specifier_locs : nested_name_specifier_loc list; +//@atd namespace : decl_ref; +//@atd } +template +void ASTExporter::VisitNamespaceAliasDecl( + const NamespaceAliasDecl *D) { + VisitNamedDecl(D); + ObjectScope Scope(OF, 4); + OF.emitTag("namespace_loc"); + dumpSourceLocation(D->getNamespaceLoc()); + OF.emitTag("target_name_loc"); + dumpSourceLocation(D->getTargetNameLoc()); + OF.emitTag("nested_name_specifier_locs"); + dumpNestedNameSpecifierLoc(D->getQualifierLoc()); + OF.emitTag("namespace"); + dumpDeclRef(*D->getNamespace()); +} + +//@atd type lambda_capture_info = { +//@atd capture_kind : lambda_capture_kind; +//@atd ~capture_this : bool; +//@atd ~capture_variable : bool; +//@atd ~capture_VLAtype : bool; +//@atd ?init_captured_vardecl : decl option; +//@atd ?captured_var : decl_ref option; +//@atd ~is_implicit : bool; +//@atd location : source_range; +//@atd ~is_pack_expansion: bool; +//@atd } +//@atd type lambda_capture_kind = [ +//@atd | LCK_This +//@atd | LCK_ByCopy +//@atd | LCK_ByRef +//@atd | LCK_VLAType +//@atd | LCK_StarThis] +template +void ASTExporter::dumpClassLambdaCapture(const LambdaCapture *C) { + + LambdaCaptureKind CK = C->getCaptureKind(); + bool CapturesThis = C->capturesThis(); + bool CapturesVariable = C->capturesVariable(); + bool CapturesVLAType = C->capturesVLAType(); + VarDecl *decl = C->capturesVariable() ? C->getCapturedVar() : nullptr; + bool IsInitCapture = decl && decl->isInitCapture(); + bool IsImplicit = C->isImplicit(); + SourceRange source_range = C->getLocation(); + bool IsPackExpansion = C->isPackExpansion(); + ObjectScope Scope(OF, + 2 + CapturesThis + CapturesVariable + CapturesVLAType + + IsInitCapture + (bool)decl + IsImplicit + + IsPackExpansion); + OF.emitTag("capture_kind"); + switch (CK) { + case LCK_This: + OF.emitSimpleVariant("LCK_This"); + break; + case LCK_ByCopy: + OF.emitSimpleVariant("LCK_ByCopy"); + break; + case LCK_ByRef: + OF.emitSimpleVariant("LCK_ByRef"); + break; + case LCK_VLAType: + OF.emitSimpleVariant("LCK_VLAType"); + break; + case LCK_StarThis: + OF.emitSimpleVariant("LCK_StarThis"); + break; + }; + OF.emitFlag("capture_this", CapturesThis); + OF.emitFlag("capture_variable", CapturesVariable); + OF.emitFlag("capture_VLAtype", CapturesVLAType); + if (decl) { + if (IsInitCapture) { + OF.emitTag("init_captured_vardecl"); + dumpDecl(decl); + } + OF.emitTag("captured_var"); + dumpDeclRef(*decl); + } + OF.emitFlag("is_implicit", IsImplicit); + OF.emitTag("location"); + dumpSourceRange(source_range); + OF.emitFlag("is_pack_expansion", IsPackExpansion); +} + +template +int ASTExporter::CXXRecordDeclTupleSize() { + return RecordDeclTupleSize() + 1; +} +//@atd #define cxx_record_decl_tuple record_decl_tuple * cxx_record_decl_info +//@atd type cxx_record_decl_info = { +//@atd ~bases : type_ptr list; +//@atd ~vbases : type_ptr list; +//@atd ~transitive_vbases : type_ptr list; +//@atd ~is_pod : bool; +//@atd ?destructor : decl_ref option; +//@atd ?lambda_call_operator : decl_ref option; +//@atd ~lambda_captures : lambda_capture_info list; +//@atd } +template +void ASTExporter::VisitCXXRecordDecl(const CXXRecordDecl *D) { + VisitRecordDecl(D); + + if (!D->isCompleteDefinition()) { + // We need to return early here. Otherwise plugin will crash. + // It looks like CXXRecordDecl may be initialized with garbage. + // Not sure what to do when we'll have some non-optional data to generate?? + ObjectScope Scope(OF, 0); + return; + } + + // getNumBases and getNumVBases are not reliable, extract this info + // directly from what is going to be dumped + SmallVector nonVBases; + SmallVector vBases; + for (const auto base : D->bases()) { + if (base.isVirtual()) { + vBases.push_back(base); + } else { + nonVBases.push_back(base); + } + } + + bool HasVBases = vBases.size() > 0; + bool HasNonVBases = nonVBases.size() > 0; + unsigned numTransitiveVBases = D->getNumVBases(); + bool HasTransitiveVBases = numTransitiveVBases > 0; + bool IsPOD = D->isPOD(); + const CXXDestructorDecl *DestructorDecl = D->getDestructor(); + const CXXMethodDecl *LambdaCallOperator = D->getLambdaCallOperator(); + + auto I = D->captures_begin(), E = D->captures_end(); + ObjectScope Scope(OF, + 0 + HasNonVBases + HasVBases + HasTransitiveVBases + IsPOD + + (bool)DestructorDecl + (bool)LambdaCallOperator + + (I != E)); + + if (HasNonVBases) { + OF.emitTag("bases"); + ArrayScope aScope(OF, nonVBases.size()); + for (const auto base : nonVBases) { + dumpQualTypeNoQuals(base.getType()); + } + } + if (HasVBases) { + OF.emitTag("vbases"); + ArrayScope aScope(OF, vBases.size()); + for (const auto base : vBases) { + dumpQualTypeNoQuals(base.getType()); + } + } + if (HasTransitiveVBases) { + OF.emitTag("transitive_vbases"); + ArrayScope aScope(OF, numTransitiveVBases); + for (const auto base : D->vbases()) { + dumpQualTypeNoQuals(base.getType()); + } + } + OF.emitFlag("is_pod", IsPOD); + + if (DestructorDecl) { + OF.emitTag("destructor"); + dumpDeclRef(*DestructorDecl); + } + + if (LambdaCallOperator) { + OF.emitTag("lambda_call_operator"); + dumpDeclRef(*LambdaCallOperator); + } + + if (I != E) { + OF.emitTag("lambda_captures"); + ArrayScope Scope(OF, std::distance(I, E)); + for (; I != E; ++I) { + dumpClassLambdaCapture(I); + } + } +} + +//@atd type template_instantiation_arg_info = [ +//@atd | Null +//@atd | Type of qual_type +//@atd | Declaration of pointer +//@atd | NullPtr +//@atd | Integral of string +//@atd | Template +//@atd | TemplateExpansion +//@atd | Expression +//@atd | Pack of template_instantiation_arg_info list +//@atd ] +template +void ASTExporter::dumpTemplateArgument(const TemplateArgument &Arg) { + switch (Arg.getKind()) { + case TemplateArgument::Null: + OF.emitSimpleVariant("Null"); + break; + case TemplateArgument::Type: { + VariantScope Scope(OF, "Type"); + dumpQualType(Arg.getAsType()); + break; + } + case TemplateArgument::Declaration: { + VariantScope Scope(OF, "Declaration"); + dumpPointer(Arg.getAsDecl()); + break; + } + case TemplateArgument::NullPtr: + OF.emitSimpleVariant("NullPtr"); + break; + case TemplateArgument::Integral: { + VariantScope Scope(OF, "Integral"); + OF.emitString(Arg.getAsIntegral().toString(10)); + break; + } + case TemplateArgument::Template: { + OF.emitSimpleVariant("Template"); + break; + } + case TemplateArgument::TemplateExpansion: { + OF.emitSimpleVariant("TemplateExpansion"); + break; + } + case TemplateArgument::Expression: { + OF.emitSimpleVariant("Expression"); + break; + } + case TemplateArgument::Pack: { + VariantScope Scope(OF, "Pack"); + ArrayScope aScope(OF, Arg.pack_size()); + for (TemplateArgument::pack_iterator I = Arg.pack_begin(), + E = Arg.pack_end(); + I != E; + ++I) { + dumpTemplateArgument(*I); + } + break; + } + } +} + +//@atd type template_specialization_info = { +//@atd template_decl : pointer; +//@atd ~specialization_args : template_instantiation_arg_info list; +//@atd } +template +void ASTExporter::dumpTemplateSpecialization( + const TemplateDecl *D, const TemplateArgumentList &Args) { + bool HasTemplateArgs = Args.size() > 0; + ObjectScope oScope(OF, 1 + HasTemplateArgs); + OF.emitTag("template_decl"); + dumpPointer(D); + if (HasTemplateArgs) { + OF.emitTag("specialization_args"); + ArrayScope aScope(OF, Args.size()); + for (size_t i = 0; i < Args.size(); i++) { + dumpTemplateArgument(Args[i]); + } + } +} + +template +int ASTExporter::ClassTemplateSpecializationDeclTupleSize() { + return CXXRecordDeclTupleSize() + 2; +} + +//@atd #define class_template_specialization_decl_tuple cxx_record_decl_tuple * string * template_specialization_info +template +void ASTExporter::VisitClassTemplateSpecializationDecl( + const ClassTemplateSpecializationDecl *D) { + VisitCXXRecordDecl(D); + bool ShouldMangleName = Mangler->shouldMangleDeclName(D); + if (ShouldMangleName) { + SmallString<64> Buf; + llvm::raw_svector_ostream StrOS(Buf); + Mangler->mangleName(D, StrOS); + // mangled names can get ridiculously long, so hash them to a fixed size + OF.emitString(std::to_string(fnv64Hash(StrOS))); + } else { + OF.emitString(""); + } + dumpTemplateSpecialization(D->getSpecializedTemplate(), D->getTemplateArgs()); +} + +template +int ASTExporter::CXXMethodDeclTupleSize() { + return FunctionDeclTupleSize() + 1; +} +//@atd #define cxx_method_decl_tuple function_decl_tuple * cxx_method_decl_info +//@atd type cxx_method_decl_info = { +//@atd ~is_virtual : bool; +//@atd ~is_static : bool; +//@atd ~is_constexpr : bool; +//@atd ~cxx_ctor_initializers : cxx_ctor_initializer list; +//@atd ~overriden_methods : decl_ref list; +//@atd } +template +void ASTExporter::VisitCXXMethodDecl(const CXXMethodDecl *D) { + VisitFunctionDecl(D); + bool IsVirtual = D->isVirtual(); + bool IsStatic = D->isStatic(); + const CXXConstructorDecl *C = dyn_cast(D); + bool HasCtorInitializers = C && C->init_begin() != C->init_end(); + bool IsConstexpr = D->isConstexpr(); + auto OB = D->begin_overridden_methods(); + auto OE = D->end_overridden_methods(); + ObjectScope Scope( + OF, + IsVirtual + IsStatic + IsConstexpr + HasCtorInitializers + (OB != OE)); + OF.emitFlag("is_virtual", IsVirtual); + OF.emitFlag("is_static", IsStatic); + OF.emitFlag("is_constexpr", IsConstexpr); + if (HasCtorInitializers) { + OF.emitTag("cxx_ctor_initializers"); + ArrayScope Scope(OF, std::distance(C->init_begin(), C->init_end())); + for (auto I : C->inits()) { + dumpCXXCtorInitializer(*I); + } + } + if (OB != OE) { + OF.emitTag("overriden_methods"); + ArrayScope Scope(OF, std::distance(OB, OE)); + for (; OB != OE; ++OB) { + dumpDeclRef(**OB); + } + } +} + +template +int ASTExporter::ClassTemplateDeclTupleSize() { + return ASTExporter::RedeclarableTemplateDeclTupleSize() + 1; +} + +//@atd #define class_template_decl_tuple redeclarable_template_decl_tuple * template_decl_info +//@atd type template_decl_info = { +//@atd ~specializations : decl list; +//@atd } +template +void ASTExporter::VisitClassTemplateDecl( + const ClassTemplateDecl *D) { + ASTExporter::VisitRedeclarableTemplateDecl(D); + std::vector DeclsToDump; + if (D == D->getCanonicalDecl()) { + // dump specializations once + for (const auto *spec : D->specializations()) { + switch (spec->getTemplateSpecializationKind()) { + case TSK_Undeclared: + case TSK_ImplicitInstantiation: + DeclsToDump.push_back(spec); + break; + case TSK_ExplicitSpecialization: + case TSK_ExplicitInstantiationDeclaration: + case TSK_ExplicitInstantiationDefinition: + // these specializations will be dumped elsewhere + break; + } + } + } + bool ShouldDumpSpecializations = !DeclsToDump.empty(); + ObjectScope Scope(OF, 0 + ShouldDumpSpecializations); + if (ShouldDumpSpecializations) { + OF.emitTag("specializations"); + ArrayScope aScope(OF, DeclsToDump.size()); + for (const auto *spec : DeclsToDump) { + dumpDecl(spec); + } + } +} + +template +int ASTExporter::FunctionTemplateDeclTupleSize() { + return ASTExporter::RedeclarableTemplateDeclTupleSize() + 1; +} +//@atd #define function_template_decl_tuple redeclarable_template_decl_tuple * template_decl_info +template +void ASTExporter::VisitFunctionTemplateDecl( + const FunctionTemplateDecl *D) { + ASTExporter::VisitRedeclarableTemplateDecl(D); + std::vector DeclsToDump; + if (D == D->getCanonicalDecl()) { + // dump specializations once + for (const auto *spec : D->specializations()) { + switch (spec->getTemplateSpecializationKind()) { + case TSK_Undeclared: + case TSK_ImplicitInstantiation: + case TSK_ExplicitInstantiationDefinition: + case TSK_ExplicitInstantiationDeclaration: + DeclsToDump.push_back(spec); + break; + case TSK_ExplicitSpecialization: + // these specializations will be dumped when they are defined + break; + } + } + } + bool ShouldDumpSpecializations = !DeclsToDump.empty(); + ObjectScope Scope(OF, 0 + ShouldDumpSpecializations); + if (ShouldDumpSpecializations) { + OF.emitTag("specializations"); + ArrayScope aScope(OF, DeclsToDump.size()); + for (const auto *spec : DeclsToDump) { + dumpDecl(spec); + } + } +} + +template +int ASTExporter::FriendDeclTupleSize() { + return DeclTupleSize() + 1; +} +//@atd #define friend_decl_tuple decl_tuple * friend_info +//@atd type friend_info = [ Type of type_ptr | Decl of decl ] +template +void ASTExporter::VisitFriendDecl(const FriendDecl *D) { + VisitDecl(D); + if (TypeSourceInfo *T = D->getFriendType()) { + VariantScope Scope(OF, "Type"); + dumpQualTypeNoQuals(T->getType()); + } else { + VariantScope Scope(OF, "Decl"); + dumpDecl(D->getFriendDecl()); + } +} + +// template +// void ASTExporter::VisitTypeAliasDecl(const TypeAliasDecl *D) { +// dumpName(D); +// dumpQualType(D->getUnderlyingType()); +//} +// +// template +// void ASTExporter::VisitTypeAliasTemplateDecl(const +// TypeAliasTemplateDecl *D) { +// dumpName(D); +// dumpTemplateParameters(D->getTemplateParameters()); +// dumpDecl(D->getTemplatedDecl()); +//} +// template +// void ASTExporter::VisitStaticAssertDecl(const StaticAssertDecl *D) +// { +// dumpStmt(D->getAssertExpr()); +// dumpStmt(D->getMessage()); +//} +// +// template +// void ASTExporter::VisitFunctionTemplateDecl(const +// FunctionTemplateDecl *D) { +// dumpName(D); +// dumpTemplateParameters(D->getTemplateParameters()); +// dumpDecl(D->getTemplatedDecl()); +// for (FunctionTemplateDecl::spec_iterator I = D->spec_begin(), +// E = D->spec_end(); +// I != E; ++I) { +// FunctionTemplateDecl::spec_iterator Next = I; +// ++Next; +// switch (I->getTemplateSpecializationKind()) { +// case TSK_Undeclared: +// case TSK_ImplicitInstantiation: +// case TSK_ExplicitInstantiationDeclaration: +// case TSK_ExplicitInstantiationDefinition: +// if (D == D->getCanonicalDecl()) +// dumpDecl(*I); +// else +// dumpDeclRef(*I); +// break; +// case TSK_ExplicitSpecialization: +// dumpDeclRef(*I); +// break; +// } +// } +//} +// +// template +// void ASTExporter::VisitClassTemplateDecl(const ClassTemplateDecl +// *D) { +// dumpName(D); +// dumpTemplateParameters(D->getTemplateParameters()); +// +// ClassTemplateDecl::spec_iterator I = D->spec_begin(); +// ClassTemplateDecl::spec_iterator E = D->spec_end(); +// dumpDecl(D->getTemplatedDecl()); +// for (; I != E; ++I) { +// ClassTemplateDecl::spec_iterator Next = I; +// ++Next; +// switch (I->getTemplateSpecializationKind()) { +// case TSK_Undeclared: +// case TSK_ImplicitInstantiation: +// if (D == D->getCanonicalDecl()) +// dumpDecl(*I); +// else +// dumpDeclRef(*I); +// break; +// case TSK_ExplicitSpecialization: +// case TSK_ExplicitInstantiationDeclaration: +// case TSK_ExplicitInstantiationDefinition: +// dumpDeclRef(*I); +// break; +// } +// } +//} +// +// template +// void ASTExporter::VisitClassTemplateSpecializationDecl( +// const ClassTemplateSpecializationDecl *D) { +// VisitCXXRecordDecl(D); +// dumpTemplateArgumentList(D->getTemplateArgs()); +//} +// +// template +// void ASTExporter::VisitClassTemplatePartialSpecializationDecl( +// const ClassTemplatePartialSpecializationDecl *D) { +// VisitClassTemplateSpecializationDecl(D); +// dumpTemplateParameters(D->getTemplateParameters()); +//} +// +// template +// void ASTExporter::VisitClassScopeFunctionSpecializationDecl( +// const ClassScopeFunctionSpecializationDecl *D) { +// dumpDeclRef(D->getSpecialization()); +// if (D->hasExplicitTemplateArgs()) +// dumpTemplateArgumentListInfo(D->templateArgs()); +//} +// +// template +// void ASTExporter::VisitVarTemplateDecl(const VarTemplateDecl *D) { +// dumpName(D); +// dumpTemplateParameters(D->getTemplateParameters()); +// +// VarTemplateDecl::spec_iterator I = D->spec_begin(); +// VarTemplateDecl::spec_iterator E = D->spec_end(); +// dumpDecl(D->getTemplatedDecl()); +// for (; I != E; ++I) { +// VarTemplateDecl::spec_iterator Next = I; +// ++Next; +// switch (I->getTemplateSpecializationKind()) { +// case TSK_Undeclared: +// case TSK_ImplicitInstantiation: +// if (D == D->getCanonicalDecl()) +// dumpDecl(*I); +// else +// dumpDeclRef(*I); +// break; +// case TSK_ExplicitSpecialization: +// case TSK_ExplicitInstantiationDeclaration: +// case TSK_ExplicitInstantiationDefinition: +// dumpDeclRef(*I); +// break; +// } +// } +//} +// +// template +// void ASTExporter::VisitVarTemplateSpecializationDecl( +// const VarTemplateSpecializationDecl *D) { +// dumpTemplateArgumentList(D->getTemplateArgs()); +// VisitVarDecl(D); +//} +// +// template +// void ASTExporter::VisitVarTemplatePartialSpecializationDecl( +// const VarTemplatePartialSpecializationDecl *D) { +// dumpTemplateParameters(D->getTemplateParameters()); +// VisitVarTemplateSpecializationDecl(D); +//} +// +// template +// void ASTExporter::VisitTemplateTypeParmDecl(const +// TemplateTypeParmDecl *D) { +// if (D->wasDeclaredWithTypename()) +// OS << " typename"; +// else +// OS << " class"; +// if (D->isParameterPack()) +// OS << " ..."; +// dumpName(D); +// if (D->hasDefaultArgument()) +// dumpQualType(D->getDefaultArgument()); +//} +// +// template +// void ASTExporter::VisitNonTypeTemplateParmDecl(const +// NonTypeTemplateParmDecl *D) { +// dumpQualType(D->getType()); +// if (D->isParameterPack()) +// OS << " ..."; +// dumpName(D); +// if (D->hasDefaultArgument()) +// dumpStmt(D->getDefaultArgument()); +//} +// +// template +// void ASTExporter::VisitTemplateTemplateParmDecl( +// const TemplateTemplateParmDecl *D) { +// if (D->isParameterPack()) +// OS << " ..."; +// dumpName(D); +// dumpTemplateParameters(D->getTemplateParameters()); +// if (D->hasDefaultArgument()) +// dumpTemplateArgumentLoc(D->getDefaultArgument()); +//} +// +// template +// void ASTExporter::VisitUsingDecl(const UsingDecl *D) { +// OS << ' '; +// D->getQualifier()->print(OS, D->getASTContext().getPrintingPolicy()); +// OS << D->getNameAsString(); +//} +// +// template +// void ASTExporter::VisitUnresolvedUsingTypenameDecl( +// const UnresolvedUsingTypenameDecl *D) { +// OS << ' '; +// D->getQualifier()->print(OS, D->getASTContext().getPrintingPolicy()); +// OS << D->getNameAsString(); +//} +// +// template +// void ASTExporter::VisitUnresolvedUsingValueDecl(const +// UnresolvedUsingValueDecl *D) { +// OS << ' '; +// D->getQualifier()->print(OS, D->getASTContext().getPrintingPolicy()); +// OS << D->getNameAsString(); +// dumpQualType(D->getType()); +//} +// +// template +// void ASTExporter::VisitUsingShadowDecl(const UsingShadowDecl *D) { +// OS << ' '; +// dumpDeclRef(D->getTargetDecl()); +//} +// +// template +// void ASTExporter::VisitLinkageSpecDecl(const LinkageSpecDecl *D) { +// switch (D->getLanguage()) { +// case LinkageSpecDecl::lang_c: OS << " C"; break; +// case LinkageSpecDecl::lang_cxx: OS << " C++"; break; +// } +//} +// +// template +// void ASTExporter::VisitAccessSpecDecl(const AccessSpecDecl *D) { +// OS << ' '; +// dumpAccessSpecifier(D->getAccess()); +//} +// + +// +////===----------------------------------------------------------------------===// +//// Obj-C Declarations +////===----------------------------------------------------------------------===// + +template +int ASTExporter::ObjCIvarDeclTupleSize() { + return FieldDeclTupleSize() + 1; +} +//@atd #define obj_c_ivar_decl_tuple field_decl_tuple * obj_c_ivar_decl_info +//@atd type obj_c_ivar_decl_info = { +//@atd ~is_synthesize : bool; +//@atd ~access_control : obj_c_access_control; +//@atd } +//@atd type obj_c_access_control = [ None | Private | Protected | Public | Package +//@atd ] +template +void ASTExporter::VisitObjCIvarDecl(const ObjCIvarDecl *D) { + VisitFieldDecl(D); + + bool IsSynthesize = D->getSynthesize(); + ObjCIvarDecl::AccessControl AC = D->getAccessControl(); + bool ShouldEmitAC = AC != ObjCIvarDecl::None; + ObjectScope Scope(OF, IsSynthesize + ShouldEmitAC); // not covered by tests + + OF.emitFlag("is_synthesize", IsSynthesize); + if (ShouldEmitAC) { + OF.emitTag("access_control"); + switch (AC) { + case ObjCIvarDecl::Private: + OF.emitSimpleVariant("Private"); + break; + case ObjCIvarDecl::Protected: + OF.emitSimpleVariant("Protected"); + break; + case ObjCIvarDecl::Public: + OF.emitSimpleVariant("Public"); + break; + case ObjCIvarDecl::Package: + OF.emitSimpleVariant("Package"); + break; + case ObjCIvarDecl::None: + llvm_unreachable("unreachable"); + break; + } + } +} + +template +int ASTExporter::ObjCMethodDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define obj_c_method_decl_tuple named_decl_tuple * obj_c_method_decl_info +//@atd type obj_c_method_decl_info = { +//@atd ~is_instance_method : bool; +//@atd result_type : qual_type; +//@atd ~is_property_accessor : bool; +//@atd ?property_decl : decl_ref option; +//@atd ~parameters : decl list; +//@atd ~implicit_parameters : decl list; +//@atd ~is_variadic : bool; +//@atd ~is_overriding : bool; +//@atd ~is_optional : bool; +//@atd ?body : stmt option; +//@atd ~mangled_name : string; +//@atd } +template +void ASTExporter::VisitObjCMethodDecl(const ObjCMethodDecl *D) { + VisitNamedDecl(D); + // We purposedly do not call VisitDeclContext(D). + bool IsInstanceMethod = D->isInstanceMethod(); + bool IsPropertyAccessor = D->isPropertyAccessor(); + const ObjCPropertyDecl *PropertyDecl = nullptr; + std::string selectorName = D->getSelector().getAsString(); + // work around bug in clang + if (selectorName != ".cxx_construct" && selectorName != ".cxx_destruct") { + PropertyDecl = D->findPropertyDecl(); + } + ObjCMethodDecl::param_const_iterator I = D->param_begin(), E = D->param_end(); + bool HasParameters = I != E; + std::vector ImplicitParams; + if (D->getSelfDecl()) { + ImplicitParams.push_back(D->getSelfDecl()); + } + if (D->getCmdDecl()) { + ImplicitParams.push_back(D->getCmdDecl()); + } + bool HasImplicitParameters = !ImplicitParams.empty(); + bool IsVariadic = D->isVariadic(); + bool IsOverriding = D->isOverriding(); + bool IsOptional = D->isOptional(); + const Stmt *Body = D->getBody(); + + SmallString<64> Buf; + llvm::raw_svector_ostream StrOS(Buf); + Mangler->mangleObjCMethodNameWithoutSize(D, StrOS); + std::string MangledName = StrOS.str(); + + ObjectScope Scope(OF, + 1 + IsInstanceMethod + IsPropertyAccessor + + (bool)PropertyDecl + HasParameters + + HasImplicitParameters + IsVariadic + IsOverriding + + IsOptional + (bool)Body + 1 /*MangledName */); + + OF.emitFlag("is_instance_method", IsInstanceMethod); + OF.emitTag("result_type"); + dumpQualType(D->getReturnType()); + OF.emitFlag("is_property_accessor", IsPropertyAccessor); + if (PropertyDecl) { + OF.emitTag("property_decl"); + dumpDeclRef(*PropertyDecl); + } + if (HasParameters) { + OF.emitTag("parameters"); + ArrayScope Scope(OF, std::distance(I, E)); + for (; I != E; ++I) { + dumpDecl(*I); + } + } + + if (HasImplicitParameters) { + OF.emitTag("implicit_parameters"); + ArrayScope Scope(OF, ImplicitParams.size()); + for (const ImplicitParamDecl *P : ImplicitParams) { + dumpDecl(P); + } + } + + OF.emitFlag("is_variadic", IsVariadic); + + OF.emitFlag("is_overriding", IsOverriding); + OF.emitFlag("is_optional", IsOptional); + + if (Body) { + OF.emitTag("body"); + dumpStmt(Body); + } + + OF.emitTag("mangled_name"); + OF.emitString(MangledName); +} + +template +int ASTExporter::ObjCCategoryDeclTupleSize() { + return ObjCContainerDeclTupleSize() + 1; +} +//@atd #define obj_c_category_decl_tuple obj_c_container_decl_tuple * obj_c_category_decl_info +//@atd type obj_c_category_decl_info = { +//@atd ?class_interface : decl_ref option; +//@atd ?implementation : decl_ref option; +//@atd ~protocols : decl_ref list; +//@atd } +template +void ASTExporter::VisitObjCCategoryDecl(const ObjCCategoryDecl *D) { + VisitObjCContainerDecl(D); + + const ObjCInterfaceDecl *CI = D->getClassInterface(); + const ObjCCategoryImplDecl *Impl = D->getImplementation(); + ObjCCategoryDecl::protocol_iterator I = D->protocol_begin(), + E = D->protocol_end(); + bool HasProtocols = I != E; + ObjectScope Scope( + OF, 0 + (bool)CI + (bool)Impl + HasProtocols); // not covered by tests + + if (CI) { + OF.emitTag("class_interface"); + dumpDeclRef(*CI); + } + if (Impl) { + OF.emitTag("implementation"); + dumpDeclRef(*Impl); + } + if (HasProtocols) { + OF.emitTag("protocols"); + ArrayScope Scope(OF, std::distance(I, E)); // not covered by tests + for (; I != E; ++I) { + assert(*I); + dumpDeclRef(**I); + } + } +} + +template +int ASTExporter::ObjCCategoryImplDeclTupleSize() { + return ASTExporter::ObjCImplDeclTupleSize() + 1; +} +//@atd #define obj_c_category_impl_decl_tuple obj_c_impl_decl_tuple * obj_c_category_impl_decl_info +//@atd type obj_c_category_impl_decl_info = { +//@atd ?class_interface : decl_ref option; +//@atd ?category_decl : decl_ref option; +//@atd } +template +void ASTExporter::VisitObjCCategoryImplDecl( + const ObjCCategoryImplDecl *D) { + ASTExporter::VisitObjCImplDecl(D); + + const ObjCInterfaceDecl *CI = D->getClassInterface(); + const ObjCCategoryDecl *CD = D->getCategoryDecl(); + ObjectScope Scope(OF, 0 + (bool)CI + (bool)CD); // not covered by tests + + if (CI) { + OF.emitTag("class_interface"); + dumpDeclRef(*CI); + } + if (CD) { + OF.emitTag("category_decl"); + dumpDeclRef(*CD); + } +} + +template +int ASTExporter::ObjCProtocolDeclTupleSize() { + return ObjCContainerDeclTupleSize() + 1; +} +//@atd #define obj_c_protocol_decl_tuple obj_c_container_decl_tuple * obj_c_protocol_decl_info +//@atd type obj_c_protocol_decl_info = { +//@atd ~protocols : decl_ref list; +//@atd } +template +void ASTExporter::VisitObjCProtocolDecl(const ObjCProtocolDecl *D) { + ASTExporter::VisitObjCContainerDecl(D); + + ObjCCategoryDecl::protocol_iterator I = D->protocol_begin(), + E = D->protocol_end(); + bool HasProtocols = I != E; + ObjectScope Scope(OF, 0 + HasProtocols); // not covered by tests + + if (HasProtocols) { + OF.emitTag("protocols"); + ArrayScope Scope(OF, std::distance(I, E)); // not covered by tests + for (; I != E; ++I) { + assert(*I); + dumpDeclRef(**I); + } + } +} + +template +int ASTExporter::ObjCInterfaceDeclTupleSize() { + return ObjCContainerDeclTupleSize() + 1; +} +//@atd #define obj_c_interface_decl_tuple obj_c_container_decl_tuple * obj_c_interface_decl_info +//@atd type obj_c_interface_decl_info = { +//@atd ?super : decl_ref option; +//@atd ?implementation : decl_ref option; +//@atd ~protocols : decl_ref list; +//@atd ~known_categories : decl_ref list; +//@atd } +template +void ASTExporter::VisitObjCInterfaceDecl( + const ObjCInterfaceDecl *D) { + VisitObjCContainerDecl(D); + + const ObjCInterfaceDecl *SC = D->getSuperClass(); + const ObjCImplementationDecl *Impl = D->getImplementation(); + ObjCInterfaceDecl::protocol_iterator IP = D->protocol_begin(), + EP = D->protocol_end(); + bool HasProtocols = IP != EP; + + ObjCInterfaceDecl::known_categories_iterator IC = D->known_categories_begin(), + EC = D->known_categories_end(); + + bool HasKnownCategories = IC != EC; + ObjectScope Scope( + OF, 0 + (bool)SC + (bool)Impl + HasProtocols + HasKnownCategories); + + if (SC) { + OF.emitTag("super"); + dumpDeclRef(*SC); + } + if (Impl) { + OF.emitTag("implementation"); + dumpDeclRef(*Impl); + } + if (HasProtocols) { + OF.emitTag("protocols"); + ArrayScope Scope(OF, std::distance(IP, EP)); + for (; IP != EP; ++IP) { + assert(*IP); + dumpDeclRef(**IP); + } + } + if (HasKnownCategories) { + OF.emitTag("known_categories"); + ArrayScope Scope(OF, std::distance(IC, EC)); + for (; IC != EC; ++IC) { + assert(*IC); + dumpDeclRef(**IC); + } + } +} + +template +int ASTExporter::ObjCImplementationDeclTupleSize() { + return ASTExporter::ObjCImplDeclTupleSize() + 1; +} +//@atd #define obj_c_implementation_decl_tuple obj_c_impl_decl_tuple * obj_c_implementation_decl_info +//@atd type obj_c_implementation_decl_info = { +//@atd ?super : decl_ref option; +//@atd ?class_interface : decl_ref option; +//@atd ~ivar_initializers : cxx_ctor_initializer list; +//@atd } +template +void ASTExporter::VisitObjCImplementationDecl( + const ObjCImplementationDecl *D) { + ASTExporter::VisitObjCImplDecl(D); + + const ObjCInterfaceDecl *SC = D->getSuperClass(); + const ObjCInterfaceDecl *CI = D->getClassInterface(); + ObjCImplementationDecl::init_const_iterator I = D->init_begin(), + E = D->init_end(); + bool HasInitializers = I != E; + ObjectScope Scope(OF, 0 + (bool)SC + (bool)CI + HasInitializers); + + if (SC) { + OF.emitTag("super"); + dumpDeclRef(*SC); + } + if (CI) { + OF.emitTag("class_interface"); + dumpDeclRef(*CI); + } + if (HasInitializers) { + OF.emitTag("ivar_initializers"); + ArrayScope Scope(OF, std::distance(I, E)); // not covered by tests + for (; I != E; ++I) { + assert(*I); + dumpCXXCtorInitializer(**I); + } + } +} + +template +int ASTExporter::ObjCCompatibleAliasDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define obj_c_compatible_alias_decl_tuple named_decl_tuple * obj_c_compatible_alias_decl_info +//@atd type obj_c_compatible_alias_decl_info = { +//@atd ?class_interface : decl_ref option; +//@atd } +template +void ASTExporter::VisitObjCCompatibleAliasDecl( + const ObjCCompatibleAliasDecl *D) { + VisitNamedDecl(D); + + const ObjCInterfaceDecl *CI = D->getClassInterface(); + ObjectScope Scope(OF, 0 + (bool)CI); // not covered by tests + + if (CI) { + OF.emitTag("class_interface"); + dumpDeclRef(*CI); + } +} + +template +int ASTExporter::ObjCPropertyDeclTupleSize() { + return NamedDeclTupleSize() + 1; +} +//@atd #define obj_c_property_decl_tuple named_decl_tuple * obj_c_property_decl_info +//@atd type obj_c_property_decl_info = { +//@atd qual_type : qual_type; +//@atd ?getter_method : decl_ref option; +//@atd ?setter_method : decl_ref option; +//@atd ?ivar_decl : decl_ref option; +//@atd ~property_control : obj_c_property_control; +//@atd ~property_attributes : property_attribute list +//@atd } +//@atd type obj_c_property_control = [ None | Required | Optional ] +//@atd type property_attribute = [ +//@atd Readonly +//@atd | Assign +//@atd | Readwrite +//@atd | Retain +//@atd | Copy +//@atd | Nonatomic +//@atd | Atomic +//@atd | Weak +//@atd | Strong +//@atd | Unsafe_unretained +//@atd | ExplicitGetter +//@atd | ExplicitSetter +//@atd ] +template +void ASTExporter::VisitObjCPropertyDecl(const ObjCPropertyDecl *D) { + VisitNamedDecl(D); + + ObjCPropertyDecl::PropertyControl PC = D->getPropertyImplementation(); + bool HasPropertyControl = PC != ObjCPropertyDecl::None; + ObjCPropertyDecl::PropertyAttributeKind Attrs = D->getPropertyAttributes(); + bool HasPropertyAttributes = Attrs != ObjCPropertyDecl::OBJC_PR_noattr; + + ObjCMethodDecl *Getter = D->getGetterMethodDecl(); + ObjCMethodDecl *Setter = D->getSetterMethodDecl(); + ObjCIvarDecl *Ivar = D->getPropertyIvarDecl(); + ObjectScope Scope(OF, + 1 + (bool)Getter + (bool)Setter + (bool)Ivar + + HasPropertyControl + + HasPropertyAttributes); // not covered by tests + + OF.emitTag("qual_type"); + dumpQualType(D->getType()); + + if (Getter) { + OF.emitTag("getter_method"); + dumpDeclRef(*Getter); + } + if (Setter) { + OF.emitTag("setter_method"); + dumpDeclRef(*Setter); + } + if (Ivar) { + OF.emitTag("ivar_decl"); + dumpDeclRef(*Ivar); + } + + if (HasPropertyControl) { + OF.emitTag("property_control"); + switch (PC) { + case ObjCPropertyDecl::Required: + OF.emitSimpleVariant("Required"); + break; + case ObjCPropertyDecl::Optional: + OF.emitSimpleVariant("Optional"); + break; + case ObjCPropertyDecl::None: + llvm_unreachable("unreachable"); + break; + } + } + + if (HasPropertyAttributes) { + OF.emitTag("property_attributes"); + bool readonly = Attrs & ObjCPropertyDecl::OBJC_PR_readonly; + bool assign = Attrs & ObjCPropertyDecl::OBJC_PR_assign; + bool readwrite = Attrs & ObjCPropertyDecl::OBJC_PR_readwrite; + bool retain = Attrs & ObjCPropertyDecl::OBJC_PR_retain; + bool copy = Attrs & ObjCPropertyDecl::OBJC_PR_copy; + bool nonatomic = Attrs & ObjCPropertyDecl::OBJC_PR_nonatomic; + bool atomic = Attrs & ObjCPropertyDecl::OBJC_PR_atomic; + bool weak = Attrs & ObjCPropertyDecl::OBJC_PR_weak; + bool strong = Attrs & ObjCPropertyDecl::OBJC_PR_strong; + bool unsafeUnretained = Attrs & ObjCPropertyDecl::OBJC_PR_unsafe_unretained; + bool getter = Attrs & ObjCPropertyDecl::OBJC_PR_getter; + bool setter = Attrs & ObjCPropertyDecl::OBJC_PR_setter; + int toEmit = readonly + assign + readwrite + retain + copy + nonatomic + + atomic + weak + strong + unsafeUnretained + getter + setter; + ArrayScope Scope(OF, toEmit); + if (readonly) + OF.emitSimpleVariant("Readonly"); + if (assign) + OF.emitSimpleVariant("Assign"); + if (readwrite) + OF.emitSimpleVariant("Readwrite"); + if (retain) + OF.emitSimpleVariant("Retain"); + if (copy) + OF.emitSimpleVariant("Copy"); + if (nonatomic) + OF.emitSimpleVariant("Nonatomic"); + if (atomic) + OF.emitSimpleVariant("Atomic"); + if (weak) + OF.emitSimpleVariant("Weak"); + if (strong) + OF.emitSimpleVariant("Strong"); + if (unsafeUnretained) + OF.emitSimpleVariant("Unsafe_unretained"); + if (getter) { + OF.emitSimpleVariant("ExplicitGetter"); + } + if (setter) { + OF.emitSimpleVariant("ExplicitSetter"); + } + } +} + +template +int ASTExporter::ObjCPropertyImplDeclTupleSize() { + return DeclTupleSize() + 1; +} +//@atd #define obj_c_property_impl_decl_tuple decl_tuple * obj_c_property_impl_decl_info +//@atd type obj_c_property_impl_decl_info = { +//@atd implementation : property_implementation; +//@atd ?property_decl : decl_ref option; +//@atd ?ivar_decl : decl_ref option; +//@atd } +//@atd type property_implementation = [ Synthesize | Dynamic ] +template +void ASTExporter::VisitObjCPropertyImplDecl( + const ObjCPropertyImplDecl *D) { + VisitDecl(D); + + const ObjCPropertyDecl *PD = D->getPropertyDecl(); + const ObjCIvarDecl *ID = D->getPropertyIvarDecl(); + ObjectScope Scope(OF, 1 + (bool)PD + (bool)ID); // not covered by tests + + OF.emitTag("implementation"); + switch (D->getPropertyImplementation()) { + case ObjCPropertyImplDecl::Synthesize: + OF.emitSimpleVariant("Synthesize"); + break; + case ObjCPropertyImplDecl::Dynamic: + OF.emitSimpleVariant("Dynamic"); + break; + } + if (PD) { + OF.emitTag("property_decl"); + dumpDeclRef(*PD); + } + if (ID) { + OF.emitTag("ivar_decl"); + dumpDeclRef(*ID); + } +} + +template +int ASTExporter::BlockDeclTupleSize() { + return DeclTupleSize() + 1; +} +//@atd #define block_decl_tuple decl_tuple * block_decl_info +//@atd type block_decl_info = { +//@atd ~parameters : decl list; +//@atd ~is_variadic : bool; +//@atd ~captures_cxx_this : bool; +//@atd ~captured_variables : block_captured_variable list; +//@atd ?body : stmt option; +//@atd ~mangled_name : string; +//@atd } +//@atd type block_captured_variable = { +//@atd ~is_by_ref : bool; +//@atd ~is_nested : bool; +//@atd ?variable : decl_ref option; +//@atd ?copy_expr : stmt option +//@atd } +template +void ASTExporter::VisitBlockDecl(const BlockDecl *D) { + VisitDecl(D); + // We purposedly do not call VisitDeclContext(D). + + ObjCMethodDecl::param_const_iterator PCII = D->param_begin(), + PCIE = D->param_end(); + bool HasParameters = PCII != PCIE; + bool IsVariadic = D->isVariadic(); + bool CapturesCXXThis = D->capturesCXXThis(); + BlockDecl::capture_const_iterator CII = D->capture_begin(), + CIE = D->capture_end(); + bool HasCapturedVariables = CII != CIE; + const Stmt *Body = D->getBody(); + + SmallString<64> Buf; + llvm::raw_svector_ostream StrOS(Buf); + Mangler->mangleBlock(D->getDeclContext(), D, StrOS); + std::string MangledName = StrOS.str(); + + int size = 0 + HasParameters + IsVariadic + CapturesCXXThis + + HasCapturedVariables + (bool)Body + 1 /* MangledName*/; + ObjectScope Scope(OF, size); // not covered by tests + + if (HasParameters) { + OF.emitTag("parameters"); + ArrayScope Scope(OF, std::distance(PCII, PCIE)); + for (; PCII != PCIE; ++PCII) { + dumpDecl(*PCII); + } + } + + OF.emitFlag("is_variadic", IsVariadic); + OF.emitFlag("captures_cxx_this", CapturesCXXThis); + + if (HasCapturedVariables) { + OF.emitTag("captured_variables"); + ArrayScope Scope(OF, std::distance(CII, CIE)); + for (; CII != CIE; ++CII) { + bool IsByRef = CII->isByRef(); + bool IsNested = CII->isNested(); + bool HasVariable = CII->getVariable(); + bool HasCopyExpr = CII->hasCopyExpr(); + ObjectScope Scope(OF, + 0 + IsByRef + IsNested + HasVariable + + HasCopyExpr); // not covered by tests + + OF.emitFlag("is_by_ref", IsByRef); + OF.emitFlag("is_nested", IsNested); + + if (HasVariable) { + OF.emitTag("variable"); + dumpDeclRef(*CII->getVariable()); + } + + if (HasCopyExpr) { + OF.emitTag("copy_expr"); + dumpStmt(CII->getCopyExpr()); + } + } + } + if (Body) { + OF.emitTag("body"); + dumpStmt(Body); + } + + OF.emitTag("mangled_name"); + OF.emitString(MangledName); +} + +// main variant for declarations +//@atd type decl = [ +#define DECL(DERIVED, BASE) //@atd | DERIVED@@Decl of (@DERIVED@_decl_tuple) +#define ABSTRACT_DECL(DECL) +#include +//@atd ] + +//===----------------------------------------------------------------------===// +// Stmt dumping methods. +//===----------------------------------------------------------------------===// + +// Default aliases for generating variant components +// The main variant is defined at the end of section. +#define STMT(CLASS, PARENT) //@atd #define @CLASS@_tuple @PARENT@_tuple +#define ABSTRACT_STMT(STMT) STMT +#include +// +template +void ASTExporter::dumpStmt(const Stmt *S) { + if (!S) { + // We use a fixed NullStmt node to represent null pointers + S = NullPtrStmt; + } + VariantScope Scope(OF, S->getStmtClassName()); + { + TupleScope Scope(OF, ASTExporter::tupleSizeOfStmtClass(S->getStmtClass())); + ConstStmtVisitor>::Visit(S); + } +} + +template +int ASTExporter::StmtTupleSize() { + return 2; +} +//@atd #define stmt_tuple stmt_info * stmt list +//@atd type stmt_info = { +//@atd pointer : pointer; +//@atd source_range : source_range; +//@atd } +template +void ASTExporter::VisitStmt(const Stmt *S) { + { + ObjectScope Scope(OF, 2); + + OF.emitTag("pointer"); + dumpPointer(S); + OF.emitTag("source_range"); + dumpSourceRange(S->getSourceRange()); + } + { + ArrayScope Scope(OF, std::distance(S->child_begin(), S->child_end())); + for (const Stmt *CI : S->children()) { + dumpStmt(CI); + } + } +} + +template +int ASTExporter::DeclStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define decl_stmt_tuple stmt_tuple * decl list +template +void ASTExporter::VisitDeclStmt(const DeclStmt *Node) { + VisitStmt(Node); + ArrayScope Scope(OF, std::distance(Node->decl_begin(), Node->decl_end())); + for (auto I : Node->decls()) { + dumpDecl(I); + } +} + +template +int ASTExporter::IfStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define if_stmt_tuple stmt_tuple * if_stmt_info +//@atd type if_stmt_info = { +//@atd ?init : pointer option; +//@atd ?cond_var : stmt option; +//@atd cond : pointer; +//@atd then : pointer; +//@atd ?else : (pointer * source_location) option; +//@atd } +template +void ASTExporter::VisitIfStmt(const IfStmt *Node) { + VisitStmt(Node); + const Stmt *Init = Node->getInit(); + const DeclStmt *CondVar = Node->getConditionVariableDeclStmt(); + bool hasElseStorage = Node->hasElseStorage(); + ObjectScope Scope(OF, 2 + (bool)Init + (bool)CondVar + hasElseStorage); + if (Init) { + OF.emitTag("init"); + dumpPointer(Init); + } + if (CondVar) { + OF.emitTag("cond_var"); + dumpStmt(CondVar); + } + OF.emitTag("cond"); + dumpPointer(Node->getCond()); + OF.emitTag("then"); + dumpPointer(Node->getThen()); + if (hasElseStorage) { + OF.emitTag("else"); + TupleScope Scope(OF, 2); + dumpPointer(Node->getElse()); + dumpSourceLocation(Node->getElseLoc()); + } +} + +template +int ASTExporter::SwitchStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define switch_stmt_tuple stmt_tuple * switch_stmt_info +//@atd type switch_stmt_info = { +//@atd ?init : pointer option; +//@atd ?cond_var : stmt option; +//@atd cond : pointer; +//@atd body : pointer; +//@atd } +template +void ASTExporter::VisitSwitchStmt(const SwitchStmt *Node) { + VisitStmt(Node); + const Stmt *Init = Node->getInit(); + const DeclStmt *CondVar = Node->getConditionVariableDeclStmt(); + ObjectScope Scope(OF, 2 + (bool)Init + (bool)CondVar); + if (Init) { + OF.emitTag("init"); + dumpPointer(Init); + } + if (CondVar) { + OF.emitTag("cond_var"); + dumpStmt(CondVar); + } + OF.emitTag("cond"); + dumpPointer(Node->getCond()); + OF.emitTag("body"); + dumpPointer(Node->getBody()); +} + +template +int ASTExporter::AttributedStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define attributed_stmt_tuple stmt_tuple * attribute list +template +void ASTExporter::VisitAttributedStmt(const AttributedStmt *Node) { + VisitStmt(Node); + ArrayScope Scope(OF, Node->getAttrs().size()); // not covered by tests + for (auto A : Node->getAttrs()) { + dumpAttr(A); + } +} + +template +int ASTExporter::LabelStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define label_stmt_tuple stmt_tuple * string +template +void ASTExporter::VisitLabelStmt(const LabelStmt *Node) { + VisitStmt(Node); + OF.emitString(Node->getName()); +} + +template +int ASTExporter::GotoStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define goto_stmt_tuple stmt_tuple * goto_stmt_info +//@atd type goto_stmt_info = { +//@atd label : string; +//@atd pointer : pointer +//@atd } +template +void ASTExporter::VisitGotoStmt(const GotoStmt *Node) { + VisitStmt(Node); + ObjectScope Scope(OF, 2); // not covered by tests + OF.emitTag("label"); + OF.emitString(Node->getLabel()->getName()); + OF.emitTag("pointer"); + dumpPointer(Node->getLabel()); +} + +template +int ASTExporter::CXXCatchStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define cxx_catch_stmt_tuple stmt_tuple * cxx_catch_stmt_info +//@atd type cxx_catch_stmt_info = { +//@atd ?variable : decl option +//@atd } +template +void ASTExporter::VisitCXXCatchStmt(const CXXCatchStmt *Node) { + VisitStmt(Node); + + const VarDecl *decl = Node->getExceptionDecl(); + ObjectScope Scope(OF, 0 + (bool)decl); // not covered by tests + + if (decl) { + OF.emitTag("variable"); + dumpDecl(decl); + } +} + +////===----------------------------------------------------------------------===// +//// Expr dumping methods. +////===----------------------------------------------------------------------===// +// + +template +int ASTExporter::ExprTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define expr_tuple stmt_tuple * expr_info +//@atd type expr_info = { +//@atd qual_type : qual_type; +//@atd ~value_kind : value_kind; +//@atd ~object_kind : object_kind; +//@atd } +//@atd type value_kind = [ RValue | LValue | XValue ] +//@atd type object_kind = [ Ordinary | BitField | ObjCProperty | ObjCSubscript | +//@atd VectorComponent ] +template +void ASTExporter::VisitExpr(const Expr *Node) { + VisitStmt(Node); + + ExprValueKind VK = Node->getValueKind(); + bool HasNonDefaultValueKind = VK != VK_RValue; + ExprObjectKind OK = Node->getObjectKind(); + bool HasNonDefaultObjectKind = OK != OK_Ordinary; + ObjectScope Scope(OF, 1 + HasNonDefaultValueKind + HasNonDefaultObjectKind); + + OF.emitTag("qual_type"); + dumpQualType(Node->getType()); + + if (HasNonDefaultValueKind) { + OF.emitTag("value_kind"); + switch (VK) { + case VK_LValue: + OF.emitSimpleVariant("LValue"); + break; + case VK_XValue: + OF.emitSimpleVariant("XValue"); + break; + case VK_RValue: + llvm_unreachable("unreachable"); + break; + } + } + if (HasNonDefaultObjectKind) { + OF.emitTag("object_kind"); + switch (Node->getObjectKind()) { + case OK_BitField: + OF.emitSimpleVariant("BitField"); + break; + case OK_ObjCProperty: + OF.emitSimpleVariant("ObjCProperty"); + break; + case OK_ObjCSubscript: + OF.emitSimpleVariant("ObjCSubscript"); + break; + case OK_VectorComponent: + OF.emitSimpleVariant("VectorComponent"); + break; + case OK_Ordinary: + llvm_unreachable("unreachable"); + break; + } + } +} + +//@atd type cxx_base_specifier = { +//@atd name : string; +//@atd ~virtual : bool; +//@atd } +template +void ASTExporter::dumpCXXBaseSpecifier( + const CXXBaseSpecifier &Base) { + bool IsVirtual = Base.isVirtual(); + ObjectScope Scope(OF, 1 + IsVirtual); + + OF.emitTag("name"); + const CXXRecordDecl *RD = + cast(Base.getType()->getAs()->getDecl()); + OF.emitString(RD->getName()); + OF.emitFlag("virtual", IsVirtual); +} + +template +int ASTExporter::CastExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd type cast_kind = [ +#define CAST_OPERATION(NAME) //@atd | NAME +#include +//@atd ] +//@atd #define cast_expr_tuple expr_tuple * cast_expr_info +//@atd type cast_expr_info = { +//@atd cast_kind : cast_kind; +//@atd base_path : cxx_base_specifier list; +//@atd } +template +void ASTExporter::VisitCastExpr(const CastExpr *Node) { + VisitExpr(Node); + ObjectScope Scope(OF, 2); + OF.emitTag("cast_kind"); + OF.emitSimpleVariant(Node->getCastKindName()); + OF.emitTag("base_path"); + { + auto I = Node->path_begin(), E = Node->path_end(); + ArrayScope Scope(OF, std::distance(I, E)); + for (; I != E; ++I) { + dumpCXXBaseSpecifier(**I); + } + } +} + +template +int ASTExporter::ExplicitCastExprTupleSize() { + return CastExprTupleSize() + 1; +} +//@atd #define explicit_cast_expr_tuple cast_expr_tuple * qual_type +template +void ASTExporter::VisitExplicitCastExpr( + const ExplicitCastExpr *Node) { + VisitCastExpr(Node); + dumpQualType(Node->getTypeAsWritten()); +} + +template +int ASTExporter::ObjCBridgedCastExprTupleSize() { + return ExplicitCastExprTupleSize() + 1; +} + + +//@atd type obj_c_bridge_cast_kind = [ +//@atd OBC_BridgeRetained +//@atd | OBC_Bridge +//@atd | OBC_BridgeTransfer +//@atd ] +//@atd #define obj_c_bridged_cast_expr_tuple explicit_cast_expr_tuple * obj_c_bridged_cast_expr_info +//@atd type obj_c_bridged_cast_expr_info = { +//@atd cast_kind : obj_c_bridge_cast_kind; +//@atd } +template +void ASTExporter::VisitObjCBridgedCastExpr( + const ObjCBridgedCastExpr *Node) { + VisitExplicitCastExpr(Node); + ObjectScope Scope(OF, 1); + OF.emitTag("cast_kind"); + switch (Node->getBridgeKind()) { + case OBC_BridgeRetained: + OF.emitSimpleVariant("OBC_BridgeRetained"); + break; + case OBC_Bridge: + OF.emitSimpleVariant("OBC_Bridge"); + break; + case OBC_BridgeTransfer: + OF.emitSimpleVariant("OBC_BridgeTransfer"); + break; + } +} + +template +int ASTExporter::DeclRefExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define decl_ref_expr_tuple expr_tuple * decl_ref_expr_info +//@atd type decl_ref_expr_info = { +//@atd ?decl_ref : decl_ref option; +//@atd ?found_decl_ref : decl_ref option +//@atd } +template +void ASTExporter::VisitDeclRefExpr(const DeclRefExpr *Node) { + VisitExpr(Node); + + const ValueDecl *D = Node->getDecl(); + const NamedDecl *FD = Node->getFoundDecl(); + bool HasFoundDeclRef = FD && D != FD; + ObjectScope Scope(OF, 0 + (bool)D + HasFoundDeclRef); + + if (D) { + OF.emitTag("decl_ref"); + dumpDeclRef(*D); + } + if (HasFoundDeclRef) { + OF.emitTag("found_decl_ref"); + dumpDeclRef(*FD); + } +} + +template +int ASTExporter::OverloadExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define overload_expr_tuple expr_tuple * overload_expr_info +//@atd type overload_expr_info = { +//@atd ~decls : decl_ref list; +//@atd name : declaration_name; +//@atd } +template +void ASTExporter::VisitOverloadExpr(const OverloadExpr *Node) { + VisitExpr(Node); + + bool HasDecls = Node->getNumDecls() > 0; + ObjectScope Scope(OF, 1 + HasDecls); // not covered by tests + + if (HasDecls) { + OF.emitTag("decls"); + ArrayScope Scope( // not covered by tests + OF, + std::distance(Node->decls_begin(), Node->decls_end())); + for (auto I : Node->decls()) { + dumpDeclRef(*I); + } + } + OF.emitTag("name"); + dumpDeclarationName(Node->getName()); +} + +template +int ASTExporter::UnresolvedLookupExprTupleSize() { + return OverloadExprTupleSize() + 1; +} +//@atd #define unresolved_lookup_expr_tuple overload_expr_tuple * unresolved_lookup_expr_info +//@atd type unresolved_lookup_expr_info = { +//@atd ~requires_ADL : bool; +//@atd ~is_overloaded : bool; +//@atd ?naming_class : decl_ref option; +//@atd } +template +void ASTExporter::VisitUnresolvedLookupExpr( + const UnresolvedLookupExpr *Node) { + VisitOverloadExpr(Node); + + bool RequiresADL = Node->requiresADL(); + bool IsOverloaded = Node->isOverloaded(); + bool HasNamingClass = Node->getNamingClass(); + ObjectScope Scope( + OF, + 0 + RequiresADL + IsOverloaded + HasNamingClass); // not covered by tests + + OF.emitFlag("requires_ADL", RequiresADL); + OF.emitFlag("is_overloaded", IsOverloaded); + if (HasNamingClass) { + OF.emitTag("naming_class"); + dumpDeclRef(*Node->getNamingClass()); + } +} + +template +int ASTExporter::ObjCIvarRefExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_ivar_ref_expr_tuple expr_tuple * obj_c_ivar_ref_expr_info +//@atd type obj_c_ivar_ref_expr_info = { +//@atd decl_ref : decl_ref; +//@atd pointer : pointer; +//@atd ~is_free_ivar : bool +//@atd } +template +void ASTExporter::VisitObjCIvarRefExpr(const ObjCIvarRefExpr *Node) { + VisitExpr(Node); + + bool IsFreeIvar = Node->isFreeIvar(); + ObjectScope Scope(OF, 2 + IsFreeIvar); // not covered by tests + + OF.emitTag("decl_ref"); + dumpDeclRef(*Node->getDecl()); + OF.emitTag("pointer"); + dumpPointer(Node->getDecl()); + OF.emitFlag("is_free_ivar", IsFreeIvar); +} + +template +int ASTExporter::PredefinedExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define predefined_expr_tuple expr_tuple * predefined_expr_type +//@atd type predefined_expr_type = [ +//@atd | Func +//@atd | Function +//@atd | LFunction +//@atd | FuncDName +//@atd | FuncSig +//@atd | LFuncSig +//@atd | PrettyFunction +//@atd | PrettyFunctionNoVirtual +//@atd ] +template +void ASTExporter::VisitPredefinedExpr(const PredefinedExpr *Node) { + VisitExpr(Node); + switch (Node->getIdentKind()) { + case PredefinedExpr::Func: + OF.emitSimpleVariant("Func"); + break; + case PredefinedExpr::Function: + OF.emitSimpleVariant("Function"); + break; + case PredefinedExpr::LFunction: + OF.emitSimpleVariant("LFunction"); + break; + case PredefinedExpr::LFuncSig: + OF.emitSimpleVariant("LFuncSig"); + break; + case PredefinedExpr::FuncDName: + OF.emitSimpleVariant("FuncDName"); + break; + case PredefinedExpr::FuncSig: + OF.emitSimpleVariant("FuncSig"); + break; + case PredefinedExpr::PrettyFunction: + OF.emitSimpleVariant("PrettyFunction"); + break; + case PredefinedExpr::PrettyFunctionNoVirtual: + OF.emitSimpleVariant("PrettyFunctionNoVirtual"); + break; + } +} + +template +int ASTExporter::CharacterLiteralTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define character_literal_tuple expr_tuple * int +template +void ASTExporter::VisitCharacterLiteral( + const CharacterLiteral *Node) { + VisitExpr(Node); + OF.emitInteger(Node->getValue()); +} + +template +void ASTExporter::emitAPInt(bool isSigned, + const llvm::APInt &value) { + ObjectScope Scope(OF, 2 + isSigned); + + OF.emitFlag("is_signed", isSigned); + OF.emitTag("bitwidth"); + OF.emitInteger(value.getBitWidth()); + OF.emitTag("value"); + OF.emitString(value.toString(10, isSigned)); +} + +template +int ASTExporter::IntegerLiteralTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define integer_literal_tuple expr_tuple * integer_literal_info +//@atd type integer_literal_info = { +//@atd ~is_signed : bool; +//@atd bitwidth : int; +//@atd value : string; +//@atd } +template +void ASTExporter::VisitIntegerLiteral(const IntegerLiteral *Node) { + VisitExpr(Node); + + const auto value = Node->getValue(); + this->emitAPInt(Node->getType()->isSignedIntegerType(), value); +} + +template +int ASTExporter::FixedPointLiteralTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define fixed_point_literal_tuple expr_tuple * string +template +void ASTExporter::VisitFixedPointLiteral( + const FixedPointLiteral *Node) { + VisitExpr(Node); + int radix = 10; + OF.emitString(Node->getValueAsString(radix)); +} + +template +int ASTExporter::FloatingLiteralTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define floating_literal_tuple expr_tuple * string +template +void ASTExporter::VisitFloatingLiteral(const FloatingLiteral *Node) { + VisitExpr(Node); + llvm::SmallString<20> buf; + Node->getValue().toString(buf); + OF.emitString(buf.str()); +} + +template +int ASTExporter::StringLiteralTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define string_literal_tuple expr_tuple * string list +template +void ASTExporter::VisitStringLiteral(const StringLiteral *Str) { + VisitExpr(Str); + size_t n_chunks; + if (Str->getByteLength() == 0) { + n_chunks = 1; + } else { + n_chunks = 1 + ((Str->getByteLength() - 1) / Options.maxStringSize); + } + ArrayScope Scope(OF, n_chunks); + for (size_t i = 0; i < n_chunks; ++i) { + OF.emitString(Str->getBytes().substr(i * Options.maxStringSize, + Options.maxStringSize)); + } +} + +template +int ASTExporter::OffsetOfExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define offset_of_expr_tuple expr_tuple * offset_of_expr_info +//@atd type offset_of_expr_info = { +//@atd ?literal : integer_literal_info option; +//@atd } +template +void ASTExporter::VisitOffsetOfExpr(const OffsetOfExpr *OOE) { + VisitExpr(OOE); + + Expr::EvalResult result; + bool isLiteral = OOE->EvaluateAsInt(result, this->Context); + ObjectScope Scope(OF, 0 + isLiteral); + + if (isLiteral) { + OF.emitTag("literal"); + llvm::APSInt IV = result.Val.getInt(); + this->emitAPInt(IV.isSigned(), IV); + } +} + +template +int ASTExporter::UnaryOperatorTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define unary_operator_tuple expr_tuple * unary_operator_info +//@atd type unary_operator_info = { +//@atd kind : unary_operator_kind; +//@atd ~is_postfix : bool; +//@atd } +//@atd type unary_operator_kind = [ +#define UNARY_OPERATION(NAME, SPELLING) //@atd | NAME +#include +//@atd ] +template +void ASTExporter::VisitUnaryOperator(const UnaryOperator *Node) { + VisitExpr(Node); + + bool IsPostfix = Node->isPostfix(); + ObjectScope Scope(OF, 1 + IsPostfix); + + OF.emitTag("kind"); + switch (Node->getOpcode()) { +#define UNARY_OPERATION(NAME, SPELLING) \ + case UO_##NAME: \ + OF.emitSimpleVariant(#NAME); \ + break; +#include + } + OF.emitFlag("is_postfix", IsPostfix); +} + +template +int ASTExporter::UnaryExprOrTypeTraitExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define unary_expr_or_type_trait_expr_tuple expr_tuple * unary_expr_or_type_trait_expr_info +//@atd type unary_expr_or_type_trait_expr_info = { +//@atd kind : unary_expr_or_type_trait_kind; +//@atd qual_type : qual_type +//@atd } +//@atd type unary_expr_or_type_trait_kind = [ +//@atd | AlignOf +//@atd | OpenMPRequiredSimdAlign +//@atd | PreferredAlignOf +//@atd | SizeOf +//@atd | SizeOfWithSize of int +//@atd | VecStep +//@atd ] +template +void ASTExporter::VisitUnaryExprOrTypeTraitExpr( + const UnaryExprOrTypeTraitExpr *Node) { + VisitExpr(Node); + + ObjectScope Scope(OF, 2); // not covered by tests + + OF.emitTag("kind"); + switch (Node->getKind()) { + case UETT_AlignOf: + OF.emitSimpleVariant("AlignOf"); + break; + case UETT_OpenMPRequiredSimdAlign: + OF.emitSimpleVariant("OpenMPRequiredSimdAlign"); + break; + case UETT_PreferredAlignOf: + OF.emitSimpleVariant("PreferredAlignOf"); + break; + case UETT_SizeOf: { + const Type *ArgType = Node->getTypeOfArgument().getTypePtr(); + if (hasMeaningfulTypeInfo(ArgType)) { + VariantScope Scope(OF, "SizeOfWithSize"); + OF.emitInteger(Context.getTypeInfo(ArgType).Width / 8); + } else { + OF.emitSimpleVariant("SizeOf"); + } + break; + } + case UETT_VecStep: + OF.emitSimpleVariant("VecStep"); + break; + } + + OF.emitTag("qual_type"); + dumpQualType(Node->getTypeOfArgument()); +} + +template +int ASTExporter::MemberExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define member_expr_tuple expr_tuple * member_expr_info +//@atd type member_expr_info = { +//@atd ~is_arrow : bool; +//@atd ~performs_virtual_dispatch : bool; +//@atd name : named_decl_info; +//@atd decl_ref : decl_ref +//@atd } +template +void ASTExporter::VisitMemberExpr(const MemberExpr *Node) { + VisitExpr(Node); + + bool IsArrow = Node->isArrow(); + LangOptions LO; + // ignore real lang options - it will get it wrong when compiling + // with -fapple-kext flag + bool PerformsVirtualDispatch = Node->performsVirtualDispatch(LO); + ObjectScope Scope(OF, 2 + IsArrow + PerformsVirtualDispatch); + + OF.emitFlag("is_arrow", IsArrow); + OF.emitFlag("performs_virtual_dispatch", PerformsVirtualDispatch); + OF.emitTag("name"); + ValueDecl *memberDecl = Node->getMemberDecl(); + dumpName(*memberDecl); + OF.emitTag("decl_ref"); + dumpDeclRef(*memberDecl); +} + +template +int ASTExporter::ExtVectorElementExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define ext_vector_element_tuple expr_tuple * string +template +void ASTExporter::VisitExtVectorElementExpr( + const ExtVectorElementExpr *Node) { + VisitExpr(Node); + OF.emitString(Node->getAccessor().getNameStart()); +} + +template +int ASTExporter::BinaryOperatorTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define binary_operator_tuple expr_tuple * binary_operator_info +//@atd type binary_operator_info = { +//@atd kind : binary_operator_kind +//@atd } +//@atd type binary_operator_kind = [ +#define BINARY_OPERATION(NAME, SPELLING) //@atd | NAME +#include +//@atd ] +template +void ASTExporter::VisitBinaryOperator(const BinaryOperator *Node) { + VisitExpr(Node); + ObjectScope Scope(OF, 1); + OF.emitTag("kind"); + switch (Node->getOpcode()) { +#define BINARY_OPERATION(NAME, SPELLING) \ + case BO_##NAME: \ + OF.emitSimpleVariant(#NAME); \ + break; +#include + } +} + +template +int ASTExporter::CompoundAssignOperatorTupleSize() { + return BinaryOperatorTupleSize() + 1; +} +//@atd #define compound_assign_operator_tuple binary_operator_tuple * compound_assign_operator_info +//@atd type compound_assign_operator_info = { +//@atd lhs_type : qual_type; +//@atd result_type : qual_type; +//@atd } +template +void ASTExporter::VisitCompoundAssignOperator( + const CompoundAssignOperator *Node) { + VisitBinaryOperator(Node); + ObjectScope Scope(OF, 2); // not covered by tests + OF.emitTag("lhs_type"); + dumpQualType(Node->getComputationLHSType()); + OF.emitTag("result_type"); + dumpQualType(Node->getComputationResultType()); +} + +template +int ASTExporter::BlockExprTupleSize() { + return ExprTupleSize() + DeclTupleSize(); +} +//@atd #define block_expr_tuple expr_tuple * decl +template +void ASTExporter::VisitBlockExpr(const BlockExpr *Node) { + VisitExpr(Node); + dumpDecl(Node->getBlockDecl()); +} + +template +int ASTExporter::OpaqueValueExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define opaque_value_expr_tuple expr_tuple * opaque_value_expr_info +//@atd type opaque_value_expr_info = { +//@atd ?source_expr : stmt option; +//@atd } +template +void ASTExporter::VisitOpaqueValueExpr(const OpaqueValueExpr *Node) { + VisitExpr(Node); + + const Expr *Source = Node->getSourceExpr(); + ObjectScope Scope(OF, 0 + (bool)Source); // not covered by tests + + if (Source) { + OF.emitTag("source_expr"); + dumpStmt(Source); + } +} + +// GNU extensions. + +template +int ASTExporter::AddrLabelExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define addr_label_expr_tuple expr_tuple * addr_label_expr_info +//@atd type addr_label_expr_info = { +//@atd label : string; +//@atd pointer : pointer; +//@atd } +template +void ASTExporter::VisitAddrLabelExpr(const AddrLabelExpr *Node) { + VisitExpr(Node); + ObjectScope Scope(OF, 2); // not covered by tests + OF.emitTag("label"); + OF.emitString(Node->getLabel()->getName()); + OF.emitTag("pointer"); + dumpPointer(Node->getLabel()); +} + +////===----------------------------------------------------------------------===// +//// C++ Expressions +////===----------------------------------------------------------------------===// + +template +int ASTExporter::CXXNamedCastExprTupleSize() { + return ExplicitCastExprTupleSize() + 1; +} +//@atd #define cxx_named_cast_expr_tuple explicit_cast_expr_tuple * string +template +void ASTExporter::VisitCXXNamedCastExpr( + const CXXNamedCastExpr *Node) { + VisitExplicitCastExpr(Node); + OF.emitString(Node->getCastName()); +} + +template +int ASTExporter::CXXBoolLiteralExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_bool_literal_expr_tuple expr_tuple * int +template +void ASTExporter::VisitCXXBoolLiteralExpr( + const CXXBoolLiteralExpr *Node) { + VisitExpr(Node); + OF.emitInteger(Node->getValue()); +} + +template +int ASTExporter::CXXConstructExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_construct_expr_tuple expr_tuple * cxx_construct_expr_info +//@atd type cxx_construct_expr_info = { +//@atd decl_ref : decl_ref; +//@atd ~is_elidable : bool; +//@atd ~requires_zero_initialization : bool; +//@atd ~is_copy_constructor : bool; +//@atd } +template +void ASTExporter::VisitCXXConstructExpr( + const CXXConstructExpr *Node) { + VisitExpr(Node); + CXXConstructorDecl *Ctor = Node->getConstructor(); + bool IsCopyConstructor = Ctor->isCopyConstructor(); + bool IsElidable = Node->isElidable(); + bool RequiresZeroInitialization = Node->requiresZeroInitialization(); + ObjectScope Scope( + OF, 1 + IsElidable + RequiresZeroInitialization + IsCopyConstructor); + + OF.emitTag("decl_ref"); + dumpDeclRef(*Ctor); + OF.emitFlag("is_elidable", IsElidable); + OF.emitFlag("requires_zero_initialization", RequiresZeroInitialization); + OF.emitFlag("is_copy_constructor", IsCopyConstructor); +} + +template +int ASTExporter::CXXInheritedCtorInitExprTupleSize() { + return ExprTupleSize() + 1; +} + +//@atd #define cxx_inherited_ctor_init_expr_tuple expr_tuple * cxx_construct_expr_info +template +void ASTExporter::VisitCXXInheritedCtorInitExpr( + const CXXInheritedCtorInitExpr *Node) { + VisitExpr(Node); + CXXConstructorDecl *Ctor = Node->getConstructor(); + ObjectScope Scope(OF, 1); + + OF.emitTag("decl_ref"); + dumpDeclRef(*Ctor); +} + +template +int ASTExporter::CXXBindTemporaryExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_bind_temporary_expr_tuple expr_tuple * cxx_bind_temporary_expr_info +//@atd type cxx_bind_temporary_expr_info = { +//@atd cxx_temporary : cxx_temporary; +//@atd } +template +void ASTExporter::VisitCXXBindTemporaryExpr( + const CXXBindTemporaryExpr *Node) { + VisitExpr(Node); + ObjectScope Scope(OF, 1); + OF.emitTag("cxx_temporary"); + dumpCXXTemporary(Node->getTemporary()); +} + +template +int ASTExporter::MaterializeTemporaryExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define materialize_temporary_expr_tuple expr_tuple * materialize_temporary_expr_info +//@atd type materialize_temporary_expr_info = { +//@atd ?decl_ref : decl_ref option; +//@atd } +template +void ASTExporter::VisitMaterializeTemporaryExpr( + const MaterializeTemporaryExpr *Node) { + VisitExpr(Node); + + const ValueDecl *VD = Node->getExtendingDecl(); + ObjectScope Scope(OF, 0 + (bool)VD); + if (VD) { + OF.emitTag("decl_ref"); + dumpDeclRef(*VD); + } +} + +template +int ASTExporter::ExprWithCleanupsTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define expr_with_cleanups_tuple expr_tuple * expr_with_cleanups_info +//@atd type expr_with_cleanups_info = { +//@atd ~decl_refs : decl_ref list; +//@atd } +template +void ASTExporter::VisitExprWithCleanups( + const ExprWithCleanups *Node) { + VisitExpr(Node); + + bool HasDeclRefs = Node->getNumObjects() > 0; + ObjectScope Scope(OF, 0 + HasDeclRefs); + + if (HasDeclRefs) { + OF.emitTag("decl_refs"); + ArrayScope Scope(OF, Node->getNumObjects()); + for (unsigned i = 0, e = Node->getNumObjects(); i != e; ++i) + dumpDeclRef(*Node->getObject(i)); + } +} + +//@atd type cxx_temporary = pointer +template +void ASTExporter::dumpCXXTemporary(const CXXTemporary *Temporary) { + dumpPointer(Temporary); +} + +template +int ASTExporter::LambdaExprTupleSize() { + return ExprTupleSize() + DeclTupleSize(); +} + +//@atd #define lambda_expr_tuple expr_tuple * lambda_expr_info +//@atd type lambda_expr_info = { +//@atd lambda_decl: decl; +//@atd } +template +void ASTExporter::VisitLambdaExpr(const LambdaExpr *Node) { + VisitExpr(Node); + + ObjectScope Scope(OF, 1); + OF.emitTag("lambda_decl"); + dumpDecl(Node->getLambdaClass()); +} + +template +int ASTExporter::CXXNewExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_new_expr_tuple expr_tuple * cxx_new_expr_info +//@atd type cxx_new_expr_info = { +//@atd ~is_array : bool; +//@atd ?array_size_expr : pointer option; +//@atd ?initializer_expr : pointer option; +//@atd ~placement_args : pointer list; +//@atd } +template +void ASTExporter::VisitCXXNewExpr(const CXXNewExpr *Node) { + VisitExpr(Node); + + bool IsArray = Node->isArray(); + bool HasArraySize = Node->getArraySize().hasValue(); + bool HasInitializer = Node->hasInitializer(); + unsigned PlacementArgs = Node->getNumPlacementArgs(); + bool HasPlacementArgs = PlacementArgs > 0; + ObjectScope Scope( + OF, 0 + IsArray + HasArraySize + HasInitializer + HasPlacementArgs); + + // ?should_null_check : bool; + // OF.emitFlag("should_null_check", Node->shouldNullCheckAllocation()); + OF.emitFlag("is_array", IsArray); + if (HasArraySize) { + OF.emitTag("array_size_expr"); + dumpPointer(Node->getArraySize().getValue()); + } + if (HasInitializer) { + OF.emitTag("initializer_expr"); + dumpPointer(Node->getInitializer()); + } + if (HasPlacementArgs) { + OF.emitTag("placement_args"); + ArrayScope aScope(OF, PlacementArgs); + for (auto arg : Node->placement_arguments()) { + dumpPointer(arg); + } + } +} + +template +int ASTExporter::CXXDeleteExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_delete_expr_tuple expr_tuple * cxx_delete_expr_info +//@atd type cxx_delete_expr_info = { +//@atd ~is_array : bool; +//@atd destroyed_type : qual_type; +//@atd } +template +void ASTExporter::VisitCXXDeleteExpr(const CXXDeleteExpr *Node) { + VisitExpr(Node); + + bool IsArray = Node->isArrayForm(); + ObjectScope Scope(OF, 1 + IsArray); + + OF.emitFlag("is_array", IsArray); + + OF.emitTag("destroyed_type"); + dumpQualType(Node->getDestroyedType()); +} + +template +int ASTExporter::CXXDefaultArgExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_default_arg_expr_tuple expr_tuple * cxx_default_expr_info +//@atd type cxx_default_expr_info = { +//@atd ?init_expr : stmt option; +//@atd } +template +void ASTExporter::VisitCXXDefaultArgExpr( + const CXXDefaultArgExpr *Node) { + VisitExpr(Node); + + const Expr *InitExpr = Node->getExpr(); + ObjectScope Scope(OF, 0 + (bool)InitExpr); + if (InitExpr) { + OF.emitTag("init_expr"); + dumpStmt(InitExpr); + } +} + +template +int ASTExporter::CXXDefaultInitExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_default_init_expr_tuple expr_tuple * cxx_default_expr_info +template +void ASTExporter::VisitCXXDefaultInitExpr( + const CXXDefaultInitExpr *Node) { + VisitExpr(Node); + + const Expr *InitExpr = Node->getExpr(); + ObjectScope Scope(OF, 0 + (bool)InitExpr); + if (InitExpr) { + OF.emitTag("init_expr"); + dumpStmt(InitExpr); + } +} + +template +int ASTExporter::TypeTraitExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define type_trait_expr_tuple expr_tuple * type_trait_info +//@atd type type_trait_info = { +//@atd ~value : bool; +//@atd } +template +void ASTExporter::VisitTypeTraitExpr(const TypeTraitExpr *Node) { + VisitExpr(Node); + // FIXME: don't dump false when value is dependent + bool value = Node->isValueDependent() ? false : Node->getValue(); + ObjectScope Scope(OF, 0 + value); + OF.emitFlag("value", value); +} + +template +int ASTExporter::GenericSelectionExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define generic_selection_expr_tuple expr_tuple * generic_selection_info +//@atd type generic_selection_info = { +//@atd ?value : stmt option; +//@atd } +template +void ASTExporter::VisitGenericSelectionExpr( + const GenericSelectionExpr *Node) { + VisitExpr(Node); + const Expr *ResultExpr = Node->getResultExpr(); + ObjectScope Scope(OF, 0 + (bool)ResultExpr); + if (ResultExpr) { + OF.emitTag("value"); + dumpStmt(ResultExpr); + } +} + +template +int ASTExporter::CXXNoexceptExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define cxx_noexcept_expr_tuple expr_tuple * cxx_noexcept_expr_info +//@atd type cxx_noexcept_expr_info = { +//@atd ~value : bool; +//@atd } +template +void ASTExporter::VisitCXXNoexceptExpr(const CXXNoexceptExpr *Node) { + VisitExpr(Node); + bool value = Node->getValue(); + ObjectScope Scope(OF, 0 + value); + OF.emitFlag("value", value); +} + +////===----------------------------------------------------------------------===// +//// Obj-C Expressions +////===----------------------------------------------------------------------===// + +template +int ASTExporter::ObjCMessageExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_message_expr_tuple expr_tuple * obj_c_message_expr_info +//@atd type obj_c_message_expr_info = { +//@atd selector : string; +//@atd ~is_definition_found : bool; +//@atd ?decl_pointer : pointer option; +//@atd ~receiver_kind : receiver_kind +//@atd } +//@atd type receiver_kind = [ Instance | Class of qual_type | SuperInstance | +//@atd SuperClass ] +template +void ASTExporter::VisitObjCMessageExpr(const ObjCMessageExpr *Node) { + VisitExpr(Node); + + bool IsDefinitionFound = false; + // Do not rely on Node->getMethodDecl() - it might be wrong if + // selector doesn't type check (ie. method of subclass is called) + const ObjCInterfaceDecl *receiver = Node->getReceiverInterface(); + const Selector selector = Node->getSelector(); + const ObjCMethodDecl *m_decl = NULL; + if (receiver) { + bool IsInst = Node->isInstanceMessage(); + m_decl = receiver->lookupPrivateMethod(selector, IsInst); + // Look for definition first. It's possible that class redefines it without + // redeclaring. It needs to be defined in same translation unit to work. + if (m_decl) { + IsDefinitionFound = true; + } else { + // As a fallback look through method declarations in the interface. + // It's not very reliable (subclass might have redefined it) + // but it's better than nothing + IsDefinitionFound = false; + m_decl = receiver->lookupMethod(selector, IsInst); + } + } + // Fall back to the default method lookup method + if (!m_decl) { + m_decl = Node->getMethodDecl(); + } + + ObjCMessageExpr::ReceiverKind RK = Node->getReceiverKind(); + bool HasNonDefaultReceiverKind = RK != ObjCMessageExpr::Instance; + ObjectScope Scope( + OF, 1 + IsDefinitionFound + (bool)m_decl + HasNonDefaultReceiverKind); + + OF.emitTag("selector"); + OF.emitString(selector.getAsString()); + + if (m_decl) { + OF.emitFlag("is_definition_found", IsDefinitionFound); + OF.emitTag("decl_pointer"); + dumpPointer(m_decl); + } + + if (HasNonDefaultReceiverKind) { + OF.emitTag("receiver_kind"); + switch (RK) { + case ObjCMessageExpr::Class: { + VariantScope Scope(OF, "Class"); + dumpQualType(Node->getClassReceiver()); + } break; + case ObjCMessageExpr::SuperInstance: + OF.emitSimpleVariant("SuperInstance"); + break; + case ObjCMessageExpr::SuperClass: + OF.emitSimpleVariant("SuperClass"); + break; + case ObjCMessageExpr::Instance: + llvm_unreachable("unreachable"); + break; + } + } +} + +//@atd type selector = string +template +void ASTExporter::dumpSelector(const Selector sel) { + OF.emitString(sel.getAsString()); +} + +template +int ASTExporter::ObjCBoxedExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_boxed_expr_tuple expr_tuple * objc_boxed_expr_info +//@atd type objc_boxed_expr_info = { +//@atd ?boxing_method : selector option; +//@atd } +template +void ASTExporter::VisitObjCBoxedExpr(const ObjCBoxedExpr *Node) { + VisitExpr(Node); + ObjCMethodDecl *boxingMethod = Node->getBoxingMethod(); + ObjectScope Scope(OF, 0 + (bool)boxingMethod); + if (boxingMethod) { + OF.emitTag("boxing_method"); + dumpSelector(boxingMethod->getSelector()); + } +} + +template +int ASTExporter::ObjCAtCatchStmtTupleSize() { + return StmtTupleSize() + 1; +} +//@atd #define obj_c_at_catch_stmt_tuple stmt_tuple * obj_c_message_expr_kind +//@atd type obj_c_message_expr_kind = [ +//@atd | CatchParam of decl +//@atd | CatchAll +//@atd ] +template +void ASTExporter::VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node) { + VisitStmt(Node); + if (const VarDecl *CatchParam = Node->getCatchParamDecl()) { + VariantScope Scope(OF, "CatchParam"); + dumpDecl(CatchParam); + } else { + OF.emitSimpleVariant("CatchAll"); + } +} + +template +int ASTExporter::ObjCEncodeExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_encode_expr_tuple expr_tuple * objc_encode_expr_info +//@atd type objc_encode_expr_info = { +//@atd qual_type : qual_type; +//@atd raw : string; +//@atd } +template +void ASTExporter::VisitObjCEncodeExpr(const ObjCEncodeExpr *Node) { + VisitExpr(Node); + ObjectScope Scope(OF, 2); + OF.emitTag("qual_type"); + dumpQualType(Node->getEncodedType()); + OF.emitTag("raw"); + OF.emitString(Node->getEncodedType().getAsString()); +} + +template +int ASTExporter::ObjCSelectorExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_selector_expr_tuple expr_tuple * selector +template +void ASTExporter::VisitObjCSelectorExpr( + const ObjCSelectorExpr *Node) { + VisitExpr(Node); + dumpSelector(Node->getSelector()); +} + +template +int ASTExporter::ObjCProtocolExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_protocol_expr_tuple expr_tuple * decl_ref +template +void ASTExporter::VisitObjCProtocolExpr( + const ObjCProtocolExpr *Node) { + VisitExpr(Node); + dumpDeclRef(*Node->getProtocol()); +} + +template +int ASTExporter::ObjCPropertyRefExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_property_ref_expr_tuple expr_tuple * obj_c_property_ref_expr_info +//@atd type obj_c_property_ref_expr_info = { +//@atd kind : property_ref_kind; +//@atd ~is_super_receiver : bool; +//@atd ~is_messaging_getter : bool; +//@atd ~is_messaging_setter : bool; +//@atd } +//@atd type property_ref_kind = [ +//@atd | MethodRef of obj_c_method_ref_info +//@atd | PropertyRef of decl_ref +//@atd ] +//@atd type obj_c_method_ref_info = { +//@atd ?getter : selector option; +//@atd ?setter : selector option +//@atd } +template +void ASTExporter::VisitObjCPropertyRefExpr( + const ObjCPropertyRefExpr *Node) { + VisitExpr(Node); + + bool IsSuperReceiver = Node->isSuperReceiver(); + bool IsMessagingGetter = Node->isMessagingGetter(); + bool IsMessagingSetter = Node->isMessagingSetter(); + ObjectScope Scope(OF, + 1 + IsSuperReceiver + IsMessagingGetter + + IsMessagingSetter); // not covered by tests + + OF.emitTag("kind"); + if (Node->isImplicitProperty()) { + VariantScope Scope(OF, "MethodRef"); + { + bool HasImplicitPropertyGetter = Node->getImplicitPropertyGetter(); + bool HasImplicitPropertySetter = Node->getImplicitPropertySetter(); + ObjectScope Scope( + OF, 0 + HasImplicitPropertyGetter + HasImplicitPropertySetter); + + if (HasImplicitPropertyGetter) { + OF.emitTag("getter"); + dumpSelector(Node->getImplicitPropertyGetter()->getSelector()); + } + if (HasImplicitPropertySetter) { + OF.emitTag("setter"); + dumpSelector(Node->getImplicitPropertySetter()->getSelector()); + } + } + } else { + VariantScope Scope(OF, "PropertyRef"); + dumpDeclRef(*Node->getExplicitProperty()); + } + OF.emitFlag("is_super_receiver", IsSuperReceiver); + OF.emitFlag("is_messaging_getter", IsMessagingGetter); + OF.emitFlag("is_messaging_setter", IsMessagingSetter); +} + +template +int ASTExporter::ObjCSubscriptRefExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_subscript_ref_expr_tuple expr_tuple * obj_c_subscript_ref_expr_info +//@atd type obj_c_subscript_ref_expr_info = { +//@atd kind : obj_c_subscript_kind; +//@atd ?getter : selector option; +//@atd ?setter : selector option +//@atd } +//@atd type obj_c_subscript_kind = [ ArraySubscript | DictionarySubscript ] +template +void ASTExporter::VisitObjCSubscriptRefExpr( + const ObjCSubscriptRefExpr *Node) { + VisitExpr(Node); + + bool HasGetter = Node->getAtIndexMethodDecl(); + bool HasSetter = Node->setAtIndexMethodDecl(); + ObjectScope Scope(OF, 1 + HasGetter + HasSetter); // not covered by tests + + OF.emitTag("kind"); + if (Node->isArraySubscriptRefExpr()) { + OF.emitSimpleVariant("ArraySubscript"); + } else { + OF.emitSimpleVariant("DictionarySubscript"); + } + if (HasGetter) { + OF.emitTag("getter"); + dumpSelector(Node->getAtIndexMethodDecl()->getSelector()); + } + if (HasSetter) { + OF.emitTag("setter"); + dumpSelector(Node->setAtIndexMethodDecl()->getSelector()); + } +} + +template +int ASTExporter::ObjCBoolLiteralExprTupleSize() { + return ExprTupleSize() + 1; +} +//@atd #define obj_c_bool_literal_expr_tuple expr_tuple * int +template +void ASTExporter::VisitObjCBoolLiteralExpr( + const ObjCBoolLiteralExpr *Node) { + VisitExpr(Node); + OF.emitInteger(Node->getValue()); +} + +template +int ASTExporter::ObjCAvailabilityCheckExprTupleSize() { + return ExprTupleSize() + 1; +} + +//@atd #define obj_c_availability_check_expr_tuple expr_tuple * obj_c_availability_check_expr_info +//@atd type obj_c_availability_check_expr_info = { +//@atd ?version : string option; +//@atd } +template +void ASTExporter::VisitObjCAvailabilityCheckExpr( + const ObjCAvailabilityCheckExpr *Expr) { + VisitExpr(Expr); + bool HasVersion = Expr->hasVersion(); + ObjectScope Scope(OF, HasVersion); + if (HasVersion) { + OF.emitTag("version"); + // cast is safe, getVersion() should be marked const but isn't +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcast-qual" + ObjCAvailabilityCheckExpr *E = (ObjCAvailabilityCheckExpr *)Expr; +#pragma clang diagnostic pop + OF.emitString(E->getVersion().getAsString()); + } +} + +template +int ASTExporter::ObjCArrayLiteralTupleSize() { + return ExprTupleSize() + 1; +} + +//@atd #define obj_c_array_literal_tuple expr_tuple * obj_c_array_literal_expr_info +//@atd type obj_c_array_literal_expr_info = { +//@atd ?array_method : pointer option; +//@atd } +template +void ASTExporter::VisitObjCArrayLiteral( + const ObjCArrayLiteral *Expr) { + VisitExpr(Expr); + ObjCMethodDecl *ArrayMethod = Expr->getArrayWithObjectsMethod(); + ObjectScope Scope(OF, 1); + if (ArrayMethod) { + OF.emitTag("array_method"); + dumpPointer(ArrayMethod); + } +} + +template +int ASTExporter::ObjCDictionaryLiteralTupleSize() { + return ExprTupleSize() + 1; +} + +//@atd #define obj_c_dictionary_literal_tuple expr_tuple * obj_c_dictionary_literal_expr_info +//@atd type obj_c_dictionary_literal_expr_info = { +//@atd ?dict_method : pointer option; +//@atd } +template +void ASTExporter::VisitObjCDictionaryLiteral( + const ObjCDictionaryLiteral *Expr) { + VisitExpr(Expr); + ObjCMethodDecl *DictMethod = Expr->getDictWithObjectsMethod(); + ObjectScope Scope(OF, 1); + if (DictMethod) { + OF.emitTag("dict_method"); + dumpPointer(DictMethod); + } +} + +// Main variant for statements +//@atd type stmt = [ +#define STMT(CLASS, PARENT) //@atd | CLASS of (@CLASS@_tuple) +#define ABSTRACT_STMT(STMT) +#include +//@atd ] + +//===----------------------------------------------------------------------===// +// Comments +//===----------------------------------------------------------------------===// + +template +const char *ASTExporter::getCommandName(unsigned CommandID) { + return Context.getCommentCommandTraits().getCommandInfo(CommandID)->Name; +} + +template +void ASTExporter::dumpFullComment(const FullComment *C) { + FC = C; + dumpComment(C); + FC = 0; +} + +#define COMMENT(CLASS, PARENT) //@atd #define @CLASS@_tuple @PARENT@_tuple +#define ABSTRACT_COMMENT(COMMENT) COMMENT +#include +template +void ASTExporter::dumpComment(const Comment *C) { + if (!C) { + // We use a fixed NoComment node to represent null pointers + C = NullPtrComment; + } + VariantScope Scope(OF, std::string(C->getCommentKindName())); + { + TupleScope Scope(OF, + ASTExporter::tupleSizeOfCommentKind(C->getCommentKind())); + ConstCommentVisitor>::visit(C); + } +} + +template +int ASTExporter::CommentTupleSize() { + return 2; +} +//@atd #define comment_tuple comment_info * comment list +//@atd type comment_info = { +//@atd parent_pointer : pointer; +//@atd source_range : source_range; +//@atd } +template +void ASTExporter::visitComment(const Comment *C) { + { + ObjectScope ObjComment(OF, 2); // not covered by tests + OF.emitTag("parent_pointer"); + dumpPointer(C); + OF.emitTag("source_range"); + dumpSourceRange(C->getSourceRange()); + } + { + Comment::child_iterator I = C->child_begin(), E = C->child_end(); + ArrayScope Scope(OF, std::distance(I, E)); + for (; I != E; ++I) { + dumpComment(*I); + } + } +} + +// template +// void ASTExporter::visitInlineCommandComment(const +// InlineCommandComment *C) { +// OS << " Name=\"" << getCommandName(C->getCommandID()) << "\""; +// switch (C->getRenderKind()) { +// case InlineCommandComment::RenderNormal: +// OS << " RenderNormal"; +// break; +// case InlineCommandComment::RenderBold: +// OS << " RenderBold"; +// break; +// case InlineCommandComment::RenderMonospaced: +// OS << " RenderMonospaced"; +// break; +// case InlineCommandComment::RenderEmphasized: +// OS << " RenderEmphasized"; +// break; +// } +// +// for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i) +// OS << " Arg[" << i << "]=\"" << C->getArgText(i) << "\""; +//} +// +// template +// void ASTExporter::visitHTMLStartTagComment(const +// HTMLStartTagComment *C) { +// OS << " Name=\"" << C->getTagName() << "\""; +// if (C->getNumAttrs() != 0) { +// OS << " Attrs: "; +// for (unsigned i = 0, e = C->getNumAttrs(); i != e; ++i) { +// const HTMLStartTagComment::Attribute &Attr = C->getAttr(i); +// OS << " \"" << Attr.Name << "=\"" << Attr.Value << "\""; +// } +// } +// if (C->isSelfClosing()) +// OS << " SelfClosing"; +//} +// +// template +// void ASTExporter::visitHTMLEndTagComment(const HTMLEndTagComment +// *C) { +// OS << " Name=\"" << C->getTagName() << "\""; +//} +// +// template +// void ASTExporter::visitBlockCommandComment(const +// BlockCommandComment *C) { +// OS << " Name=\"" << getCommandName(C->getCommandID()) << "\""; +// for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i) +// OS << " Arg[" << i << "]=\"" << C->getArgText(i) << "\""; +//} +// +// template +// void ASTExporter::visitParamCommandComment(const +// ParamCommandComment *C) { +// OS << " " << ParamCommandComment::getDirectionAsString(C->getDirection()); +// +// if (C->isDirectionExplicit()) +// OS << " explicitly"; +// else +// OS << " implicitly"; +// +// if (C->hasParamName()) { +// if (C->isParamIndexValid()) +// OS << " Param=\"" << C->getParamName(FC) << "\""; +// else +// OS << " Param=\"" << C->getParamNameAsWritten() << "\""; +// } +// +// if (C->isParamIndexValid() && !C->isVarArgParam()) +// OS << " ParamIndex=" << C->getParamIndex(); +//} +// +// template +// void ASTExporter::visitTParamCommandComment(const +// TParamCommandComment *C) { +// if (C->hasParamName()) { +// if (C->isPositionValid()) +// OS << " Param=\"" << C->getParamName(FC) << "\""; +// else +// OS << " Param=\"" << C->getParamNameAsWritten() << "\""; +// } +// +// if (C->isPositionValid()) { +// OS << " Position=<"; +// for (unsigned i = 0, e = C->getDepth(); i != e; ++i) { +// OS << C->getIndex(i); +// if (i != e - 1) +// OS << ", "; +// } +// OS << ">"; +// } +//} +// +// template +// void ASTExporter::visitVerbatimBlockComment(const +// VerbatimBlockComment *C) { +// OS << " Name=\"" << getCommandName(C->getCommandID()) << "\"" +// " CloseName=\"" << C->getCloseName() << "\""; +//} +// +// template +// void ASTExporter::visitVerbatimBlockLineComment( +// const VerbatimBlockLineComment *C) { +// OS << " Text=\"" << C->getText() << "\""; +//} +// +// template +// void ASTExporter::visitVerbatimLineComment(const +// VerbatimLineComment *C) { +// OS << " Text=\"" << C->getText() << "\""; +//} + +//@atd type comment = [ +#define COMMENT(CLASS, PARENT) //@atd | CLASS of (@CLASS@_tuple) +#define ABSTRACT_COMMENT(COMMENT) +#include +//@atd ] + +#define TYPE(DERIVED, BASE) //@atd #define @DERIVED@_type_tuple @BASE@_tuple +#define ABSTRACT_TYPE(DERIVED, BASE) TYPE(DERIVED, BASE) +TYPE(None, Type) +#include +#undef TYPE +#undef ABSTRACT_TYPE + +template +void ASTExporter::dumpType(const Type *T) { + + std::string typeClassName = T ? T->getTypeClassName() : "None"; + VariantScope Scope(OF, typeClassName + "Type"); + { + if (T) { + // TypeVisitor assumes T is non-null + TupleScope Scope(OF, + ASTExporter::tupleSizeOfTypeClass(T->getTypeClass())); + TypeVisitor>::Visit(T); + } else { + TupleScope Scope(OF, 1); + VisitType(nullptr); + } + } +} + +//@atd type type_ptr = int wrap +template +void ASTExporter::dumpPointerToType(const Type *T) { + dumpPointer(T); +} + +template +void ASTExporter::dumpQualTypeNoQuals(const QualType &qt) { + const Type *T = qt.getTypePtrOrNull(); + dumpPointerToType(T); +} + +template +int ASTExporter::TypeTupleSize() { + return 1; +} +template +int ASTExporter::TypeWithChildInfoTupleSize() { + return 2; +} +//@atd #define type_tuple type_info +//@atd type type_info = { +//@atd pointer : pointer; +//@atd ?desugared_type : type_ptr option; +//@atd } +//@atd #define type_with_child_info type_info * qual_type +//@atd #define qual_type_with_child_info type_info * qual_type +template +void ASTExporter::VisitType(const Type *T) { + // NOTE: T can (and will) be null here!! + + bool HasDesugaredType = T && T->getUnqualifiedDesugaredType() != T; + ObjectScope Scope(OF, 1 + HasDesugaredType); + + OF.emitTag("pointer"); + dumpPointer(T); + + if (HasDesugaredType) { + OF.emitTag("desugared_type"); + dumpPointerToType(T->getUnqualifiedDesugaredType()); + } +} + +template +int ASTExporter::AdjustedTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define adjusted_type_tuple type_with_child_info +template +void ASTExporter::VisitAdjustedType(const AdjustedType *T) { + VisitType(T); + dumpQualType(T->getAdjustedType()); +} + +template +int ASTExporter::ArrayTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define array_type_tuple type_tuple * array_type_info +//@atd type array_type_info = { +//@atd element_type : qual_type; +//@atd ?stride : int option; +//@atd } +template +void ASTExporter::VisitArrayType(const ArrayType *T) { + VisitType(T); + QualType EltT = T->getElementType(); + bool HasStride = hasMeaningfulTypeInfo(EltT.getTypePtr()); + ObjectScope Scope(OF, 1 + HasStride); + OF.emitTag("element_type"); + dumpQualType(EltT); + if (HasStride) { + OF.emitTag("stride"); + OF.emitInteger(Context.getTypeInfo(EltT).Width / 8); + }; +} + +template +int ASTExporter::ConstantArrayTypeTupleSize() { + return ArrayTypeTupleSize() + 1; +} +//@atd #define constant_array_type_tuple array_type_tuple * int +template +void ASTExporter::VisitConstantArrayType( + const ConstantArrayType *T) { + VisitArrayType(T); + OF.emitInteger(T->getSize().getLimitedValue()); +} + +template +int ASTExporter::VariableArrayTypeTupleSize() { + return ArrayTypeTupleSize() + 1; +} +//@atd #define variable_array_type_tuple array_type_tuple * pointer +template +void ASTExporter::VisitVariableArrayType( + const VariableArrayType *T) { + VisitArrayType(T); + dumpPointer(T->getSizeExpr()); +} + +template +int ASTExporter::AtomicTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define atomic_type_tuple type_with_child_info +template +void ASTExporter::VisitAtomicType(const AtomicType *T) { + VisitType(T); + dumpQualType(T->getValueType()); +} + +//@atd type attribute_kind = [ +#define ATTR(NAME) //@atd | NAME@@AttrKind +#include +//@atd ] + +template +void ASTExporter::dumpAttrKind(attr::Kind Kind) { + switch (Kind) { +#define ATTR(NAME) \ + case AttributedType::Kind::NAME: \ + OF.emitSimpleVariant(#NAME "AttrKind"); \ + return; +#include + } + llvm_unreachable("Attribute kind that is not part of AttrList.inc!"); +} + +//@atd type objc_lifetime_attr = [ +//@atd | OCL_None +//@atd | OCL_ExplicitNone +//@atd | OCL_Strong +//@atd | OCL_Weak +//@atd | OCL_Autoreleasing +//@atd ] +template +void ASTExporter::dumpObjCLifetimeQual( + Qualifiers::ObjCLifetime qual) { + switch (qual) { + case Qualifiers::ObjCLifetime::OCL_None: + OF.emitSimpleVariant("OCL_None"); + break; + case Qualifiers::ObjCLifetime::OCL_ExplicitNone: + OF.emitSimpleVariant("OCL_ExplicitNone"); + break; + case Qualifiers::ObjCLifetime::OCL_Strong: + OF.emitSimpleVariant("OCL_Strong"); + break; + case Qualifiers::ObjCLifetime::OCL_Weak: + OF.emitSimpleVariant("OCL_Weak"); + break; + case Qualifiers::ObjCLifetime::OCL_Autoreleasing: + OF.emitSimpleVariant("OCL_Autoreleasing"); + break; + } +} + +template +int ASTExporter::AttributedTypeTupleSize() { + return TypeTupleSize() + 1; +} + +//@atd #define attributed_type_tuple type_tuple * attr_type_info +//@atd type attr_type_info = { +//@atd attr_kind : attribute_kind; +//@atd ~lifetime : objc_lifetime_attr +//@atd } +template +void ASTExporter::VisitAttributedType(const AttributedType *T) { + VisitType(T); + Qualifiers quals = QualType(T, 0).getQualifiers(); + + bool hasLifetimeQual = + quals.hasObjCLifetime() && + quals.getObjCLifetime() != Qualifiers::ObjCLifetime::OCL_None; + ObjectScope Scope(OF, 1 + hasLifetimeQual); + OF.emitTag("attr_kind"); + dumpAttrKind(T->getAttrKind()); + if (hasLifetimeQual) { + OF.emitTag("lifetime"); + dumpObjCLifetimeQual(quals.getObjCLifetime()); + } +} + +template +int ASTExporter::BlockPointerTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define block_pointer_type_tuple type_with_child_info +template +void ASTExporter::VisitBlockPointerType(const BlockPointerType *T) { + VisitType(T); + dumpQualType(T->getPointeeType()); +} + +template +int ASTExporter::BuiltinTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define builtin_type_tuple type_tuple * builtin_type_kind +//@atd type builtin_type_kind = [ +#define BUILTIN_TYPE(TYPE, ID) //@atd | TYPE +#include +//@atd ] +template +void ASTExporter::VisitBuiltinType(const BuiltinType *T) { + VisitType(T); + std::string type_name; + switch (T->getKind()) { +#define BUILTIN_TYPE(TYPE, ID) \ + case BuiltinType::TYPE: { \ + type_name = #TYPE; \ + break; \ + } +#include +#define IMAGE_TYPE(ImgType, ID, SingletonId, Access, Suffix) \ + case BuiltinType::ID: +#include +#define EXT_OPAQUE_TYPE(Name, Id, Ext) case BuiltinType::Id: +#include + llvm_unreachable("OCL builtin types are unsupported"); + break; + } + OF.emitSimpleVariant(type_name); +} + +template +int ASTExporter::DecltypeTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define decltype_type_tuple type_with_child_info +template +void ASTExporter::VisitDecltypeType(const DecltypeType *T) { + VisitType(T); + dumpQualType(T->getUnderlyingType()); +} + +template +int ASTExporter::FunctionTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define function_type_tuple type_tuple * function_type_info +//@atd type function_type_info = { +//@atd return_type : qual_type +//@atd } +template +void ASTExporter::VisitFunctionType(const FunctionType *T) { + VisitType(T); + ObjectScope Scope(OF, 1); + OF.emitTag("return_type"); + dumpQualType(T->getReturnType()); +} + +template +int ASTExporter::FunctionProtoTypeTupleSize() { + return FunctionTypeTupleSize() + 1; +} +//@atd #define function_proto_type_tuple function_type_tuple * params_type_info +//@atd type params_type_info = { +//@atd ~params_type : qual_type list +//@atd } +template +void ASTExporter::VisitFunctionProtoType( + const FunctionProtoType *T) { + VisitFunctionType(T); + + bool HasParamsType = T->getNumParams() > 0; + ObjectScope Scope(OF, 0 + HasParamsType); + + if (HasParamsType) { + OF.emitTag("params_type"); + ArrayScope aScope(OF, T->getParamTypes().size()); + for (const auto ¶mType : T->getParamTypes()) { + dumpQualType(paramType); + } + } +} + +template +int ASTExporter::MemberPointerTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define member_pointer_type_tuple type_with_child_info +template +void ASTExporter::VisitMemberPointerType( + const MemberPointerType *T) { + VisitType(T); + dumpQualType(T->getPointeeType()); +} + +template +int ASTExporter::ObjCObjectPointerTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define obj_c_object_pointer_type_tuple qual_type_with_child_info +template +void ASTExporter::VisitObjCObjectPointerType( + const ObjCObjectPointerType *T) { + VisitType(T); + dumpQualType(T->getPointeeType()); +} + +template +int ASTExporter::ObjCObjectTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define obj_c_object_type_tuple type_tuple * objc_object_type_info +//@atd type objc_object_type_info = { +//@atd base_type : type_ptr; +//@atd ~protocol_decls_ptr : pointer list; +//@atd ~type_args : qual_type list; +//@atd } +template +void ASTExporter::VisitObjCObjectType(const ObjCObjectType *T) { + VisitType(T); + + int numProtocols = T->getNumProtocols(); + bool HasProtocols = numProtocols > 0; + bool isSpecialized = T->isSpecialized(); + ObjectScope Scope(OF, 1 + HasProtocols + isSpecialized); + + OF.emitTag("base_type"); + dumpQualTypeNoQuals(T->getBaseType()); + + if (HasProtocols) { + OF.emitTag("protocol_decls_ptr"); + ArrayScope aScope(OF, numProtocols); + for (int i = 0; i < numProtocols; i++) { + dumpPointer(T->getProtocol(i)); + } + } + + if (isSpecialized) { + OF.emitTag("type_args"); + ArrayScope aScope(OF, T->getTypeArgs().size()); + for (auto &argType : T->getTypeArgs()) { + dumpQualType(argType); + }; + } +} + +template +int ASTExporter::ObjCInterfaceTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define obj_c_interface_type_tuple type_tuple * pointer +template +void ASTExporter::VisitObjCInterfaceType( + const ObjCInterfaceType *T) { + // skip VisitObjCObjectType deliberately - ObjCInterfaceType can't have any + // protocols + + VisitType(T); + dumpPointer(T->getDecl()); +} + +template +int ASTExporter::ParenTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define paren_type_tuple type_with_child_info +template +void ASTExporter::VisitParenType(const ParenType *T) { + // this is just syntactic sugar + VisitType(T); + dumpQualType(T->getInnerType()); +} + +template +int ASTExporter::PointerTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define pointer_type_tuple qual_type_with_child_info +template +void ASTExporter::VisitPointerType(const PointerType *T) { + VisitType(T); + dumpQualType(T->getPointeeType()); +} + +template +int ASTExporter::ReferenceTypeTupleSize() { + return TypeWithChildInfoTupleSize(); +} +//@atd #define reference_type_tuple qual_type_with_child_info +template +void ASTExporter::VisitReferenceType(const ReferenceType *T) { + VisitType(T); + dumpQualType(T->getPointeeType()); +} + +template +int ASTExporter::TagTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define tag_type_tuple type_tuple * pointer +template +void ASTExporter::VisitTagType(const TagType *T) { + VisitType(T); + dumpPointer(T->getDecl()); +} + +template +int ASTExporter::TypedefTypeTupleSize() { + return TypeTupleSize() + 1; +} +//@atd #define typedef_type_tuple type_tuple * typedef_type_info +//@atd type typedef_type_info = { +//@atd child_type : qual_type; +//@atd decl_ptr : pointer; +//@atd } +template +void ASTExporter::VisitTypedefType(const TypedefType *T) { + VisitType(T); + ObjectScope Scope(OF, 2); + OF.emitTag("child_type"); + dumpQualType(T->desugar()); + OF.emitTag("decl_ptr"); + dumpPointer(T->getDecl()); +} + +//===----------------------------------------------------------------------===// +// Attr dumping methods. +//===----------------------------------------------------------------------===// + +template +void ASTExporter::dumpAttr(const Attr *A) { + std::string tag; + switch (A->getKind()) { +#define ATTR(NAME) \ + case attr::Kind::NAME: \ + tag = #NAME "Attr"; \ + break; +#include + } + VariantScope Scope(OF, tag); + { + TupleScope Scope(OF, ASTExporter::tupleSizeOfAttrKind(A->getKind())); + ConstAttrVisitor>::Visit(A); + } +} + +template +int ASTExporter::AttrTupleSize() { + return 1; +} + +//@atd type attribute_info = { +//@atd pointer : pointer; +//@atd source_range : source_range; +//@atd } +//@atd type attr_tuple = attribute_info +template +void ASTExporter::VisitAttr(const Attr *A) { + ObjectScope Scope(OF, 2); + OF.emitTag("pointer"); + dumpPointer(A); + OF.emitTag("source_range"); + dumpSourceRange(A->getRange()); +} + +// Default aliases for generating variant components +// The main variant is defined at the end of section. +#define ATTR(NAME) //@atd #define @NAME@_attr_tuple attribute_info +#include + +//@atd type version_tuple = { +//@atd major: int; +//@atd ?minor: int option; +//@atd ?subminor: int option; +//@atd ?build: int option; +//@atd } +template +void ASTExporter::dumpVersionTuple(const VersionTuple &VT) { + Optional minor = VT.getMinor(); + Optional subminor = VT.getSubminor(); + Optional build = VT.getBuild(); + ObjectScope Scope( + OF, 1 + minor.hasValue() + subminor.hasValue() + build.hasValue()); + OF.emitTag("major"); + OF.emitInteger(VT.getMajor()); + if (minor.hasValue()) { + OF.emitTag("minor"); + OF.emitInteger(minor.getValue()); + } + if (subminor.hasValue()) { + OF.emitTag("subminor"); + OF.emitInteger(subminor.getValue()); + } + if (build.hasValue()) { + OF.emitTag("build"); + OF.emitInteger(build.getValue()); + } +} + +template +int ASTExporter::AnnotateAttrTupleSize() { + return AttrTupleSize() + 1; +} +//@atd #define annotate_attr_tuple attr_tuple * string +template +void ASTExporter::VisitAnnotateAttr(const AnnotateAttr *A) { + VisitAttr(A); + OF.emitString(A->getAnnotation().str()); +} + +template +int ASTExporter::AvailabilityAttrTupleSize() { + return AttrTupleSize() + 1; +} +//@atd #define availability_attr_tuple attr_tuple * availability_attr_info +//@atd type availability_attr_info = { +//@atd ?platform: string option; +//@atd introduced: version_tuple; +//@atd } +template +void ASTExporter::VisitAvailabilityAttr(const AvailabilityAttr *A) { + VisitAttr(A); + { + IdentifierInfo *platform = A->getPlatform(); + ObjectScope Scope(OF, 2 + (bool)platform); + if (platform != nullptr) { + OF.emitTag("platform"); + OF.emitString(platform->getNameStart()); + } + OF.emitTag("introduced"); + dumpVersionTuple(A->getIntroduced()); + } +} + +template +int ASTExporter::SentinelAttrTupleSize() { + return AttrTupleSize() + 1; +} +//@atd #define sentinel_attr_tuple attr_tuple * sentinel_attr_info +//@atd type sentinel_attr_info = { +//@atd sentinel: int; +//@atd null_pos: int; +//@atd } +template +void ASTExporter::VisitSentinelAttr(const SentinelAttr *A) { + VisitAttr(A); + ObjectScope Scope(OF, 2); + OF.emitTag("sentinel"); + OF.emitInteger(A->getSentinel()); + OF.emitTag("null_pos"); + OF.emitInteger(A->getNullPos()); +} + +template +int ASTExporter::VisibilityAttrTupleSize() { + return AttrTupleSize() + 1; +} +//@atd #define visibility_attr_tuple attr_tuple * visibility_attr +//@atd type visibility_attr = [ +//@atd | DefaultVisibility +//@atd | HiddenVisibility +//@atd | ProtectedVisibility +//@atd ] +template +void ASTExporter::VisitVisibilityAttr(const VisibilityAttr *A) { + VisitAttr(A); + switch (A->getVisibility()) { + case VisibilityAttr::Default: + OF.emitSimpleVariant("DefaultVisibility"); + break; + case VisibilityAttr::Hidden: + OF.emitSimpleVariant("HiddenVisibility"); + break; + case VisibilityAttr::Protected: + OF.emitSimpleVariant("ProtectedVisibility"); + break; + } +} + +//@atd type attribute = [ +#define ATTR(X) //@atd | X@@Attr of (@X@_attr_tuple) +#include +//@atd ] + +//@atd type c_type = [ +#define TYPE(CLASS, PARENT) //@atd | CLASS@@Type of (@CLASS@_type_tuple) +#define ABSTRACT_TYPE(CLASS, PARENT) +TYPE(None, Type) +#include +//@atd ] + +template +class ExporterASTConsumer : public ASTConsumer { + private: + std::shared_ptr options; + std::unique_ptr OS; + + public: + using ASTConsumerOptions = ASTLib::ASTExporterOptions; + using PreprocessorHandler = ASTPluginLib::EmptyPreprocessorHandler; + using PreprocessorHandlerData = ASTPluginLib::EmptyPreprocessorHandlerData; + + ExporterASTConsumer(const CompilerInstance &CI, + std::shared_ptr options, + std::shared_ptr sharedData, + std::unique_ptr &&OS) + : options(options), OS(std::move(OS)) { + if (ForceYojson) { + options->atdWriterOptions.useYojson = true; + } + } + + virtual void HandleTranslationUnit(ASTContext &Context) { + TranslationUnitDecl *D = Context.getTranslationUnitDecl(); + ASTExporter P(*OS, Context, *options); + P.dumpDecl(D); + } +}; + +typedef ASTPluginLib::SimplePluginASTAction< + ASTLib::ExporterASTConsumer> + JsonExporterASTAction; +typedef ASTPluginLib::SimplePluginASTAction< + ASTLib::ExporterASTConsumer> + YojsonExporterASTAction; +typedef ASTPluginLib::SimplePluginASTAction< + ASTLib::ExporterASTConsumer, + true>> + BiniouExporterASTAction; + +} // end of namespace ASTLib diff --git a/facebook-clang-plugins/libtooling/ATD_GUIDELINES.md b/facebook-clang-plugins/libtooling/ATD_GUIDELINES.md new file mode 100644 index 000000000..4f44ffa17 --- /dev/null +++ b/facebook-clang-plugins/libtooling/ATD_GUIDELINES.md @@ -0,0 +1,279 @@ +Guidelines for writing ATD annotations in ASTExporter.cpp +========================================================= + +The ATD specifications inlined in ASTExporter.cpp are used to generate Ocaml parsers using `atdgen`. Those annotations must reflect +closely the Yojson/Json/Biniou emitted by the C++ plugin. + +The ATD language and the parser generating tool `atdgen` are documented here: + https://atd.readthedocs.io/en/latest/atdgen.html + +ATD basics +---------- + +The definition of object in ASTExporter.cpp typically look like this: +``` +//@atd type record = { +//@atd mandatory_field : string +//@atd ?optional_int : int option +//@atd ~string_empty_by_default : string +//@atd } +``` + +Each line of ATD definitions must start with `//@atd`-style comments. + +The `?` symbols mean that an absent field is ok and maps to the ocaml value `None`. +The `~` symbols mean that an absent field is ok and maps to some default value for this type. + +The `` annotations are currently required to disambiguate records on the ocaml side. The prefix should be +made the first letters of the C++ types, except for a few exceptions (e.g. `CXX` is mapped to `x`). + +Valid Yojson values for this specification are for instance: +``` +{ "mandatory_field" : "foo" } +{ "mandatory_field" : "foo", "optional_int" : 3 } +``` + +Simple example +-------------- + +``` +//@atd type source_location = { +//@atd ?file : string option; +//@atd ?line : int option; +//@atd ?column : int option; +//@atd } +template +void ASTExporter::dumpSourceLocation(SourceLocation Loc) { + + SourceLocation SpellingLoc = SM.getSpellingLoc(Loc); + PresumedLoc PLoc = SM.getPresumedLoc(SpellingLoc); + if (PLoc.isInvalid()) { + // Outputs an object. The closing brace will be added when 'Scope' is destroyed. + // This is typical in C++ : http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization + // Second argument encodes size of an object. In this case there are 0 tags exported + ObjectScope Scope(OF, 0); + // Early return is ok because all fields are optional. + // return will destroy Scope and add closing brace + return; + } + + // There are at most 3 tags exported in this case. It's ok to specify upper bound + // on the size of the object. It will be correct, but inefficient. + ObjectScope Scope(OF, 3); + + if (strcmp(PLoc.getFilename(), LastLocFilename) != 0) { + // emits the tag of the field 'file' + OF.emitTag("file"); + // emits a string (since we do emit something, the ocaml value is 'Some (...)') + OF.emitString(PLoc.getFilename()); + OF.emitTag("line"); + OF.emitInteger(PLoc.getLine()); + OF.emitTag("column"); + OF.emitInteger(PLoc.getColumn()); + } +} // Scope gets destroyed here and adds closing brace +``` + +Note that parser expects the C++ code to emit the corresponding fields in the same order. + +More complex example +-------------------- + +To get types of AST nodes, exporter relies on generated header files from clang. +``` +//@atd type decl_ref = { +//@atd kind : decl_kind; (* ATD type declared below *) +//@atd ?name : string; +//@atd ~is_hidden : bool; +//@atd ?qual_type : qual_type option +//@atd } +//@atd +//@atd type decl_kind = [ + +// define macros used in clang/AST/DeclNodes.inc to produce ATD annotations +#define DECL(DERIVED, BASE) //@atd | DERIVED +#define ABSTRACT_DECL(DECL) DECL +// clang/AST/DeclNodes.inc file contains all possible Decl nodes +#include + +//@atd ] + +template +void ASTExporter::dumpBareDeclRef(const Decl &D) { + const NamedDecl *ND = dyn_cast(&D); + bool isHidden = ND ? ND->isHidden() : false; + const ValueDecl *VD = dyn_cast(&D); + + // specify exact size of the scope. + ObjectScope Scope(OF, 1 + (bool)ND + isHidden + (bool)VD); + OF.emitTag("kind"); + // case of an algebraic datatype that carries no value (like a C enum field) + OF.emitSimpleVariant(D.getDeclKindName()); + + // ok not to output anything because the field is optional + if (ND) { + OF.emitTag("name"); + OF.emitString(ND->getNameAsString()); + // flags correspond to ATD fields of the form "~tag : bool" + OF.emitFlag("is_hidden", ND->isHidden()); + } + // ok not to output anything because the field is optional + if (VD) { + OF.emitTag("qual_type"); + dumpQualType(VD->getType()); // will emit value for a QualType + } +} +``` + +The complex definition for decl_kind is processed in several stages. + +First we use an adequate node of the clang preprocessor and expand the `#include ` to following code: +``` +//@atd type decl_kind = [ +//@atd | AccessSpec +//@atd | Block +//@atd | Captured +//@atd (* ... *) +//@atd ] +``` + +Then we extract the ATD specifications by looking for `//@atd`-style comments +``` +type decl_kind = [ +| AccessSpec +| Block +| Captured +(* ... *) +] +``` + +After calling `atdgen`, the final Ocaml type is: +``` +type decl_kind = `AccessSpec | `Block | `Captured | `ClassScopeFunctionSpecialization (* ... *) +``` + +Testing +------- + +Compiling with `DEBUG=1` will make the ATDWriter enforce the general well-formedness of the emitted Yojson/Json/Biniou. For instance, a missing tag will trigger an assert failure. + +Discrepancies between annotations and emitted values are detected by the tests in `../clang-ocaml`. + +It's is important to test both exporter (`make test`) and atd annotations (`make -C ../clang-ocaml test`) + +When changing the exporter, sometimes tests will fail due to exporting new information. To record this fact, run `make record-test-outputs` + +Mapping clang AST nodes to ocaml values +--------------------------------------- + +Clang AST entities of a given type are typically represented by a cluster of classes. + +For instance, here is the cluster for declarations: http://clang.llvm.org/doxygen/classclang_1_1Decl.html +Function declaration: https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html + +To map these entities to a flat algebraic data type of Ocaml (serialized as a "variant" by ATDWriter), as seen +before, we heavily rely on a (hacky) C-preprocessing stage and several scripts. They can be found in `atdlib` directory. + +Let us study how declarations are handled more precisely. Handling for statement and type nodes is very similar. + +##### Default values for node tuples +``` +#define DECL(DERIVED, BASE) //@atd #define @DERIVED@_decl_tuple @BASE@_tuple +#define ABSTRACT_DECL(DECL) DECL +#include +``` + +After one step of preprocessing + ATD-extraction, this creates the following intermediate code (see `build/ast_inline.atd.inc`) +``` +#define access_spec_decl_tuple decl_tuple +#define block_decl_tuple decl_tuple +#define captured_decl_tuple decl_tuple +// ... +#define named_decl_tuple decl_tuple +#define decl_context_tuple decl list * decl_context_info +``` + +This defines the default value of each `xxxx_decl_tuple` to be that of the base class. + +The `@...@` signs are processed by python macros in `libtooling/atdlib`. For instance, `@CaptureDecl@` gives `capture_decl`. + +##### Overriding node tuples when outputting data + +When the visiting method for nodes of given type is effectively written, it is expected that the +corresponding `#define xxxx_decl_tuple` is overwritten to add the specific information of the kind of nodes. +It is important to name tuples correctly. For example, for `SomeNewNodeDecl`, tuple needs to be named as `some_new_node_decl_tuple`. Failure to name them exactly like this will result in picking up default value for tuple node instead of overridden one. + +It is also required to specify how many fields tuple for given node has via `XxxTupleSize()` method + +``` + +//@atd #define decl_tuple decl_info +//@atd type decl_info = { +//@atd (* ... *) +//@atd } + +template +int ASTExporter::DeclTupleSize() { + return 1; // decl_tuple has size of 1 (decl_info) +} + +// Decl is the top class. Everything here concerns all declarations nodes. +template +void ASTExporter::VisitDecl(const Decl *D) { +// ... +} + + +//@atd #define named_decl_tuple decl_tuple * string (* must start with the tuple of the base class *) +template +int ASTExporter::NamedDeclTupleSize() { + return DeclTupleSize() + 1; // named_decl_tuple has size of decl_tuple + 1 (for string field) +} + +// Some important intermediate abstract class NamedDecl. +template +void ASTExporter::VisitNamedDecl(const NamedDecl *D) { + // Must visit the base class to output its tuple of information. + VisitDecl(D); + + // Extra information for the derived class. + OF.emitString(D->getNameAsString()); +} +``` + +##### Putting everything together + +The final definitions of the `xxx_decl_tuple` are meant to be inlined in the declaration of the actual sum type for all declarations. + +``` +// main variant for declarations +//@atd type decl = [ +#define DECL(DERIVED, BASE) //@atd | DERIVED@@Decl of (@DERIVED@_decl_tuple) +#define ABSTRACT_DECL(DECL) +#include +//@atd ] + +``` + +This expands first to: (see `build/ast_inline.atd.p`) +``` +type decl = [ +| AccessSpecDecl of (access_spec_decl_tuple) +| BlockDecl of (block_decl_tuple) +| CapturedDecl of (captured_decl_tuple) +| ClassScopeFunctionSpecializationDecl of (class_scope_function_specialization_decl_tuple) +(* ... *) +] +``` + +Then after a last stage of preprocessing: (see `build/clang_ast.atd`) +``` +type decl = [ + AccessSpecDecl of (decl_info) + | BlockDecl + of (decl_info * decl list * decl_context_info * block_decl_info) + | CapturedDecl of (decl_info * decl list * decl_context_info) + | ClassScopeFunctionSpecializationDecl of (decl_info) +(* ... *) +] +``` diff --git a/facebook-clang-plugins/libtooling/AttrParameterVectorStream.cpp b/facebook-clang-plugins/libtooling/AttrParameterVectorStream.cpp new file mode 100644 index 000000000..a88480109 --- /dev/null +++ b/facebook-clang-plugins/libtooling/AttrParameterVectorStream.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2015-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. + */ + +#include "AttrParameterVectorStream.h" + +#include + +namespace ASTLib { + +AttrParameterVectorStream &AttrParameterVectorStream::operator<<( + const std::string &str) { + // hack to get rid of spurious leading " "s + if (str != " ") { + Content.push_back(str); + } + return *this; +} + +AttrParameterVectorStream &AttrParameterVectorStream::operator<<( + const unsigned int x) { + return operator<<(std::to_string(x)); +} + +AttrParameterVectorStream &AttrParameterVectorStream::operator<<( + const llvm::VersionTuple &verTup) { + return operator<<(verTup.getAsString()); +} + +const std::vector &AttrParameterVectorStream::getContent() { + return Content; +} + +} // end of namespace ASTLib diff --git a/facebook-clang-plugins/libtooling/AttrParameterVectorStream.h b/facebook-clang-plugins/libtooling/AttrParameterVectorStream.h new file mode 100644 index 000000000..5359f4536 --- /dev/null +++ b/facebook-clang-plugins/libtooling/AttrParameterVectorStream.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2015-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. + */ + +#pragma once + +#include +#include +#include + +namespace ASTLib { + +class AttrParameterVectorStream { + + private: + std::vector Content; + + public: + AttrParameterVectorStream() {} + + AttrParameterVectorStream &operator<<(const std::string &str); + AttrParameterVectorStream &operator<<(const unsigned int x); + AttrParameterVectorStream &operator<<(const llvm::VersionTuple &verTup); + + const std::vector &getContent(); +}; + +} // end of namespace ASTLib diff --git a/facebook-clang-plugins/libtooling/FileUtils.cpp b/facebook-clang-plugins/libtooling/FileUtils.cpp new file mode 100644 index 000000000..ed0c51d2e --- /dev/null +++ b/facebook-clang-plugins/libtooling/FileUtils.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2014-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. + */ + +#include +#include +#include +#include + +#include "FileUtils.h" + +namespace FileUtils { + +/** + * Simplify away "." and ".." elements. + * If pathToNormalize is a relative path, it will be pre-pended with + * currentWorkingDirectory unless currentWorkingDirectory == "". + */ +std::string makeAbsolutePath(const std::string ¤tWorkingDirectory, + std::string path) { + llvm::SmallVector result; + std::vector elements; + int skip = 0; + + if (llvm::sys::path::is_relative(path)) { + // Prepend currentWorkingDirectory to path (unless currentWorkingDirectory + // is empty). + llvm::SmallVector vec(currentWorkingDirectory.begin(), + currentWorkingDirectory.end()); + llvm::sys::path::append(vec, path); + path = std::string(vec.begin(), vec.end()); + } else { + // Else copy the separator to maintain an absolute path. + result.append(1, path.front()); + } + + elements.push_back(llvm::sys::path::filename(path)); + + while (llvm::sys::path::has_parent_path(path)) { + path = llvm::sys::path::parent_path(path); + const std::string &element(llvm::sys::path::filename(path)); + if (element == ".") { + continue; + } + if (element == "..") { + skip++; + continue; + } + if (skip > 0) { + skip--; + continue; + } + elements.push_back(element); + } + while (skip > 0) { + elements.push_back(".."); + skip--; + } + + for (auto I = elements.rbegin(), E = elements.rend(); I != E; I++) { + llvm::sys::path::append(result, *I); + } + return std::string(result.begin(), result.end()); +} + +std::string makeRelativePath(const std::string &repoRoot, + const std::string &sysRoot, + bool keepExternalPaths, + bool allowSiblingsToRepoRoot, + const std::string &path) { + if (repoRoot != "") { + if (llvm::StringRef(path).startswith(repoRoot + "/")) { + return path.substr(repoRoot.size() + 1); + } + if (allowSiblingsToRepoRoot) { + std::string parentOfRoot = llvm::sys::path::parent_path(repoRoot); + if (llvm::StringRef(path).startswith(parentOfRoot + "/")) { + return "../" + path.substr(parentOfRoot.size() + 1); + } + } + } + if (sysRoot != "" && llvm::StringRef(path).startswith(sysRoot + "/")) { + // Intentionally keep the heading "/" in this case. + return path.substr(sysRoot.size()); + } + if (keepExternalPaths) { + return path; + } + return ""; +} + +} // namespace FileUtils diff --git a/facebook-clang-plugins/libtooling/FileUtils.h b/facebook-clang-plugins/libtooling/FileUtils.h new file mode 100644 index 000000000..02cc1b5d1 --- /dev/null +++ b/facebook-clang-plugins/libtooling/FileUtils.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2014-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. + */ + +#pragma once + +#include +#include + +namespace FileUtils { + +/** + * Simplify away "." and ".." elements. + * If pathToNormalize is a relative path, it will be pre-pended with + * currentWorkingDirectory unless currentWorkingDirectory == "". + */ +std::string makeAbsolutePath(const std::string ¤tWorkingDirectory, + std::string path); + +/** + * Try to delete a prefix "repoRoot/" OR "sysRoot" from the given absolute path. + * If no rule applies AND keepExternalPaths is true, return the same path, + * otherwise return the empty string. + */ +std::string makeRelativePath(const std::string &repoRoot, + const std::string &sysRoot, + bool keepExternalPaths, + bool allowSiblingsToRoot, + const std::string &path); + +} // namespace FileUtils diff --git a/facebook-clang-plugins/libtooling/Makefile b/facebook-clang-plugins/libtooling/Makefile new file mode 100644 index 000000000..845813b85 --- /dev/null +++ b/facebook-clang-plugins/libtooling/Makefile @@ -0,0 +1,158 @@ +# Copyright (c) 2014-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. + +.PHONY: clean all test all_ast_samples + +LEVEL=.. +include $(LEVEL)/Makefile.common + +HEADERS+=SimplePluginASTAction.h FileUtils.h AttrParameterVectorStream.h +OBJS+=SimplePluginASTAction.o FileUtils.o AttrParameterVectorStream.o + +# ASTExporter +HEADERS+=atdlib/ATDWriter.h ASTExporter.h NamePrinter.h +OBJS+=ASTExporter.o + +# Json +PLUGINS+=JsonASTExporter +EXTS+=.json + +# Yojson +PLUGINS+=YojsonASTExporter +EXTS+=.yjson + +# biniou +BINIOU_PLUGIN=BiniouASTExporter +PLUGINS+=$(BINIOU_PLUGIN) +EXTS+=.biniou + +all: build/FacebookClangPlugin.dylib build/ast_exporter_bin + +include $(LEVEL)/Makefile.rules + +CLANG_FRONTEND=$(CLANG) -fsyntax-only -Xpreprocessor -detailed-preprocessing-record -Xclang -load -Xclang $(shell pwd)/build/FacebookClangPlugin.dylib + +build/FacebookClangPlugin.dylib: $(OBJS:%=build/%) $(HEADERS) + @mkdir -p build + $(CXX) $(LDFLAGS_DYLIB) -o $@ $(OBJS:%=build/%) -lz -lpthread -lm + +# Experimental tool. This requires clang static libraries. +AST_EXPORTER_OBJS=ast_exporter_bin.o SimplePluginASTAction.o FileUtils.o AttrParameterVectorStream.o +build/ast_exporter_bin: $(AST_EXPORTER_OBJS:%=build/%) $(HEADERS) + @mkdir -p build + $(CXX) -o $@ $(AST_EXPORTER_OBJS:%=build/%) $(LDFLAGS) $(LLVM_CXXFLAGS) $(CLANG_TOOL_LIBS) $(LLVM_LDFLAGS) -lz -lpthread -lm + +TEST_DIRS=tests + +OUT_TEST_FILES=${TEST_DIRS:%=%/*/*.out} + +# To make sharing of test files easier, each source file should be +# found in 'tests'. A plugin will only use the source files for which +# a .exp file exists in the corresponding subdirectory. +EXPFILES_FORMULA=tests/$$P/*.exp +SRCFILE_FORMULA=tests/$$(basename $$TEST) +FILTERFILE_FORMULA=tests/$${P}/filter.sh + +test: build/FacebookClangPlugin.dylib + @for P in $(PLUGINS); do \ + if [ "$$P" == "BiniouASTExporter" ] && ! hash bdump 2>/dev/null; \ + then continue; \ + fi; \ + echo "-- $$P --"; \ + export CLANG_FRONTEND_PLUGIN__AST_WITH_POINTERS=0; \ + rm -rf build/tmp_$$P; \ + mkdir -p build/tmp_$$P; \ + for EXPFILE in $(EXPFILES_FORMULA); do \ + TEST=$${EXPFILE%.exp}; \ + EXTRA_FLAGS=""; \ + case "$(SRCFILE_FORMULA)" in \ + *.m ) \ + if [ "$(HAS_OBJC)" = "no" ]; then \ + printf "[~] %s skipped (no Objective-C support)\n" \ + "$$(basename $(SRCFILE_FORMULA))"; \ + continue; \ + fi; \ + EXTRA_FLAGS="-ObjC -fblocks $(IOSFLAGS)"; \ + ;; \ + *.cpp ) \ + EXTRA_FLAGS="--std=c++14"; \ + ;; \ + *.mm ) \ + EXTRA_FLAGS="--std=c++14 -ObjC++ -fblocks $(IOSFLAGS)"; \ + ;; \ + esac; \ + $(RUNTEST) "$$TEST" $(FILTERFILE_FORMULA) \ + $(CLANG_FRONTEND) $$EXTRA_FLAGS -Xclang -plugin -Xclang $$P \ + -Xclang -plugin-arg-$$P -Xclang - \ + -Xclang -plugin-arg-$$P -Xclang USE_TEMP_DIR_FOR_DEDUPLICATION=build/tmp_$$P \ + -c $(SRCFILE_FORMULA); \ + done; \ + done + @if [ ! $$KEEP_TEST_OUTPUTS ]; then rm -f $(OUT_TEST_FILES); fi + +record-test-outputs: + @$(MAKE) DEBUG=1 KEEP_TEST_OUTPUTS=1 test || true + @for F in $(OUT_TEST_FILES); do cp $$F $${F%.out}.exp; done + @rm -f $(OUT_TEST_FILES) + +clean: + @rm -rf build/* $(OUT_TEST_FILES) + +# -- AST samples for specific end-to-end tests -- + +REGULAR_SOURCES=$(wildcard tests/*.m) $(wildcard tests/*.c) $(wildcard tests/*.cpp) $(wildcard tests/*.mm) +AST_SAMPLE_FILES=ASTExporter.cpp $(REGULAR_SOURCES:tests/%=%) +all_ast_samples: $(AST_SAMPLE_FILES:%=build/ast_samples/%.json.gz) $(AST_SAMPLE_FILES:%=build/ast_samples/%.yjson.gz) + +# dump samples files in Yojson using ASTExporter.cpp +YJ_DUMPER_ARGS=-Xclang -plugin -Xclang YojsonASTExporter -Xclang -plugin-arg-YojsonASTExporter -Xclang + +build/ast_samples/%.cpp.yjson: %.cpp build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) $(CFLAGS) -Wno-ignored-qualifiers -I. $(YJ_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.cpp.yjson: tests/%.cpp build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) --std=c++14 $(YJ_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.c.yjson: tests/%.c build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) $(YJ_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.m.yjson: tests/%.m build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) $(IOSFLAGS) $(YJ_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.mm.yjson: tests/%.mm build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) --std=c++14 $(IOSFLAGS) $(YJ_DUMPER_ARGS) $@ -c $< + +# dump sample files in Yojson using ASTExporter.cpp +J_DUMPER_ARGS=-Xclang -plugin -Xclang JsonASTExporter -Xclang -plugin-arg-JsonASTExporter -Xclang + +build/ast_samples/%.cpp.json: %.cpp build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) $(CFLAGS) -Wno-ignored-qualifiers -I. $(J_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.cpp.json: tests/%.cpp build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) --std=c++14 $(J_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.c.json: tests/%.c build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) $(J_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.m.json: tests/%.m build/FacebookClangPlugin.dylib + @mkdir -p build/ast_samples + $(CLANG_FRONTEND) $(IOSFLAGS) $(J_DUMPER_ARGS) $@ -c $< + +build/ast_samples/%.gz: build/ast_samples/% + @gzip -f < $< > $@ + +# generate a preprocessed version of ASTExporter.cpp where ATD directives can be read +# we do not include the C/C++ headers to avoid parsing issues with the 'traditional' cpp (needed for precisely expanding our /// comments) +build/ASTExporter.h.p: ASTExporter.h + @mkdir -p build + @cat $< | grep -v '#include *["<][^.]*\(\.h\)\?[">]' | $(ATD_CPP) -I$(CLANG_PREFIX)/include > $@ diff --git a/facebook-clang-plugins/libtooling/NamePrinter.h b/facebook-clang-plugins/libtooling/NamePrinter.h new file mode 100644 index 000000000..8144a05a6 --- /dev/null +++ b/facebook-clang-plugins/libtooling/NamePrinter.h @@ -0,0 +1,194 @@ +/* + * 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. + */ + +#pragma once +#include +#include + +#include "atdlib/ATDWriter.h" +namespace ASTLib { + +using namespace clang; +template +class NamePrinter : public ConstDeclVisitor> { + typedef typename ATDWriter::ObjectScope ObjectScope; + typedef typename ATDWriter::ArrayScope ArrayScope; + typedef typename ATDWriter::TupleScope TupleScope; + typedef typename ATDWriter::VariantScope VariantScope; + + const SourceManager &SM; + ATDWriter &OF; + + PrintingPolicy getPrintingPolicy(); + void printTemplateArgList(llvm::raw_ostream &OS, + const ArrayRef Args); + + public: + NamePrinter(const SourceManager &SM, ATDWriter &OF) : SM(SM), OF(OF) {} + + // implementation is inspired by NamedDecl::printQualifiedName + // but with better handling for anonymous structs,unions and namespaces + void printDeclName(const NamedDecl &D); + + void VisitNamedDecl(const NamedDecl *D); + void VisitNamespaceDecl(const NamespaceDecl *ND); + void VisitTagDecl(const TagDecl *TD); + void VisitFunctionDecl(const FunctionDecl *FD); +}; + +// 64 bits fnv-1a +const uint64_t FNV64_hash_start = 14695981039346656037ULL; +const uint64_t FNV64_prime = 1099511628211ULL; +uint64_t fnv64Hash(const char *s, int n) { + uint64_t hash = FNV64_hash_start; + for (int i = 0; i < n; ++i) { + hash ^= s[i]; + hash *= FNV64_prime; + } + return hash; +} + +uint64_t fnv64Hash(llvm::raw_svector_ostream &OS) { + std::string s = OS.str(); + return fnv64Hash(s.data(), s.size()); +} + +const int templateLengthThreshold = 40; +template +void NamePrinter::printTemplateArgList( + llvm::raw_ostream &OS, const ArrayRef Args) { + SmallString<64> Buf; + llvm::raw_svector_ostream tmpOS(Buf); + clang::printTemplateArgumentList(tmpOS, Args, getPrintingPolicy()); + if (tmpOS.str().size() > templateLengthThreshold) { + OS << "<"; + OS.write_hex(fnv64Hash(tmpOS)); + OS << ">"; + } else { + OS << tmpOS.str(); + } +} + +template +void NamePrinter::printDeclName(const NamedDecl &D) { + const DeclContext *Ctx = D.getDeclContext(); + SmallVector Contexts; + Contexts.push_back(&D); + + // Don't dump full qualifier for variables declared + // inside a function/method/block + // For structs defined inside functions, dump fully qualified name + if (Ctx->isFunctionOrMethod() && !isa(&D)) { + Ctx = nullptr; + } + + while (Ctx && isa(Ctx)) { + bool shouldPrintCtx = true; + // skip inline namespaces when printing qualified name + if (const NamespaceDecl *ND = dyn_cast(Ctx)) { + if (ND->isInline()) { + shouldPrintCtx = false; + } + } + if (shouldPrintCtx) { + Contexts.push_back(cast(Ctx)); + } + Ctx = Ctx->getParent(); + } + + ArrayScope aScope(OF, Contexts.size()); + // dump list in reverse + for (const Decl *Ctx : Contexts) { + ConstDeclVisitor>::Visit(Ctx); + } +} + +template +void NamePrinter::VisitNamedDecl(const NamedDecl *D) { + OF.emitString(D->getNameAsString()); +} + +template +void NamePrinter::VisitNamespaceDecl(const NamespaceDecl *ND) { + if (ND->isAnonymousNamespace()) { + PresumedLoc PLoc = SM.getPresumedLoc(ND->getLocation()); + std::string file = "invalid_loc"; + if (PLoc.isValid()) { + file = PLoc.getFilename(); + } + OF.emitString("anonymous_namespace_" + file); + } else { + // for non-anonymous namespaces, fallback to normal behavior + VisitNamedDecl(ND); + } +} + +template +void NamePrinter::VisitTagDecl(const TagDecl *D) { + // heavily inspired by clang's TypePrinter::printTag() function + SmallString<64> Buf; + llvm::raw_svector_ostream StrOS(Buf); + if (const IdentifierInfo *II = D->getIdentifier()) { + StrOS << II->getName(); + } else if (TypedefNameDecl *Typedef = D->getTypedefNameForAnonDecl()) { + StrOS << Typedef->getIdentifier()->getName(); + } else { + if (isa(D) && cast(D)->isLambda()) { + StrOS << "lambda"; + } else { + StrOS << "anonymous_" << D->getKindName(); + } + PresumedLoc PLoc = SM.getPresumedLoc(D->getLocation()); + if (PLoc.isValid()) { + StrOS << "_" << PLoc.getFilename() << ':' << PLoc.getLine() << ':' + << PLoc.getColumn(); + } + } + if (const ClassTemplateSpecializationDecl *Spec = + dyn_cast(D)) { + ArrayRef Args; + const TemplateArgumentList &TemplateArgs = Spec->getTemplateArgs(); + Args = TemplateArgs.asArray(); + printTemplateArgList(StrOS, Args); + } + OF.emitString(StrOS.str()); +} + +template +void NamePrinter::VisitFunctionDecl(const FunctionDecl *FD) { + std::string template_str = ""; + // add instantiated template arguments for readability + if (const TemplateArgumentList *TemplateArgs = + FD->getTemplateSpecializationArgs()) { + SmallString<64> Buf; + llvm::raw_svector_ostream StrOS(Buf); + printTemplateArgList(StrOS, TemplateArgs->asArray()); + template_str = StrOS.str(); + } + OF.emitString(FD->getNameAsString() + template_str); +} + +template +PrintingPolicy NamePrinter::getPrintingPolicy() { + // configure what to print + LangOptions LO; + PrintingPolicy Policy(LO); + // print tag types + Policy.IncludeTagDefinition = false; + // print fully qualified names - this is needed by PrintTemplateArgumentList + Policy.SuppressScope = false; + // don't print inline and anonymous namespaces + Policy.SuppressUnwrittenScope = true; + // print locations of anonymous tags + Policy.AnonymousTagLocations = true; + // don't add 'struct' inside a name regardless of language + Policy.SuppressTagKeyword = true; + + return Policy; +} + +} // end of namespace ASTLib diff --git a/facebook-clang-plugins/libtooling/README.md b/facebook-clang-plugins/libtooling/README.md new file mode 100644 index 000000000..1390f8a63 --- /dev/null +++ b/facebook-clang-plugins/libtooling/README.md @@ -0,0 +1,13 @@ + +Front end plugins for Clang +--------------------------- + +Assuming that the current dir is the root of the git repository and CLANG_PREFIX=/usr/local, you may compile and run tests with +``` +export CLANG_PREFIX=/usr/local +make -C libtooling test +``` + +More information: +- [`ATD_GUIDELINES`](https://github.com/facebook/facebook-clang-plugins/tree/master/libtooling/ATD_GUIDELINES.md) for documentation about ASTExporter. +- http://clang.llvm.org/docs/ClangPlugins.html for general documentation about clang plugins diff --git a/facebook-clang-plugins/libtooling/SimplePluginASTAction.cpp b/facebook-clang-plugins/libtooling/SimplePluginASTAction.cpp new file mode 100644 index 000000000..9bbf48ec0 --- /dev/null +++ b/facebook-clang-plugins/libtooling/SimplePluginASTAction.cpp @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2014-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. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "FileUtils.h" +#include "SimplePluginASTAction.h" + +namespace ASTPluginLib { + +/** + * The actual prefix to prepend to environment variables (but not for the + * command line). + */ +const std::string PluginASTOptionsBase::envPrefix = "CLANG_FRONTEND_PLUGIN__"; + +PluginASTOptionsBase::argmap_t PluginASTOptionsBase::makeMap( + const std::vector &args) { + argmap_t map; + for (auto arg : args) { + size_t pos = arg.find('='); + if (pos != std::string::npos) { + std::string key = arg.substr(0, pos); + std::string value = arg.substr(pos + 1); + map[key] = value; + } + } + return map; +} + +bool PluginASTOptionsBase::loadString(const argmap_t &map, + const char *key, + std::string &val) { + auto I = map.find(key); + if (I != map.end()) { + val = I->second; + return true; + } + const char *s = getenv((envPrefix + key).c_str()); + if (s != nullptr) { + val = s; + return true; + } + return false; +} + +bool PluginASTOptionsBase::loadBool(const argmap_t &map, + const char *key, + bool &val) { + std::string s_val; + if (loadString(map, key, s_val)) { + errno = 0; + val = (bool)strtol(s_val.c_str(), nullptr, 10); + if (errno) { + std::cerr << "[!] Failed to read a bool from " << key << "\n"; + } + return true; + } + return false; +} + +bool PluginASTOptionsBase::loadInt(const argmap_t &map, + const char *key, + long &val) { + std::string s_val; + if (loadString(map, key, s_val)) { + errno = 0; + val = strtol(s_val.c_str(), nullptr, 10); + if (errno) { + std::cerr << "[!] Failed to read an int from " << key << "\n"; + } + return true; + } + return false; +} + +bool PluginASTOptionsBase::loadUnsignedInt(const argmap_t &map, + const char *key, + unsigned long &val) { + std::string s_val; + if (loadString(map, key, s_val)) { + errno = 0; + val = strtoul(s_val.c_str(), nullptr, 10); + if (errno) { + std::cerr << "[!] Failed to read an unsigned int from " << key << "\n"; + } + return true; + } + return false; +} + +void PluginASTOptionsBase::loadValuesFromEnvAndMap(const argmap_t map) { + bool needBasePath = false; + + loadBool(map, "ALLOW_SIBLINGS_TO_REPO_ROOT", allowSiblingsToRepoRoot); + loadBool(map, "KEEP_EXTERNAL_PATHS", keepExternalPaths); + loadString(map, "MAKE_RELATIVE_TO", repoRoot); + loadUnsignedInt(map, "MAX_STRING_SIZE", maxStringSize); + + // Possibly override the first argument given on the command line. + loadString(map, "OUTPUT_FILE", outputFile); + + loadBool(map, "PREPEND_CURRENT_DIR", needBasePath); + loadBool(map, "RESOLVE_SYMLINKS", resolveSymlinks); + loadString(map, "STRIP_ISYSROOT", iSysRoot); + + if (needBasePath) { + llvm::SmallString<1024> CurrentDir; + if (llvm::sys::fs::current_path(CurrentDir)) { + llvm::errs() << "Failed to retrieve current working directory\n"; + } else { + basePath = CurrentDir.str(); + } + } +} + +void PluginASTOptionsBase::setObjectFile(const std::string &path) { + objectFile = path; + if (path != "" && outputFile.size() > 0 && outputFile[0] == '%') { + outputFile = path + outputFile.substr(1); + } +} + +/** + * Expects an immutable string on the heap as an argument + * (e.g. a path extracted from a node in the AST) + * Do not pass pointers to stack variables to this function. + * (e.g. a .str() call on a StringRef) + */ +const std::string &PluginASTOptionsBase::normalizeSourcePath( + const char *path) const { + auto I = normalizationCache->find(path); + if (I != normalizationCache->end()) { + return I->second; + } + std::string &result = (*normalizationCache)[path]; + if (basePath == "") { + result = path; + return result; + } + std::string absPath = FileUtils::makeAbsolutePath(basePath, path); + if (resolveSymlinks) { + // if realPath is a symlink, resolve it + char buf[2048]; + int len = readlink(absPath.c_str(), buf, sizeof(buf) - 1); + if (len != -1) { + buf[len] = '\0'; + absPath = buf; + } + } + // By convention, relative paths are only activated when repoRoot != "". + if (repoRoot != "") { + result = FileUtils::makeRelativePath(repoRoot, + iSysRoot, + keepExternalPaths, + allowSiblingsToRepoRoot, + absPath); + } else { + result = absPath; + } + return result; +} + +const std::string &PluginASTOptionsBase::normalizeSourcePath( + llvm::StringRef path) const { + return normalizeSourcePath(path.data()); +} +} // namespace ASTPluginLib diff --git a/facebook-clang-plugins/libtooling/SimplePluginASTAction.h b/facebook-clang-plugins/libtooling/SimplePluginASTAction.h new file mode 100644 index 000000000..57d1dc7b4 --- /dev/null +++ b/facebook-clang-plugins/libtooling/SimplePluginASTAction.h @@ -0,0 +1,264 @@ +/* + * Copyright (c) 2014-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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "FileUtils.h" + +namespace ASTPluginLib { + +struct PluginASTOptionsBase { + // source file being parsed + clang::FrontendInputFile inputFile; + // output file for the plugin + std::string outputFile; + // object file produced by the usual frontend (possibly empty) + std::string objectFile; + + /* Will contain the current directory if PREPEND_CURRENT_DIR was specified. + * The intention is to make file paths in the AST absolute if needed. + */ + std::string basePath; + + /* Configure a second pass on file paths to make them relative to the repo + * root. */ + std::string repoRoot; + /* Configure a third pass on (absolute) file paths to blank the system root: + * /path/to/sysroot/usr/lib/foo.h --> /usr/lib/foo.h + */ + std::string iSysRoot; + /* Configure a fourth pass on (absolute) file paths to detect siblings to + * the repo root. If the repo root is /some/path, /some/other_path will be + * rewritten ../other_path + */ + bool allowSiblingsToRepoRoot = false; + /* Whether file paths that could not be normalized by any of the rules above + * should be kept or blanked. + */ + bool keepExternalPaths = false; + /* Resolve symlinks to their real path. */ + bool resolveSymlinks = false; + /* do not emit string literals larger than this size */ + unsigned long maxStringSize = 65535; + + typedef std::unordered_map argmap_t; + + static argmap_t makeMap(const std::vector &args); + + private: + /* cache for normalizeSourcePath */ + std::unique_ptr> + normalizationCache; + + protected: + static const std::string envPrefix; + + static bool loadString(const argmap_t &map, + const char *key, + std::string &val); + + static bool loadBool(const argmap_t &map, const char *key, bool &val); + + static bool loadInt(const argmap_t &map, const char *key, long &val); + + static bool loadUnsignedInt(const argmap_t &map, + const char *key, + unsigned long &val); + + public: + PluginASTOptionsBase() { + normalizationCache.reset( + new std::unordered_map()); + }; + + void loadValuesFromEnvAndMap(const argmap_t map); + + // This should be called after outputFile has been set, so as to finalize + // the output file in case a pattern "%.bla" was given. + void setObjectFile(const std::string &path); + + const std::string &normalizeSourcePath(const char *path) const; + const std::string &normalizeSourcePath(llvm::StringRef path) const; +}; + +struct EmptyPreprocessorHandlerData {}; + +struct EmptyPreprocessorHandler : public clang::PPCallbacks { + EmptyPreprocessorHandler( + clang::SourceManager &SM, + std::shared_ptr options, + std::shared_ptr sharedData) {} +}; + +template +class SimplePluginASTActionBase : public clang::PluginASTAction { + protected: + std::shared_ptr options; + std::shared_ptr sharedData; + + void ExecuteAction() override { + auto &preprocessor = getCompilerInstance().getPreprocessor(); + preprocessor.addPPCallbacks(llvm::make_unique( + preprocessor.getSourceManager(), options, sharedData)); + clang::PluginASTAction::ExecuteAction(); + } + + // Called when FrontendPluginRegistry is used. + bool ParseArgs(const clang::CompilerInstance &CI, + const std::vector &args_) override { + std::vector args = args_; + if (args.size() > 0) { + options->outputFile = args[0]; + args.erase(args.begin()); + } + options->loadValuesFromEnvAndMap(PluginASTOptions::makeMap(args)); + return true; + } + + SimplePluginASTActionBase() { + // These data structures will be shared between PreprocessorHandler + // and ASTConsumer (the relative lifetimes of which are unknown). + // During the AST traversal, it is expected that `options` is only read + // and `sharedData` is only written. + options = std::make_shared(); + sharedData = std::make_shared(); + } + + // Alternate constructor to pass an optional sequence "KEY=VALUE,.." + // expected to be use with SimpleFrontendActionFactory below. + explicit SimplePluginASTActionBase(const std::vector &args) + : SimplePluginASTActionBase() { + options->loadValuesFromEnvAndMap(PluginASTOptions::makeMap(args)); + } + + bool SetFileOptions(clang::CompilerInstance &CI, + llvm::StringRef inputFilename) { + // When running clang tool on more than one source file, CreateASTConsumer + // will be ran for each of them separately. Hence, Inputs.size() = 1. + clang::FrontendInputFile inputFile = CI.getFrontendOpts().Inputs[0]; + + switch (inputFile.getKind().getLanguage()) { + case clang::InputKind::Unknown: + case clang::InputKind::Asm: + case clang::InputKind::LLVM_IR: + // We can't do anything with these - they may trigger errors when running + // clang frontend + return false; + default: + // run the consumer for IK_AST and all others + break; + } + options->inputFile = inputFile; + options->setObjectFile(CI.getFrontendOpts().OutputFile); + // success + return true; + } +}; + +template +class SimpleFrontendActionFactory + : public clang::tooling::FrontendActionFactory { + std::vector args_; + + public: + explicit SimpleFrontendActionFactory(std::vector args) + : args_(args) {} + + clang::FrontendAction *create() override { + return new SimpleASTAction(args_); + } +}; + +template +class SimplePluginASTAction + : public SimplePluginASTActionBase< + typename ASTConsumer::ASTConsumerOptions, + typename ASTConsumer::PreprocessorHandler, + typename ASTConsumer::PreprocessorHandlerData> { + using Parent = + SimplePluginASTActionBase; + + public: + SimplePluginASTAction() {} + + explicit SimplePluginASTAction(const std::vector &args) + : Parent(args) {} + + protected: + std::unique_ptr CreateASTConsumer( + clang::CompilerInstance &CI, llvm::StringRef inputFilename) { + if (!Parent::SetFileOptions(CI, inputFilename)) { + return nullptr; + } + std::unique_ptr OS = + CI.createOutputFile(Parent::options->outputFile, + Binary, + RemoveFileOnSignal, + "", + "", + UseTemporary, + CreateMissingDirectories); + if (!OS) { + return nullptr; + } + + return std::unique_ptr(new ASTConsumer( + CI, Parent::options, Parent::sharedData, std::move(OS))); + } +}; + +template +class NoOpenSimplePluginASTAction + : public SimplePluginASTActionBase< + typename ASTConsumer::ASTConsumerOptions, + typename ASTConsumer::PreprocessorHandler, + typename ASTConsumer::PreprocessorHandlerData> { + using Parent = + SimplePluginASTActionBase; + + public: + NoOpenSimplePluginASTAction() {} + + explicit NoOpenSimplePluginASTAction(const std::vector &args) + : Parent(args) {} + + protected: + std::unique_ptr CreateASTConsumer( + clang::CompilerInstance &CI, llvm::StringRef inputFilename) { + if (!Parent::SetFileOptions(CI, inputFilename)) { + return nullptr; + } + std::unique_ptr outputFile = std::unique_ptr( + new std::string(Parent::options->outputFile)); + return std::unique_ptr(new ASTConsumer( + CI, Parent::options, Parent::sharedData, std::move(outputFile))); + } +}; +} // namespace ASTPluginLib diff --git a/facebook-clang-plugins/libtooling/ast_exporter_bin.cpp b/facebook-clang-plugins/libtooling/ast_exporter_bin.cpp new file mode 100644 index 000000000..2a6676b8b --- /dev/null +++ b/facebook-clang-plugins/libtooling/ast_exporter_bin.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2014-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. + */ + +/** + * Clang tool to export an AST of clang into Json, Yojson, and Biniou + * while conforming to the inlined ATD specifications. + */ + +#include "ASTExporter.h" + +#include +#include + +//===----------------------------------------------------------------------===// +// ASTExporter Tool +//===----------------------------------------------------------------------===// + +static llvm::cl::OptionCategory astExporterCategory("ast_exporter_bin"); + +enum Mode { json, yojson, biniou }; + +static llvm::cl::opt astExporterMode( + "ast-exporter-mode", + llvm::cl::desc("Mode of operation"), + llvm::cl::values(clEnumVal(json, "json output"), + clEnumVal(yojson, "yojson output"), + clEnumVal(biniou, "biniou output")), + llvm::cl::cat(astExporterCategory)); + +static llvm::cl::opt astExporterOutput( + "ast-exporter-output", + llvm::cl::desc("output file"), + llvm::cl::cat(astExporterCategory)); + +// TODO: Unpack the other ASTExporterOptions into native command line options. +static llvm::cl::list astExporterOptions( + "ast-exporter-option", + llvm::cl::desc("One or several comma-separated pairs [KEY]=[VALUE]. " + "This will override the corresponding environment variables " + "CLANG_FRONTEND_PLUGIN__[KEY]."), + llvm::cl::CommaSeparated, + llvm::cl::cat(astExporterCategory)); + +static llvm::cl::extrahelp commonHelp( + clang::tooling::CommonOptionsParser::HelpMessage); + +int main(int argc, const char **argv) { + clang::tooling::CommonOptionsParser optionsParser( + argc, argv, astExporterCategory); + clang::tooling::ClangTool tool(optionsParser.getCompilations(), + optionsParser.getSourcePathList()); + + if (!astExporterOutput.empty()) { + astExporterOptions.push_back("OUTPUT_FILE=" + astExporterOutput); + } + + std::unique_ptr factory = nullptr; + switch (astExporterMode) { + case json: + factory.reset(new ASTPluginLib::SimpleFrontendActionFactory< + ASTLib::JsonExporterASTAction>(astExporterOptions)); + break; + case yojson: + factory.reset(new ASTPluginLib::SimpleFrontendActionFactory< + ASTLib::YojsonExporterASTAction>(astExporterOptions)); + break; + case biniou: + factory.reset(new ASTPluginLib::SimpleFrontendActionFactory< + ASTLib::BiniouExporterASTAction>(astExporterOptions)); + break; + } + + return tool.run(factory.get()); +} diff --git a/facebook-clang-plugins/libtooling/atdlib/ATDWriter.h b/facebook-clang-plugins/libtooling/atdlib/ATDWriter.h new file mode 100644 index 000000000..d5f59ac37 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/ATDWriter.h @@ -0,0 +1,690 @@ +/* + * Copyright (c) 2014-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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace ATDWriter { + +struct ATDWriterOptions { + bool useYojson; + bool prettifyJson; +}; + +// Symbols to be stacked +enum Symbol { SARRAY, STUPLE, SOBJECT, SVARIANT, STAG }; + +// whether the container has a {maximum,exact} size +enum ContainerSizeKind { + CSKNONE, // no size info + CSKEXACT, // the container expects exactly this number of items + CSKMAX // the container expects at most this number of items +}; + +// Main class for writing ATD-like data +// - In NDEBUG mode this class is only a wrapper around an ATDEmitter +// - In DEBUG mode it acts as a validator: asserts will fire if the events do +// not correspond to a well-formed ATD/JSON value +template +class GenWriter { + + protected: + ATDEmitter emitter_; + + private: +#ifdef DEBUG + // State of the automaton + std::vector stack_; + + // Objects want tagged values + static bool needsTag(enum Symbol s) { return s == SOBJECT; } + + // How many elements are expected in the current container + std::vector containerSize_; + std::vector containerSizeKind_; +#endif + + void enterValue() { +#ifdef DEBUG + if (stack_.empty()) { + return; + } + assert(!needsTag(stack_.back())); +#endif + } + + void leaveValue() { +#ifdef DEBUG + switch (containerSizeKind_.back()) { + case CSKEXACT: + case CSKMAX: + containerSize_.back() -= 1; + break; + case CSKNONE: + break; + } + if (stack_.empty()) { + return; + } + if (stack_.back() == STAG) { + stack_.pop_back(); + assert(needsTag(stack_.back())); + } +#endif + } + + void emitValue() { + enterValue(); + leaveValue(); + } + + void enterContainer(enum Symbol s, + enum ContainerSizeKind csk = CSKNONE, + int numElems = 0) { +#ifdef DEBUG + enterValue(); + stack_.push_back(s); + containerSizeKind_.push_back(csk); + switch (csk) { + case CSKEXACT: + case CSKMAX: + containerSize_.push_back(numElems); + break; + case CSKNONE: + break; + } +#endif + } + + void leaveContainer(enum Symbol s) { +#ifdef DEBUG + assert(stack_.back() == s); + stack_.pop_back(); + switch (containerSizeKind_.back()) { + case CSKEXACT: + assert(containerSize_.back() == 0); + case CSKMAX: + assert(!containerSize_.empty()); + assert(containerSize_.back() >= 0); + containerSize_.pop_back(); + break; + case CSKNONE: + break; + } + containerSizeKind_.pop_back(); + leaveValue(); +#endif + } + + public: + GenWriter(ATDEmitter emitter) : emitter_(emitter) { +#ifdef DEBUG + containerSizeKind_.push_back(CSKNONE); +#endif + } + + ~GenWriter() { +#ifdef DEBUG + assert(stack_.empty()); + assert(containerSizeKind_.size() == 1); + assert(containerSizeKind_.back() == CSKNONE); +#endif + emitter_.emitEOF(); + } + + void emitNull() { + emitValue(); + emitter_.emitNull(); + } + void emitBoolean(bool val) { + emitValue(); + emitter_.emitBoolean(val); + } + void emitInteger(int64_t val) { + emitValue(); + emitter_.emitInteger(val); + } + void emitFloat(float val) { + emitValue(); + emitter_.emitFloat(val); + } + void emitString(const std::string &val) { + emitValue(); + emitter_.emitString(val); + } + void emitTag(const std::string &val) { +#ifdef DEBUG + assert(needsTag(stack_.back())); + stack_.push_back(STAG); +#endif + emitter_.emitTag(val); + } + + void enterArray(int numElems) { + enterContainer(SARRAY, CSKEXACT, numElems); + emitter_.enterArray(numElems); + } + void enterArray() { + enterContainer(SARRAY); + emitter_.enterArray(); + } + void leaveArray() { + leaveContainer(SARRAY); + emitter_.leaveArray(); + } + void enterObject(int numElems) { + enterContainer(SOBJECT, CSKMAX, numElems); + emitter_.enterObject(numElems); + } + void enterObject() { + enterContainer(SOBJECT); + emitter_.enterObject(); + } + void leaveObject() { + leaveContainer(SOBJECT); + emitter_.leaveObject(); + } + void enterTuple(int numElems) { + enterContainer(STUPLE, CSKEXACT, numElems); + emitter_.enterTuple(numElems); + } + void enterTuple() { + enterContainer(STUPLE); + emitter_.enterTuple(); + } + void leaveTuple() { + leaveContainer(STUPLE); + emitter_.leaveTuple(); + } + + void enterVariant(const std::string &tag, bool hasArg = true) { + // variants have at most one value, so we can safely use hasArg + // as the number of arguments + enterContainer(SVARIANT, CSKEXACT, hasArg); + emitter_.enterVariant(); + emitter_.emitVariantTag(tag, hasArg); + } + void leaveVariant() { + leaveContainer(SVARIANT); + emitter_.leaveVariant(); + } + void emitSimpleVariant(const std::string &tag) { + if (emitter_.shouldSimpleVariantsBeEmittedAsStrings) { + emitString(tag); + } else { + enterVariant(tag, false); + leaveVariant(); + } + } + + // convenient methods + + void emitFlag(const std::string &tag, bool val) { + if (val) { + emitTag(tag); + emitBoolean(true); + } + } + + // convenient classes for automatically closing containers using C++ scoping + + class ArrayScope { + GenWriter &f_; + + public: + ArrayScope(GenWriter &f, int size) : f_(f) { f_.enterArray(size); } + ArrayScope(GenWriter &f) : f_(f) { f_.enterArray(); } + ~ArrayScope() { f_.leaveArray(); } + }; + + class ObjectScope { + GenWriter &f_; + + public: + ObjectScope(GenWriter &f, int size) : f_(f) { f_.enterObject(size); } + ObjectScope(GenWriter &f) : f_(f) { f_.enterObject(); } + ~ObjectScope() { f_.leaveObject(); } + }; + + class TupleScope { + GenWriter &f_; + + public: + TupleScope(GenWriter &f, int size) : f_(f) { f_.enterTuple(size); } + TupleScope(GenWriter &f) : f_(f) { f_.enterTuple(); } + ~TupleScope() { f_.leaveTuple(); } + }; + + class VariantScope { + GenWriter &f_; + + public: + VariantScope(GenWriter &f, const std::string &tag) : f_(f) { + f_.enterVariant(tag, true); + } + ~VariantScope() { f_.leaveVariant(); } + }; +}; + +// Configure GenWriter for Yojson / Json textual outputs +template +class JsonEmitter { + + const char *QUOTE = "\""; + const char *COMMA = ","; + const char *TAB = " "; + const char *NEWLINE = "\n"; + const char *COLON = ":"; + const char *COLONWITHSPACES = " : "; + const char *COMMAWITHSPACES = " , "; + const char *NULLSTR = "null"; + const char *FALSESTR = "false"; + const char *TRUESTR = "true"; + const char LBRACKET = '['; + const char RBRACKET = ']'; + const char LBRACE = '{'; + const char RBRACE = '}'; + const char LPAREN = '('; + const char RPAREN = ')'; + const char LANGLE = '<'; + const char RANGLE = '>'; + + private: + OStream &os_; + const ATDWriterOptions options_; + unsigned indentLevel_; + bool nextElementNeedsNewLine_; + bool previousElementNeedsComma_; + bool previousElementIsVariantTag_; + + public: + bool shouldSimpleVariantsBeEmittedAsStrings; + + JsonEmitter(OStream &os, const ATDWriterOptions opts) + : os_(os), + options_(opts), + indentLevel_(0), + nextElementNeedsNewLine_(false), + previousElementNeedsComma_(false), + previousElementIsVariantTag_(false), + shouldSimpleVariantsBeEmittedAsStrings(!opts.useYojson) {} + + void tab() { + if (previousElementIsVariantTag_) { + if (options_.prettifyJson) { + os_ << (options_.useYojson ? COLONWITHSPACES : COMMAWITHSPACES); + } else { + os_ << (options_.useYojson ? COLON : COMMA); + } + } else if (previousElementNeedsComma_) { + os_ << COMMA; + } + if (nextElementNeedsNewLine_ && options_.prettifyJson) { + os_ << NEWLINE; + for (size_t i = 0; i < indentLevel_; i++) { + os_ << TAB; + } + } + } + + private: + // TODO: unicode and other control chars + void write_escaped(const std::string &val) { + for (std::string::const_iterator i = val.begin(), e = val.end(); i != e; + i++) { + char x = *i; + switch (x) { + case '\\': + os_ << "\\\\"; + break; + case '"': + os_ << "\\\""; + break; + case '\n': + os_ << "\\n"; + break; + case '\t': + os_ << "\\t"; + break; + case '\b': + os_ << "\\b"; + break; + case '\f': + os_ << "\\f"; + break; + case '\r': + os_ << "\\r"; + break; + default: + os_ << x; + break; + } + } + } + + void enterContainer(char c) { + tab(); + os_ << c; + indentLevel_++; + previousElementNeedsComma_ = false; + nextElementNeedsNewLine_ = true; + previousElementIsVariantTag_ = false; + } + + void leaveContainer(char c) { + indentLevel_--; + // suppress the last comma or variant separator + previousElementNeedsComma_ = false; + previousElementIsVariantTag_ = false; + tab(); + os_ << c; + previousElementNeedsComma_ = true; + nextElementNeedsNewLine_ = true; + } + + public: + void emitEOF() { os_ << NEWLINE; } + + void emitNull() { + tab(); + os_ << NULLSTR; + previousElementNeedsComma_ = true; + nextElementNeedsNewLine_ = true; + previousElementIsVariantTag_ = false; + } + void emitBoolean(bool val) { + tab(); + os_ << (val ? TRUESTR : FALSESTR); + previousElementNeedsComma_ = true; + nextElementNeedsNewLine_ = true; + previousElementIsVariantTag_ = false; + } + void emitInteger(int64_t val) { + tab(); + os_ << val; + previousElementNeedsComma_ = true; + nextElementNeedsNewLine_ = true; + previousElementIsVariantTag_ = false; + } + void emitString(const std::string &val) { + tab(); + os_ << QUOTE; + write_escaped(val); + os_ << QUOTE; + previousElementNeedsComma_ = true; + nextElementNeedsNewLine_ = true; + previousElementIsVariantTag_ = false; + } + void emitTag(const std::string &val) { + tab(); + os_ << QUOTE; + write_escaped(val); + os_ << QUOTE; + if (options_.prettifyJson) { + os_ << COLONWITHSPACES; + } else { + os_ << COLON; + } + previousElementNeedsComma_ = false; + nextElementNeedsNewLine_ = false; + previousElementIsVariantTag_ = false; + } + void emitVariantTag(const std::string &val, bool hasArgs) { + tab(); + os_ << QUOTE; + write_escaped(val); + os_ << QUOTE; + previousElementNeedsComma_ = false; + nextElementNeedsNewLine_ = false; + previousElementIsVariantTag_ = true; + } + + void enterArray() { enterContainer(LBRACKET); } + void enterArray(int size) { enterArray(); } + void leaveArray() { leaveContainer(RBRACKET); } + void enterObject() { enterContainer(LBRACE); } + void enterObject(int size) { enterObject(); } + void leaveObject() { leaveContainer(RBRACE); } + void enterTuple() { enterContainer(options_.useYojson ? LPAREN : LBRACKET); } + void enterTuple(int size) { enterTuple(); } + void leaveTuple() { leaveContainer(options_.useYojson ? RPAREN : RBRACKET); } + void enterVariant() { + enterContainer(options_.useYojson ? LANGLE : LBRACKET); + // cancel indent + indentLevel_--; + nextElementNeedsNewLine_ = false; + } + void leaveVariant() { + nextElementNeedsNewLine_ = false; + leaveContainer(options_.useYojson ? RANGLE : RBRACKET); + indentLevel_++; + } +}; + +const uint8_t bool_tag = 0; +const uint8_t int8_tag = 1; +const uint8_t int16_tag = 2; +const uint8_t int32_tag = 3; +const uint8_t int64_tag = 4; +const uint8_t float64_tag = 12; +const uint8_t uvint_tag = 16; +const uint8_t svint_tag = 17; +const uint8_t string_tag = 18; +const uint8_t ARRAY_tag = 19; +const uint8_t TUPLE_tag = 20; +const uint8_t RECORD_tag = 21; +const uint8_t NUM_VARIANT_tag = 22; +const uint8_t VARIANT_tag = 23; +const uint8_t unit_tag = 24; +const uint8_t TABLE_tag = 25; +const uint8_t SHARED_tag = 26; + +const int SIZE_NOT_NEEDED = -1; + +// Configure GenWriter for Biniou binary output +template +class BiniouEmitter { + + private: + OStream &os_; + + // Opened container, writing in progress. + struct ATDContainer { + uint8_t tag; + int size; + int count; + + ATDContainer(uint8_t tag, int size) : tag(tag), size(size), count(0) {} + }; + + // The full stack of opened containers + std::vector atdContainers; + + public: + const bool shouldSimpleVariantsBeEmittedAsStrings = false; + + BiniouEmitter(OStream &os) : os_(os) {} + + private: + bool isValueTagNeeded() { + if (!atdContainers.empty()) { + const ATDContainer &obj = atdContainers.back(); + return obj.tag != ARRAY_tag || obj.count == 0; + } + return true; + } + + void markWrite() { + if (!atdContainers.empty()) { + atdContainers.back().count++; + } + } + + void enterContainer(uint8_t tag, int size) { + bool needTag = isValueTagNeeded(); + atdContainers.emplace_back(tag, size); + writeValueTag(os_, needTag, tag); + if (size != SIZE_NOT_NEEDED) { + writeUvint(os_, size); + } + } + + void leaveContainer() { + atdContainers.pop_back(); + markWrite(); + } + + // string hash algorithm from the biniou spec + static uint32_t biniou_hash(const std::string &str) { + uint32_t hash = 0; + for (const char &c : str) { + hash = 223 * hash + c; + } + hash %= 1 << 31; + return hash; + } + + static void write8(OStream &os, uint8_t c) { os.write((const char *)&c, 1); } + + static void write32(OStream &os, int32_t x) { + write8(os, x >> 24); + write8(os, x >> 16); + write8(os, x >> 8); + write8(os, x); + } + + static void writeUvint(OStream &os, uint64_t x) { + while (x > 127) { + write8(os, x | 128); + x >>= 7; + } + + write8(os, (uint8_t)x); + } + + static void writeSvint(OStream &os, int64_t x) { + if (x >= 0) { + uint64_t t = x; + t = t * 2; + writeUvint(os, t); + } else { + uint64_t t = -x; + t = t * 2 - 1; + writeUvint(os, t); + } + } + + static void writeValueTag(OStream &os, bool needTag, uint8_t tag) { + if (needTag) { + write8(os, tag); + } + } + + void emitDummyRecordField() { + emitTag("!!DUMMY!!"); + markWrite(); + // unit is the smallest value (2 bytes) + write8(os_, unit_tag); + write8(os_, 0); + } + + public: + void emitEOF() {} + + void emitBoolean(bool val) { + bool needTag = isValueTagNeeded(); + markWrite(); + writeValueTag(os_, needTag, bool_tag); + write8(os_, val); + } + + void emitInteger(int64_t val) { + bool needTag = isValueTagNeeded(); + markWrite(); + writeValueTag(os_, needTag, svint_tag); + writeSvint(os_, val); + } + + void emitString(const std::string &val) { + bool needTag = isValueTagNeeded(); + markWrite(); + writeValueTag(os_, needTag, string_tag); + writeUvint(os_, val.length()); + for (const char &c : val) { + write8(os_, c); + } + } + + void emitTag(const std::string &val) { + int32_t hash = biniou_hash(val); + // set first bit of hash + hash |= 1 << 31; + markWrite(); + write32(os_, hash); + } + + void emitVariantTag(const std::string &val, bool hasArg) { + int32_t hash = biniou_hash(val); + // set first bit of hash if the variant has an argument + if (hasArg) { + hash |= 1 << 31; + } + markWrite(); + write32(os_, hash); + } + + void enterArray(int size) { enterContainer(ARRAY_tag, size); } + // unsupported: + // void enterArray() { enterContainer(ARRAY_tag); } + void leaveArray() { leaveContainer(); } + void enterObject(int size) { enterContainer(RECORD_tag, size); } + // unsupported: + // void enterObject() { enterContainer(RECORD_tag); } + void leaveObject() { + const ATDContainer &obj = atdContainers.back(); + // Container's size was already written -> must fill in for missing + // records. + for (int i = obj.count / 2; i < obj.size; i++) { + emitDummyRecordField(); + } + leaveContainer(); + } + void enterTuple(int size) { enterContainer(TUPLE_tag, size); } + // unsupported: + // void enterTuple() { enterContainer(TUPLE_tag); } + void leaveTuple() { leaveContainer(); } + void enterVariant() { enterContainer(VARIANT_tag, SIZE_NOT_NEEDED); } + void leaveVariant() { leaveContainer(); } +}; + +// The full class for JSON and YOJSON writing +template +class JsonWriter : public GenWriter> { + typedef JsonEmitter Emitter; + + public: + JsonWriter(OStream &os, const ATDWriterOptions opts) + : GenWriter(Emitter(os, opts)) {} +}; + +// The full class for biniou writing +template +class BiniouWriter : public GenWriter> { + typedef BiniouEmitter Emitter; + + public: + BiniouWriter(OStream &os) : GenWriter(Emitter(os)) {} + + BiniouWriter(OStream &os, const ATDWriterOptions opts) + : GenWriter(Emitter(os)) {} +}; +} // namespace ATDWriter diff --git a/facebook-clang-plugins/libtooling/atdlib/Makefile b/facebook-clang-plugins/libtooling/atdlib/Makefile new file mode 100644 index 000000000..6d9357bbf --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/Makefile @@ -0,0 +1,35 @@ +# Copyright (c) 2014-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. + +.PHONY: clean all test + +LEVEL=../.. +include $(LEVEL)/Makefile.common + +all: build/jsontest build/binioutest + +build/jsontest: tests/jsontest.cpp ATDWriter.h + @mkdir -p build + $(CXX) $(CFLAGS) $< -o $@ + +build/binioutest: tests/binioutest.cpp ATDWriter.h + @mkdir -p build + $(CXX) $(CFLAGS) $< -o $@ + +test: build/jsontest build/binioutest extract_atd_from_cpp.py normalize_names_in_atd.py + @$(RUNTEST) tests/jsontest build/jsontest + @! hash bdump 2>/dev/null || $(RUNTEST) tests/binioutest tests/binioutest.sh + @$(RUNTEST) tests/extract_test.cpp extract_atd_from_cpp.py tests/extract_test.cpp + @$(RUNTEST) tests/normalize_test.atd normalize_names_in_atd.py tests/normalize_test.atd + @if [ ! $$KEEP_TEST_OUTPUTS ]; then rm -f tests/*.out; fi + +record-test-outputs: + @rm -f tests/*.out + @$(MAKE) DEBUG=1 KEEP_TEST_OUTPUTS=1 test || true + @for F in tests/*.out; do cp $$F $${F%.out}.exp; done + @rm -f tests/*.out + +clean: + @rm -rf build/* tests/*.o tests/*.out diff --git a/facebook-clang-plugins/libtooling/atdlib/extract_atd_from_cpp.py b/facebook-clang-plugins/libtooling/atdlib/extract_atd_from_cpp.py new file mode 100755 index 000000000..cfe82b1cf --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/extract_atd_from_cpp.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2014-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 sys +import argparse +import re + +""" +Extract the ATD specifications inlined in a C/C++ file +""" + +atd_comment = re.compile(r'^ *//@atd ?(.*)') + +def start(file): + for line in file: + m = atd_comment.match(line) + if m: + print(m.group(1)) + +def main(): + arg_parser = argparse.ArgumentParser(description='Extract the ATD specifications inlined in a C/C++ file') + arg_parser.add_argument(metavar="FILE", nargs='?', dest="input_file", help="Input log file (default: stdin)") + args = arg_parser.parse_args() + if args.input_file: + file = open(args.input_file, "r") + else: + file = sys.stdin + start(file) + +if __name__ == '__main__': + main() diff --git a/facebook-clang-plugins/libtooling/atdlib/normalize_names_in_atd.py b/facebook-clang-plugins/libtooling/atdlib/normalize_names_in_atd.py new file mode 100755 index 000000000..be9179b26 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/normalize_names_in_atd.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2014-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 sys +import re +import argparse + +""" +This script normalizes the names between "@" across the file + removes empty lines. +""" + +bigcap = re.compile("([A-Z]*)([A-Z])") + +def normalize_name(name, first_letter_in_bigcap = False): + """ + Convert a name in java-like convention to the small-caps + underscores convention. + Examples of renaming: + ThisName -> this_name + CXXDecl -> cxx_decl + """ + name = name.strip() + if name == "": + return + + def f_sub(m): + res = ""; + if m.start() != 0: + res += "_" + if m.group(1) != "": + res += m.group(1).lower() + res += "_" + res += m.group(2).lower() + return res + + name = bigcap.sub(f_sub, name) + + if first_letter_in_bigcap: + name = name[0].upper() + name[1:] + return name + +at_word = re.compile("@(.*?)@") + +def start(file): + for line in file: + if not line.strip(): + continue + line = at_word.sub(lambda m: normalize_name(m.group(1)), line) + sys.stdout.write(line) + +def main(): + arg_parser = argparse.ArgumentParser(description='Normalize the strings "@AxxByy@" to "axx_byy" across the ATD file and remove empty lines.') + arg_parser.add_argument(metavar="FILE", nargs='?', dest="input_file", help="Input log file (default: stdin)") + args = arg_parser.parse_args() + if args.input_file: + file = open(args.input_file, "r") + else: + file = sys.stdin + start(file) + +if __name__ == '__main__': + main() diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.cpp b/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.cpp new file mode 100644 index 000000000..d9e04dc72 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.cpp @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2015-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. + */ +#include "../ATDWriter.h" + +typedef ATDWriter::BiniouWriter BiniouWriter; +typedef BiniouWriter::ObjectScope ObjectScope; +typedef BiniouWriter::ArrayScope ArrayScope; +typedef BiniouWriter::VariantScope VariantScope; +typedef BiniouWriter::TupleScope TupleScope; + +int main(int argc, char **argv) { + { + BiniouWriter OF(std::cout); + OF.emitInteger(-100000); + } + { + BiniouWriter OF(std::cout); + int64_t min_ocaml = -4611686018427387904; + OF.emitInteger(min_ocaml); + } + { + BiniouWriter OF(std::cout); + int64_t max_ocaml = 4611686018427387903; + OF.emitInteger(max_ocaml); + } + { + BiniouWriter OF(std::cout); + OF.emitString("Hello"); + } + { + BiniouWriter OF(std::cout); + OF.emitBoolean(true); + } + { + BiniouWriter OF(std::cout); + ArrayScope Scope(OF, 0); + } + { + BiniouWriter OF(std::cout); + ArrayScope Scope(OF, 3); + OF.emitString("Hello, how are you?"); + OF.emitString("I'm well, thank you; and you, how are you?"); + OF.emitString("I'm fine, thank you."); + } + { + BiniouWriter OF(std::cout); + ArrayScope Scope(OF, 3); + { + ArrayScope Scope(OF, 1); + { + ArrayScope Scope(OF, 1); + OF.emitInteger(1); + } + } + { + ArrayScope Scope(OF, 2); + { ArrayScope Scope(OF, 0); } + { + ArrayScope Scope(OF, 2); + OF.emitInteger(2); + OF.emitInteger(3); + } + } + { ArrayScope Scope(OF, 0); } + } + { + BiniouWriter OF(std::cout); + ObjectScope Scope(OF, 12); // 12 is larger than the actual size on purpose + OF.emitTag("string"); + OF.emitString("Hello"); + OF.emitTag("boolean"); + OF.emitBoolean(true); + OF.emitTag("integer"); + OF.emitInteger(100000); + } + { + BiniouWriter OF(std::cout); + ObjectScope Scope(OF, 2); + OF.emitTag("integer"); + OF.emitInteger(100000); + OF.emitTag("array"); + { + ArrayScope Scope(OF, 2); + OF.emitInteger(1); + OF.emitInteger(2); + } + } + { + BiniouWriter OF(std::cout); + ObjectScope Scope(OF, 2); + OF.emitTag("string"); + OF.emitString("multiply"); + OF.emitTag("array"); + { + ArrayScope Scope(OF, 2); + { + ObjectScope Scope(OF, 1); + OF.emitTag("integer"); + OF.emitInteger(32); + } + { + ObjectScope Scope(OF, 2); + OF.emitTag("integer"); + OF.emitInteger(52); + } + } + } + { + BiniouWriter OF(std::cout); + TupleScope Scope(OF, 2); + OF.emitSimpleVariant("zero"); + { + VariantScope Scope(OF, "succ"); + { + VariantScope Scope(OF, "pred"); + OF.emitSimpleVariant("zero"); + } + } + } + { + BiniouWriter OF(std::cout); + TupleScope Scope(OF, 2); + OF.emitSimpleVariant("zero"); + { + VariantScope Scope(OF, "succ"); + { + VariantScope Scope(OF, "pred"); + { + VariantScope Scope(OF, "eval"); + { + TupleScope Scope(OF, 2); + OF.emitString("f"); + OF.emitString("\"3\t4\n\""); + } + } + } + } + } + + return 0; +} diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.exp b/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.exp new file mode 100644 index 000000000..5c872e50d --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.exp @@ -0,0 +1,32 @@ +-100000 +-4611686018427387904 +4611686018427387903 +"Hello" +true +[] +[ + "Hello, how are you?", "I'm well, thank you; and you, how are you?", + "I'm fine, thank you." +] +[ [ [ 1 ] ], [ [], [ 2, 3 ] ], [] ] +{ + #113028d1: "Hello", + #fdfeeaa8: true, + #171bbdbe: 100000, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit, + #21ac3408: unit +} +{ #171bbdbe: 100000, #258f6d99: [ 1, 2 ] } +{ + #113028d1: "multiply", + #258f6d99: [ { #171bbdbe: 32 }, { #171bbdbe: 52, #21ac3408: unit } ] +} +(<#d0f10f28>, <#cc5ca7c2: <#ca5ebee1: <#d0f10f28>>>) +(<#d0f10f28>, <#cc5ca7c2: <#ca5ebee1: <#c31c6b9c: ("f", "\"3\t4\n\"")>>>) diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.sh b/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.sh new file mode 100755 index 000000000..fc05038b9 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/binioutest.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Copyright (c) 2015-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. + +./build/binioutest | bdump diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp b/facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp new file mode 100644 index 000000000..339666dde --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2014-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. + */ +//@atd type x = { +//@atd foo : int +//@atd } +//@atd +// main +int main() {} + +//@atd type x = { +//@atd} +// bla + +//@atd foo +//@atd bar + +//@atd still there + +//@atd some long line cut with \ +//@atd bla diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp.exp b/facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp.exp new file mode 100644 index 000000000..5f5caad40 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/extract_test.cpp.exp @@ -0,0 +1,11 @@ +type x = { + foo : int +} + +type x = { +} +foo +bar +still there +some long line cut with \ + bla diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/jsontest.cpp b/facebook-clang-plugins/libtooling/atdlib/tests/jsontest.cpp new file mode 100644 index 000000000..1435c3f8a --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/jsontest.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2014-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. + */ +#include "../ATDWriter.h" + +typedef ATDWriter::JsonWriter JsonWriter; +typedef JsonWriter::ObjectScope ObjectScope; +typedef JsonWriter::ArrayScope ArrayScope; +typedef JsonWriter::VariantScope VariantScope; +typedef JsonWriter::TupleScope TupleScope; + +int main(int argc, char **argv) { + const struct ATDWriter::ATDWriterOptions jsonWriterOptions = { + .useYojson = false, + .prettifyJson = true, + }; + const struct ATDWriter::ATDWriterOptions yojsonWriterOptions = { + .useYojson = true, + .prettifyJson = true, + }; + + { + JsonWriter OF(std::cout, yojsonWriterOptions); + OF.emitInteger(100000); + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + OF.emitInteger(-100000); + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + OF.emitString("Hello"); + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + OF.emitBoolean(true); + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + ArrayScope Scope(OF, 3); + OF.emitString("Hello"); + OF.emitBoolean(true); + OF.emitInteger(100000); + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + ObjectScope Scope(OF, 4); // 4 is larger than the actual size on purpose + OF.emitTag("string"); + OF.emitString("Hello"); + OF.emitTag("boolean"); + OF.emitBoolean(true); + OF.emitTag("integer"); + OF.emitInteger(100000); + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + ObjectScope Scope(OF, 2); + OF.emitTag("integer"); + OF.emitInteger(100000); + OF.emitTag("array"); + { + ArrayScope Scope(OF, 2); + OF.emitInteger(1); + OF.emitInteger(2); + } + } + { + JsonWriter OF(std::cout, jsonWriterOptions); + TupleScope Scope(OF, 2); + OF.emitSimpleVariant("zero"); + { + VariantScope Scope(OF, "succ"); + { + VariantScope Scope(OF, "pred"); + OF.emitSimpleVariant("zero"); + } + } + } + { + JsonWriter OF(std::cout, yojsonWriterOptions); + TupleScope Scope(OF, 2); + OF.emitSimpleVariant("zero"); + { + VariantScope Scope(OF, "succ"); + { + VariantScope Scope(OF, "pred"); + { + VariantScope Scope(OF, "eval"); + { + TupleScope Scope(OF, 2); + OF.emitString("f"); + OF.emitString("\"3\t4\n\""); + } + } + } + } + } + + return 0; +} diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/jsontest.exp b/facebook-clang-plugins/libtooling/atdlib/tests/jsontest.exp new file mode 100644 index 000000000..2827ce5eb --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/jsontest.exp @@ -0,0 +1,32 @@ +100000 +-100000 +"Hello" +true +[ + "Hello", + true, + 100000 +] +{ + "string" : "Hello", + "boolean" : true, + "integer" : 100000 +} +{ + "integer" : 100000, + "array" : [ + 1, + 2 + ] +} +[ + "zero", + ["succ" , ["pred" , "zero"]] +] +( + <"zero">, + <"succ" : <"pred" : <"eval" : ( + "f", + "\"3\t4\n\"" + )>>> +) diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd b/facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd new file mode 100644 index 000000000..14a2fc097 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd @@ -0,0 +1,5 @@ +type @ObjCExpression@ = {} + +type x@@yz = { + @CXXExpression@ : string +} diff --git a/facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd.exp b/facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd.exp new file mode 100644 index 000000000..832ca91d0 --- /dev/null +++ b/facebook-clang-plugins/libtooling/atdlib/tests/normalize_test.atd.exp @@ -0,0 +1,4 @@ +type obj_c_expression = {} +type xyz = { + cxx_expression : string +} diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/Hello.m.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/Hello.m.exp new file mode 100644 index 000000000..1a3a0cb95 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/Hello.m.exp @@ -0,0 +1,1524 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 4, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "SEL", #2cdb06fb: [ "SEL" ] }, + 5, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 6, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "id", #2cdb06fb: [ "id" ] }, + 7, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 8, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "Class", #2cdb06fb: [ "Class" ] }, + 9, + { })>, + <#18d25297: + ({ + #d121c0bd: 10, + #f9005968: 1, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "Protocol", #2cdb06fb: [ "Protocol" ] }, + [], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 11, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 12, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 13, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 14, + #21793419: + ({ + #c3bbce7c: "tests/FoundationStub.h", + #c7b317f4: 8, + #c68b4ed6: 1 + }, + { #c68b4ed6: 13 }), + #d3368c8a: true + }, + { #c8ff724b: "BOOL", #2cdb06fb: [ "BOOL" ] }, + 15, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 16, + #21793419: ({ #c7b317f4: 9, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #d3368c8a: true + }, + { #c8ff724b: "NSUInteger", #2cdb06fb: [ "NSUInteger" ] }, + 17, + { })>, + <#18d25297: + ({ + #d121c0bd: 18, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 1 }, + { #c7b317f4: 27, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 19, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 20, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "alloc", #2cdb06fb: [ "alloc", "NSObject" ] }, + { + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "+[NSObject alloc]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 22, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, { #c68b4ed6: 20 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 23, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "new", #2cdb06fb: [ "new", "NSObject" ] }, + { + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "+[NSObject new]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 24, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 1 }, { #c68b4ed6: 28 }) + }, + { + #c8ff724b: "autorelease", + #2cdb06fb: [ "autorelease", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "-[NSObject autorelease]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 25, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, { #c68b4ed6: 21 }), + #1771a8d7: [ + <#d9379b99: ({ #d121c0bd: 26, #21793419: ({ }, { }) })>, + <#d394bbd3: ({ #d121c0bd: 27, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "init", #2cdb06fb: [ "init", "NSObject" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "-[NSObject init]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 28, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, { #c68b4ed6: 15 }) + }, + { #c8ff724b: "class", #2cdb06fb: [ "class", "NSObject" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 9 }, + #d2e9b40c: "-[NSObject class]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 29, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 1 }, { #c68b4ed6: 34 }) + }, + { + #c8ff724b: "respondsToSelector:", + #2cdb06fb: [ "respondsToSelector:", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 15 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 30, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 33 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 5 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSObject respondsToSelector:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 31, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 1 }, { #c68b4ed6: 41 }) + }, + { + #c8ff724b: "conformsToProtocol:", + #2cdb06fb: [ "conformsToProtocol:", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 15 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 32, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 40 }) + }, + { #c8ff724b: "p", #2cdb06fb: [ "p" ] }, + { #c1127ea9: 33 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSObject conformsToProtocol:]" + })> + ], + { }, + { })>, + <#18d25297: + ({ + #d121c0bd: 34, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 29, #c68b4ed6: 1 }, + { #c7b317f4: 31, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSNumber", #2cdb06fb: [ "NSNumber" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 35, + #f9005968: 34, + #21793419: + ({ #c7b317f4: 30, #c68b4ed6: 1 }, { #c68b4ed6: 37 }) + }, + { + #c8ff724b: "numberWithInt:", + #2cdb06fb: [ "numberWithInt:", "NSNumber" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 36, + #21793419: ({ #c68b4ed6: 32 }, { #c68b4ed6: 36 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "+[NSNumber numberWithInt:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 38, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 33, #c68b4ed6: 1 }, + { #c7b317f4: 35, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSString", #2cdb06fb: [ "NSString" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 39, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 1 }, { #c68b4ed6: 21 }) + }, + { #c8ff724b: "length", #2cdb06fb: [ "length", "NSString" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 17 }, + #d2e9b40c: "-[NSString length]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 40, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 37, #c68b4ed6: 1 }, + { #c7b317f4: 42, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSDictionary", #2cdb06fb: [ "NSDictionary" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 41, + #f9005968: 40, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 1 }, + { #c7b317f4: 40, #c68b4ed6: 56 }) + }, + { + #c8ff724b: "dictionaryWithObjects:forKeys:count:", + #2cdb06fb: [ + "dictionaryWithObjects:forKeys:count:", "NSDictionary" + ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 42, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "objects", #2cdb06fb: [ "objects" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 44, + #21793419: + ({ #c7b317f4: 39, #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "keys", #2cdb06fb: [ "keys" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 1 })>, + <#fd75cc45: + ({ + #d121c0bd: 45, + #21793419: + ({ #c7b317f4: 40, #c68b4ed6: 40 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "count", #2cdb06fb: [ "count" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 2 })> + ], + #d2e9b40c: + "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 46, + #f9005968: 40, + #21793419: + ({ #c7b317f4: 41, #c68b4ed6: 1 }, { #c68b4ed6: 38 }) + }, + { + #c8ff724b: "objectForKeyedSubscript:", + #2cdb06fb: [ "objectForKeyedSubscript:", "NSDictionary" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 7 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 47, + #21793419: ({ #c68b4ed6: 32 }, { #c68b4ed6: 35 }) + }, + { #c8ff724b: "key", #2cdb06fb: [ "key" ] }, + { #c1127ea9: 7 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSDictionary objectForKeyedSubscript:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 48, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 44, #c68b4ed6: 1 }, + { #c7b317f4: 47, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSArray", #2cdb06fb: [ "NSArray" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 49, + #f9005968: 48, + #21793419: + ({ #c7b317f4: 45, #c68b4ed6: 1 }, { #c68b4ed6: 64 }) + }, + { + #c8ff724b: "arrayWithObjects:count:", + #2cdb06fb: [ "arrayWithObjects:count:", "NSArray" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 50, + #21793419: ({ #c68b4ed6: 35 }, { #c68b4ed6: 40 }) + }, + { #c8ff724b: "objs", #2cdb06fb: [ "objs" ] }, + { #c1127ea9: 51 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 52, + #21793419: ({ #c68b4ed6: 52 }, { #c68b4ed6: 61 }) + }, + { #c8ff724b: "cnt", #2cdb06fb: [ "cnt" ] }, + { #c1127ea9: 53 }, + { #0370b1b2: 1 })> + ], + #d2e9b40c: "+[NSArray arrayWithObjects:count:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 54, + #f9005968: 48, + #21793419: + ({ #c7b317f4: 46, #c68b4ed6: 1 }, { #c68b4ed6: 49 }) + }, + { + #c8ff724b: "objectAtIndexedSubscript:", + #2cdb06fb: [ "objectAtIndexedSubscript:", "NSArray" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 7 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 55, + #21793419: ({ #c68b4ed6: 33 }, { #c68b4ed6: 44 }) + }, + { #c8ff724b: "index", #2cdb06fb: [ "index" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSArray objectAtIndexedSubscript:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 56, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 49, #c68b4ed6: 1 }, + { #c7b317f4: 50, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSException", #2cdb06fb: [ "NSException" ] }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 57, + #21793419: ({ #c7b317f4: 52, #c68b4ed6: 13 }, { #c68b4ed6: 13 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #1771a8d7: [ + <#f68c4428: + ({ + #d121c0bd: 58, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + })> + ] + }, + { #c8ff724b: "NSLog", #2cdb06fb: [ "NSLog" ] }, + { #c1127ea9: 59 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 60, #21793419: ({ }, { }) }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 7 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 61, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 34 }), + #0a16e1f2: true, + #d3368c8a: true, + #1771a8d7: [ + <#f68c4428: + ({ + #d121c0bd: 62, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + })> + ] + }, + { #c8ff724b: "NSLog", #2cdb06fb: [ "NSLog" ] }, + { #c1127ea9: 59 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 63, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 28 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ] + })>, + <#18d25297: + ({ + #d121c0bd: 65, + #f9005968: 1, + #21793419: + ({ #c3bbce7c: "tests/Hello.m", #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 12, #c68b4ed6: 2 }) + }, + { #c8ff724b: "Hello", #2cdb06fb: [ "Hello" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 66, + #f9005968: 65, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, { #c68b4ed6: 19 }) + }, + { #c8ff724b: "say:", #2cdb06fb: [ "say:", "Hello" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 67 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 68, + #21793419: ({ #c68b4ed6: 14 }, { #c68b4ed6: 18 }) + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[Hello say:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + }, + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 69, + #c8ff724b: { #c8ff724b: "Hello", #2cdb06fb: [ "Hello" ] } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 69, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, + { #c7b317f4: 20, #c68b4ed6: 1 }) + }, + { #c8ff724b: "Hello", #2cdb06fb: [ "Hello" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 70, + #f9005968: 69, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 1 }, + { #c7b317f4: 19, #c68b4ed6: 1 }) + }, + { #c8ff724b: "say:", #2cdb06fb: [ "say:", "Hello" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 67 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 71, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 14 }, + { #c68b4ed6: 18 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 72, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 73, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 74, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 75, + #21793419: + ({ #c68b4ed6: 20 }, + { #c7b317f4: 19, #c68b4ed6: 1 }) + }, + [ + <#22219ce5: + ({ + #d121c0bd: 76, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 3 }, + { #c7b317f4: 18, #c68b4ed6: 3 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 77, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 7 }, + { #c68b4ed6: 11 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 78, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 7 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 7 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { + #c1127ea9: 37 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 37 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#0fb8fb71: + ({ + #d121c0bd: 80, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ], + { #30e4876a: { #c1127ea9: 37 } }, + { #c709e154: <#00003e2d> })>, + <#d394bb73: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 14 }, + { #c7b317f4: 18, #c68b4ed6: 3 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 82, + #21793419: + ({ + #c7b317f4: 17, + #c68b4ed6: 5 + }, + { #c68b4ed6: 35 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 59 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: + "NSLog", + #2cdb06fb: [ + "NSLog" + ] + }, + #30e4876a: { + #c1127ea9: 59 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 85 + } + }, + { + #c91e0a14: <#210490b0>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 86, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 87, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 88, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 89 + }, + #0e89e422: + <#28055b85> + }, + [ + "Hello, world! (%d)" + ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { + #30e4876a: { #c1127ea9: 7 } + }, + { + #c91e0a14: <#2b10160c>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 90, + #21793419: + ({ #c68b4ed6: 34 }, + { #c68b4ed6: 34 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 91, + #21793419: + ({ #c68b4ed6: 34 }, + { #c68b4ed6: 34 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: 37 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 67 } })> + ])> + ], + { #c1c4b9e2: 77, #ccfc02dd: 81 })> + ])>, + #d2e9b40c: "-[Hello say:]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 65, + #c8ff724b: { #c8ff724b: "Hello", #2cdb06fb: [ "Hello" ] } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 92, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, + { #c7b317f4: 29, #c68b4ed6: 1 }) + }, + { #c8ff724b: "main", #2cdb06fb: [ "main" ] }, + { #c1127ea9: 93 }, + { + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 94, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 10 }, { #c68b4ed6: 14 }) + }, + { #c8ff724b: "argc", #2cdb06fb: [ "argc" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 95, + #21793419: ({ #c68b4ed6: 20 }, { #c68b4ed6: 31 }) + }, + { #c8ff724b: "argv", #2cdb06fb: [ "argv" ] }, + { #c1127ea9: 96 }, + { #0370b1b2: 1 })> + ], + #ebe3c415: 92, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 97, + #21793419: + ({ #c68b4ed6: 34 }, { #c7b317f4: 29, #c68b4ed6: 1 }) + }, + [ + <#1b5ec1d1: + ({ + #d121c0bd: 98, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, + { #c7b317f4: 27, #c68b4ed6: 3 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 99, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 8 }, + { #c68b4ed6: 17 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 100, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 101, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 16 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 37 }, + { + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 100, + #21793419: + ({ #c68b4ed6: 16 }, + { #c68b4ed6: 16 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + })> + ])>, + <#03b4c48f: + ({ #d121c0bd: 102, #21793419: ({ }, { }) }, [])>, + <#d49390e5: + ({ + #d121c0bd: 103, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 23 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 104, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 105, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { + #30e4876a: { #c1127ea9: 37 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 101, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 37 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })>, + <#0fb8fb71: + ({ + #d121c0bd: 106, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 23 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + ], + { #30e4876a: { #c1127ea9: 37 } }, + { #c709e154: <#00004288> })>, + <#30da4453: + ({ + #d121c0bd: 107, + #21793419: + ({ #c68b4ed6: 26 }, { #c68b4ed6: 27 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 108, + #21793419: + ({ #c68b4ed6: 26 }, { #c68b4ed6: 26 }) + }, + [], + { + #30e4876a: { #c1127ea9: 37 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 101, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 37 } }, + { #c709e154: <#e44b643e>, #f1c5e8e0: true })>, + <#d394bb73: + ({ + #d121c0bd: 109, + #21793419: + ({ #c68b4ed6: 31 }, + { #c7b317f4: 27, #c68b4ed6: 3 }) + }, + [ + <#1a1d5a70: + ({ + #d121c0bd: 110, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 5 }, + { #c7b317f4: 26, #c68b4ed6: 5 }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 111, + #21793419: + ({ + #c7b317f4: 24, + #c68b4ed6: 22 + }, + { + #c7b317f4: 26, + #c68b4ed6: 5 + }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 112, + #21793419: + ({ + #c7b317f4: 25, + #c68b4ed6: 7 + }, + { #c68b4ed6: 25 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 113, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 25 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 114, + #21793419: + ({ + #c68b4ed6: + 8 + }, + { + #c68b4ed6: + 18 + }) + }, + [ + <#f104c570: + ({ + #d121c0bd: + 115, + #21793419: + ( + { + #c68b4ed6: + 8 + }, + { + #c68b4ed6: + 18 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 73 + } + }, + { + #316d331f: + "new", + #ec05e4a8: + 22, + #0ca98da4: + < + #db85e818: { + #c1127ea9: + 116 + }> + })> + ], + { + #30e4876a: { + #c1127ea9: 73 + } + }, + { + #c91e0a14: + <#38332009>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 117, + #21793419: + ({ + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 24 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 118, + #21793419: + ( + { + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 24 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 101, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 37 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 67 + } + }, + { + #316d331f: "say:", + #1ea99a8b: true, + #ec05e4a8: 70 + })> + ], + { + #30e4876a: { + #c1127ea9: 67 + } + }, + { })> + ])> + ])> + ])> + ])>, + <#df3bdb38: + ({ + #d121c0bd: 119, + #21793419: + ({ #c7b317f4: 28, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 120, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 121, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 21, + { })> + ], + { }, + { + #e870593a: "tests/Hello.m", + #e52854e9: <#3ff69d49>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 67 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 139 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 140 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 141 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 142 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 143 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 144 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 145 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 146 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 147 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 149 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 150 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 151 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 152 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 153 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 154 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 155 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 156 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 157 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 158 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 159 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 160 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 161 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 162 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 163 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 164 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 165 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 166 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 167 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 168 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 169 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 170 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 171 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 172 })>, + <#2e6cf4ea: ({ #d121c0bd: 173 })>, + <#2e6cf4ea: ({ #d121c0bd: 174 })>, + <#2e6cf4ea: ({ #d121c0bd: 175 })>, + <#22d546dd: ({ #d121c0bd: 176 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 177 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 178 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 179 }, { #c1127ea9: 67 })>, + <#22d546dd: ({ #d121c0bd: 180 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 181 }, <#2fe155d3>)>, + <#d3d219f7: ({ #d121c0bd: 182 }, { #c1127ea9: 178 })>, + <#0098a8c5: ({ #d121c0bd: 183 }, { #fcd148e8: 176 })>, + <#2e3d736c: ({ #d121c0bd: 184 }, { #c1127ea9: 183 })>, + <#0098a8c5: ({ #d121c0bd: 185 }, { #fcd148e8: 177 })>, + <#2e3d736c: ({ #d121c0bd: 186 }, { #c1127ea9: 185 })>, + <#2374f4e7: ({ #d121c0bd: 187 }, 10)>, + <#d80cb60b: ({ #d121c0bd: 188 }, 189)>, + <#d3d219f7: ({ #d121c0bd: 190 }, { #c1127ea9: 37, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 191 }, { #c1127ea9: 123, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 192 }, { #c1127ea9: 123 })>, + <#d80cb60b: ({ #d121c0bd: 193 }, 194)>, + <#da0c5ecf: + ({ #d121c0bd: 195 }, + { #cd26765d: { #c1127ea9: 193 }, #11302019: 24 }, + 1)>, + <#2374f4e7: ({ #d121c0bd: 196 }, 18)>, + <#19e1ef85: + ({ #d121c0bd: 7, #26f32be5: 184 }, + { #0b680f7d: { #c1127ea9: 184 }, #c3687459: 6 })>, + <#19e1ef85: + ({ #d121c0bd: 21, #26f32be5: 184 }, + { #0b680f7d: { #c1127ea9: 7 }, #c3687459: 121 })>, + <#19e1ef85: + ({ #d121c0bd: 9, #26f32be5: 186 }, + { #0b680f7d: { #c1127ea9: 186 }, #c3687459: 8 })>, + <#19e1ef85: + ({ #d121c0bd: 15, #26f32be5: 37 }, + { #0b680f7d: { #c1127ea9: 37 }, #c3687459: 14 })>, + <#19e1ef85: + ({ #d121c0bd: 5, #26f32be5: 182 }, + { #0b680f7d: { #c1127ea9: 182 }, #c3687459: 4 })>, + <#2e3d736c: ({ #d121c0bd: 33 }, { #c1127ea9: 187 })>, + <#2374f4e7: ({ #d121c0bd: 197 }, 34)>, + <#2374f4e7: ({ #d121c0bd: 198 }, 38)>, + <#19e1ef85: + ({ #d121c0bd: 17, #26f32be5: 53 }, + { #0b680f7d: { #c1127ea9: 53 }, #c3687459: 16 })>, + <#2374f4e7: ({ #d121c0bd: 199 }, 40)>, + <#cd01b755: + ({ #d121c0bd: 200 }, + { #cd26765d: { #c1127ea9: 184 }, #11302019: 8 })>, + <#cd01b755: + ({ #d121c0bd: 201 }, + { #cd26765d: { #c1127ea9: 7, #ea1a680e: true }, #11302019: 8 })>, + <#cd01b755: + ({ #d121c0bd: 202 }, + { #cd26765d: { #c1127ea9: 7, #ea1a680e: true }, #11302019: 8 })>, + <#d3d219f7: ({ #d121c0bd: 203 }, { #c1127ea9: 184, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 204 }, { #c1127ea9: 7, #ea1a680e: true })>, + <#2d935553: ({ #d121c0bd: 43, #26f32be5: 204 }, { #c1127ea9: 204 })>, + <#2374f4e7: ({ #d121c0bd: 205 }, 48)>, + <#d3d219f7: ({ #d121c0bd: 206 }, { #c1127ea9: 184 })>, + <#d3d219f7: ({ #d121c0bd: 51 }, { #c1127ea9: 7 })>, + <#2374f4e7: ({ #d121c0bd: 207 }, 56)>, + <#2e3d736c: ({ #d121c0bd: 64 }, { #c1127ea9: 198 })>, + <#26796f6a: + ({ #d121c0bd: 208 }, + { #f9c96be9: { #c1127ea9: 67 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 209 }, + { #f9c96be9: { #c1127ea9: 67 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 210 }, + { #f9c96be9: { #c1127ea9: 67 } }, + { #08ec7593: [ { #c1127ea9: 184 } ] })>, + <#26796f6a: + ({ #d121c0bd: 59 }, + { #f9c96be9: { #c1127ea9: 67 } }, + { #08ec7593: [ { #c1127ea9: 7 } ] })>, + <#2374f4e7: ({ #d121c0bd: 116 }, 65)>, + <#2e3d736c: ({ #d121c0bd: 73 }, { #c1127ea9: 116 })>, + <#da0c5ecf: + ({ #d121c0bd: 89 }, + { #cd26765d: { #c1127ea9: 123 }, #11302019: 1 }, + 19)>, + <#d3d219f7: ({ #d121c0bd: 211 }, { #c1127ea9: 210 })>, + <#d3d219f7: ({ #d121c0bd: 85 }, { #c1127ea9: 59 })>, + <#cd01b755: + ({ #d121c0bd: 212 }, + { #cd26765d: { #c1127ea9: 192 }, #11302019: 8 })>, + <#d3d219f7: ({ #d121c0bd: 213 }, { #c1127ea9: 192 })>, + <#2d935553: ({ #d121c0bd: 96, #26f32be5: 213 }, { #c1127ea9: 213 })>, + <#26796f6a: + ({ #d121c0bd: 214 }, + { #f9c96be9: { #c1127ea9: 37 } }, + { #08ec7593: [ { #c1127ea9: 37 }, { #c1127ea9: 213 } ] })>, + <#26796f6a: + ({ #d121c0bd: 93 }, + { #f9c96be9: { #c1127ea9: 37 } }, + { #08ec7593: [ { #c1127ea9: 37 }, { #c1127ea9: 96 } ] })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCBridgeTransferTest.m.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCBridgeTransferTest.m.exp new file mode 100644 index 000000000..c2185232f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCBridgeTransferTest.m.exp @@ -0,0 +1,1170 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 4, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "SEL", #2cdb06fb: [ "SEL" ] }, + 5, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 6, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "id", #2cdb06fb: [ "id" ] }, + 7, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 8, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "Class", #2cdb06fb: [ "Class" ] }, + 9, + { })>, + <#18d25297: + ({ + #d121c0bd: 10, + #f9005968: 1, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "Protocol", #2cdb06fb: [ "Protocol" ] }, + [], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 11, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 12, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 13, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 14, + #21793419: + ({ + #c3bbce7c: "tests/FoundationStub.h", + #c7b317f4: 8, + #c68b4ed6: 1 + }, + { #c68b4ed6: 13 }), + #d3368c8a: true + }, + { #c8ff724b: "BOOL", #2cdb06fb: [ "BOOL" ] }, + 15, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 16, + #21793419: ({ #c7b317f4: 9, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #d3368c8a: true + }, + { #c8ff724b: "NSUInteger", #2cdb06fb: [ "NSUInteger" ] }, + 17, + { })>, + <#18d25297: + ({ + #d121c0bd: 18, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 1 }, + { #c7b317f4: 27, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 19, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 20, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "alloc", #2cdb06fb: [ "alloc", "NSObject" ] }, + { + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "+[NSObject alloc]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 22, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, { #c68b4ed6: 20 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 23, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "new", #2cdb06fb: [ "new", "NSObject" ] }, + { + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "+[NSObject new]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 24, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 1 }, { #c68b4ed6: 28 }) + }, + { + #c8ff724b: "autorelease", + #2cdb06fb: [ "autorelease", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "-[NSObject autorelease]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 25, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, { #c68b4ed6: 21 }), + #1771a8d7: [ + <#d9379b99: ({ #d121c0bd: 26, #21793419: ({ }, { }) })>, + <#d394bbd3: ({ #d121c0bd: 27, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "init", #2cdb06fb: [ "init", "NSObject" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "-[NSObject init]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 28, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, { #c68b4ed6: 15 }) + }, + { #c8ff724b: "class", #2cdb06fb: [ "class", "NSObject" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 9 }, + #d2e9b40c: "-[NSObject class]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 29, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 1 }, { #c68b4ed6: 34 }) + }, + { + #c8ff724b: "respondsToSelector:", + #2cdb06fb: [ "respondsToSelector:", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 15 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 30, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 33 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 5 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSObject respondsToSelector:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 31, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 1 }, { #c68b4ed6: 41 }) + }, + { + #c8ff724b: "conformsToProtocol:", + #2cdb06fb: [ "conformsToProtocol:", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 15 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 32, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 40 }) + }, + { #c8ff724b: "p", #2cdb06fb: [ "p" ] }, + { #c1127ea9: 33 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSObject conformsToProtocol:]" + })> + ], + { }, + { })>, + <#18d25297: + ({ + #d121c0bd: 34, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 29, #c68b4ed6: 1 }, + { #c7b317f4: 31, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSNumber", #2cdb06fb: [ "NSNumber" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 35, + #f9005968: 34, + #21793419: + ({ #c7b317f4: 30, #c68b4ed6: 1 }, { #c68b4ed6: 37 }) + }, + { + #c8ff724b: "numberWithInt:", + #2cdb06fb: [ "numberWithInt:", "NSNumber" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 36, + #21793419: ({ #c68b4ed6: 32 }, { #c68b4ed6: 36 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "+[NSNumber numberWithInt:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 38, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 33, #c68b4ed6: 1 }, + { #c7b317f4: 35, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSString", #2cdb06fb: [ "NSString" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 39, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 1 }, { #c68b4ed6: 21 }) + }, + { #c8ff724b: "length", #2cdb06fb: [ "length", "NSString" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 17 }, + #d2e9b40c: "-[NSString length]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 40, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 37, #c68b4ed6: 1 }, + { #c7b317f4: 42, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSDictionary", #2cdb06fb: [ "NSDictionary" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 41, + #f9005968: 40, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 1 }, + { #c7b317f4: 40, #c68b4ed6: 56 }) + }, + { + #c8ff724b: "dictionaryWithObjects:forKeys:count:", + #2cdb06fb: [ + "dictionaryWithObjects:forKeys:count:", "NSDictionary" + ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 42, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "objects", #2cdb06fb: [ "objects" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 44, + #21793419: + ({ #c7b317f4: 39, #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "keys", #2cdb06fb: [ "keys" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 1 })>, + <#fd75cc45: + ({ + #d121c0bd: 45, + #21793419: + ({ #c7b317f4: 40, #c68b4ed6: 40 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "count", #2cdb06fb: [ "count" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 2 })> + ], + #d2e9b40c: + "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 46, + #f9005968: 40, + #21793419: + ({ #c7b317f4: 41, #c68b4ed6: 1 }, { #c68b4ed6: 38 }) + }, + { + #c8ff724b: "objectForKeyedSubscript:", + #2cdb06fb: [ "objectForKeyedSubscript:", "NSDictionary" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 7 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 47, + #21793419: ({ #c68b4ed6: 32 }, { #c68b4ed6: 35 }) + }, + { #c8ff724b: "key", #2cdb06fb: [ "key" ] }, + { #c1127ea9: 7 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSDictionary objectForKeyedSubscript:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 48, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 44, #c68b4ed6: 1 }, + { #c7b317f4: 47, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSArray", #2cdb06fb: [ "NSArray" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 49, + #f9005968: 48, + #21793419: + ({ #c7b317f4: 45, #c68b4ed6: 1 }, { #c68b4ed6: 64 }) + }, + { + #c8ff724b: "arrayWithObjects:count:", + #2cdb06fb: [ "arrayWithObjects:count:", "NSArray" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 50, + #21793419: ({ #c68b4ed6: 35 }, { #c68b4ed6: 40 }) + }, + { #c8ff724b: "objs", #2cdb06fb: [ "objs" ] }, + { #c1127ea9: 51 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 52, + #21793419: ({ #c68b4ed6: 52 }, { #c68b4ed6: 61 }) + }, + { #c8ff724b: "cnt", #2cdb06fb: [ "cnt" ] }, + { #c1127ea9: 53 }, + { #0370b1b2: 1 })> + ], + #d2e9b40c: "+[NSArray arrayWithObjects:count:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 54, + #f9005968: 48, + #21793419: + ({ #c7b317f4: 46, #c68b4ed6: 1 }, { #c68b4ed6: 49 }) + }, + { + #c8ff724b: "objectAtIndexedSubscript:", + #2cdb06fb: [ "objectAtIndexedSubscript:", "NSArray" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 7 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 55, + #21793419: ({ #c68b4ed6: 33 }, { #c68b4ed6: 44 }) + }, + { #c8ff724b: "index", #2cdb06fb: [ "index" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSArray objectAtIndexedSubscript:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 56, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 49, #c68b4ed6: 1 }, + { #c7b317f4: 50, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSException", #2cdb06fb: [ "NSException" ] }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 57, + #21793419: ({ #c7b317f4: 52, #c68b4ed6: 13 }, { #c68b4ed6: 13 }), + #eb8a1f5a: true, + #1771a8d7: [ + <#f68c4428: + ({ + #d121c0bd: 58, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + })> + ] + }, + { #c8ff724b: "NSLog", #2cdb06fb: [ "NSLog" ] }, + { #c1127ea9: 59 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 60, #21793419: ({ }, { }) }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 7 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 61, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 34 }), + #1771a8d7: [ + <#f68c4428: + ({ + #d121c0bd: 62, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + })> + ] + }, + { #c8ff724b: "NSLog", #2cdb06fb: [ "NSLog" ] }, + { #c1127ea9: 59 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 63, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 28 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ] + })>, + <#cd6a13bb: + ({ + #d121c0bd: 65, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/ObjCBridgeTransferTest.m", + #c7b317f4: 10, + #c68b4ed6: 9 + }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "ABFDataRef", #2cdb06fb: [ "ABFDataRef" ] }, + 66, + [], + { }, + <#c5b1f8a9>, + { #33244202: 65, #1a9a7e84: true })>, + <#0f3f4d35: + ({ + #d121c0bd: 67, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 3 }), + #d3368c8a: true + }, + { #c8ff724b: "ABFDataRef", #2cdb06fb: [ "ABFDataRef" ] }, + 68, + { })>, + <#18d25297: + ({ + #d121c0bd: 69, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 2 }) + }, + { #c8ff724b: "ABFData", #2cdb06fb: [ "ABFData" ] }, + [], + { }, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 70, + #21793419: ({ #c7b317f4: 16, #c68b4ed6: 1 }, { #c68b4ed6: 27 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "ABFDataCreate", #2cdb06fb: [ "ABFDataCreate" ] }, + { #c1127ea9: 71 }, + { })>, + <#18d25297: + ({ + #d121c0bd: 72, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, + { #c7b317f4: 19, #c68b4ed6: 2 }) + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + }, + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 73, + #c8ff724b: { #c8ff724b: "A", #2cdb06fb: [ "A" ] } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 73, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, + { #c7b317f4: 27, #c68b4ed6: 1 }) + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 74, + #f9005968: 73, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "bridge_transfer_example", + #2cdb06fb: [ "bridge_transfer_example", "A" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 75 }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 76, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 77, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 78, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 79, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 33 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 80, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, + { #c68b4ed6: 66 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 65 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 82, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 65 }) + }, + [ + <#23214b43: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 65 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 51 }, + { #c68b4ed6: 65 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 85, + #21793419: + ({ + #c68b4ed6: + 51 + }, + { + #c68b4ed6: + 51 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 86, + #21793419: + ( + { + #c68b4ed6: + 51 + }, + { + #c68b4ed6: + 51 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 71 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 70, + #c8ff724b: { + #c8ff724b: + "ABFDataCreate", + #2cdb06fb: [ + "ABFDataCreate" + ] + }, + #30e4876a: { + #c1127ea9: + 71 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 87 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 88 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 89 + } + }, + { + #c91e0a14: <#eb29e9bb>, + #fa1a3bd3: [] + }, + { #c1127ea9: 89 }, + { #c91e0a14: <#34cf37c3> })> + ], + { #30e4876a: { #c1127ea9: 89 } }, + { + #c91e0a14: <#38332009>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 89 } }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 90, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 65 }) + }, + { + #c8ff724b: "someData", + #2cdb06fb: [ "someData" ] + }, + { #c1127ea9: 89 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 65 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 82, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 65 }) + }, + [ + <#23214b43: + ({ + #d121c0bd: 83, + #21793419: + ({ + #c68b4ed6: 23 + }, + { + #c68b4ed6: 65 + }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 84, + #21793419: + ({ + #c68b4ed6: + 51 + }, + { + #c68b4ed6: + 65 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 85, + #21793419: + ( + { + #c68b4ed6: + 51 + }, + { + #c68b4ed6: + 51 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 86, + #21793419: + ( + { + #c68b4ed6: + 51 + }, + { + #c68b4ed6: + 51 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 71 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 70, + #c8ff724b: { + #c8ff724b: + "ABFDataCreate", + #2cdb06fb: [ + "ABFDataCreate" + ] + }, + #30e4876a: { + #c1127ea9: + 71 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 87 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 88 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 89 + } + }, + { + #c91e0a14: + <#eb29e9bb>, + #fa1a3bd3: [] + }, + { #c1127ea9: 89 }, + { + #c91e0a14: + <#34cf37c3> + })> + ], + { + #30e4876a: { + #c1127ea9: 89 + } + }, + { + #c91e0a14: <#38332009>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 89 } }, + { })> + })> + ])> + ])>, + #d2e9b40c: "-[A bridge_transfer_example]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 72, + #c8ff724b: { #c8ff724b: "A", #2cdb06fb: [ "A" ] } + } + })>, + <#0f3f4d35: + ({ #d121c0bd: 91, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 21, + { })> + ], + { }, + { + #e870593a: "tests/ObjCBridgeTransferTest.m", + #e52854e9: <#3ff69d49>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 75 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 100 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 103 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 106 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 107 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 109 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 110 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 111 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 112 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 113 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 116 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 117 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 121 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 139 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 140 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 141 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 142 })>, + <#2e6cf4ea: ({ #d121c0bd: 143 })>, + <#2e6cf4ea: ({ #d121c0bd: 144 })>, + <#2e6cf4ea: ({ #d121c0bd: 145 })>, + <#22d546dd: ({ #d121c0bd: 146 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 147 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 149 }, { #c1127ea9: 75 })>, + <#22d546dd: ({ #d121c0bd: 150 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 151 }, <#2fe155d3>)>, + <#d3d219f7: ({ #d121c0bd: 152 }, { #c1127ea9: 148 })>, + <#0098a8c5: ({ #d121c0bd: 153 }, { #fcd148e8: 146 })>, + <#2e3d736c: ({ #d121c0bd: 154 }, { #c1127ea9: 153 })>, + <#0098a8c5: ({ #d121c0bd: 155 }, { #fcd148e8: 147 })>, + <#2e3d736c: ({ #d121c0bd: 156 }, { #c1127ea9: 155 })>, + <#2374f4e7: ({ #d121c0bd: 157 }, 10)>, + <#d80cb60b: ({ #d121c0bd: 158 }, 159)>, + <#d3d219f7: ({ #d121c0bd: 160 }, { #c1127ea9: 37, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 161 }, { #c1127ea9: 93, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 162 }, { #c1127ea9: 93 })>, + <#d80cb60b: ({ #d121c0bd: 163 }, 164)>, + <#da0c5ecf: + ({ #d121c0bd: 165 }, + { #cd26765d: { #c1127ea9: 163 }, #11302019: 24 }, + 1)>, + <#2374f4e7: ({ #d121c0bd: 166 }, 18)>, + <#19e1ef85: + ({ #d121c0bd: 7, #26f32be5: 154 }, + { #0b680f7d: { #c1127ea9: 154 }, #c3687459: 6 })>, + <#19e1ef85: + ({ #d121c0bd: 21, #26f32be5: 154 }, + { #0b680f7d: { #c1127ea9: 7 }, #c3687459: 91 })>, + <#19e1ef85: + ({ #d121c0bd: 9, #26f32be5: 156 }, + { #0b680f7d: { #c1127ea9: 156 }, #c3687459: 8 })>, + <#19e1ef85: + ({ #d121c0bd: 15, #26f32be5: 37 }, + { #0b680f7d: { #c1127ea9: 37 }, #c3687459: 14 })>, + <#19e1ef85: + ({ #d121c0bd: 5, #26f32be5: 152 }, + { #0b680f7d: { #c1127ea9: 152 }, #c3687459: 4 })>, + <#2e3d736c: ({ #d121c0bd: 33 }, { #c1127ea9: 157 })>, + <#2374f4e7: ({ #d121c0bd: 167 }, 34)>, + <#2374f4e7: ({ #d121c0bd: 168 }, 38)>, + <#19e1ef85: + ({ #d121c0bd: 17, #26f32be5: 53 }, + { #0b680f7d: { #c1127ea9: 53 }, #c3687459: 16 })>, + <#2374f4e7: ({ #d121c0bd: 169 }, 40)>, + <#cd01b755: + ({ #d121c0bd: 170 }, + { #cd26765d: { #c1127ea9: 154 }, #11302019: 8 })>, + <#cd01b755: + ({ #d121c0bd: 171 }, + { #cd26765d: { #c1127ea9: 7, #ea1a680e: true }, #11302019: 8 })>, + <#cd01b755: + ({ #d121c0bd: 172 }, + { #cd26765d: { #c1127ea9: 7, #ea1a680e: true }, #11302019: 8 })>, + <#d3d219f7: ({ #d121c0bd: 173 }, { #c1127ea9: 154, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 174 }, { #c1127ea9: 7, #ea1a680e: true })>, + <#2d935553: ({ #d121c0bd: 43, #26f32be5: 174 }, { #c1127ea9: 174 })>, + <#2374f4e7: ({ #d121c0bd: 175 }, 48)>, + <#d3d219f7: ({ #d121c0bd: 176 }, { #c1127ea9: 154 })>, + <#d3d219f7: ({ #d121c0bd: 51 }, { #c1127ea9: 7 })>, + <#2374f4e7: ({ #d121c0bd: 177 }, 56)>, + <#2e3d736c: ({ #d121c0bd: 64 }, { #c1127ea9: 168 })>, + <#26796f6a: + ({ #d121c0bd: 178 }, + { #f9c96be9: { #c1127ea9: 75 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 179 }, + { #f9c96be9: { #c1127ea9: 75 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 180 }, + { #f9c96be9: { #c1127ea9: 75 } }, + { #08ec7593: [ { #c1127ea9: 154 } ] })>, + <#26796f6a: + ({ #d121c0bd: 59 }, + { #f9c96be9: { #c1127ea9: 75 } }, + { #08ec7593: [ { #c1127ea9: 7 } ] })>, + <#d80cb60b: ({ #d121c0bd: 66 }, 65)>, + <#263b5f37: ({ #d121c0bd: 181, #26f32be5: 66 })>, + <#2374f4e7: ({ #d121c0bd: 182 }, 69)>, + <#19e1ef85: + ({ #d121c0bd: 68, #26f32be5: 66 }, + { #0b680f7d: { #c1127ea9: 181 }, #c3687459: 67 })>, + <#d3d219f7: ({ #d121c0bd: 183 }, { #c1127ea9: 66 })>, + <#d3d219f7: ({ #d121c0bd: 88 }, { #c1127ea9: 68 })>, + <#01fe18e9: ({ #d121c0bd: 184 }, { #f9c96be9: { #c1127ea9: 183 } })>, + <#01fe18e9: ({ #d121c0bd: 71 }, { #f9c96be9: { #c1127ea9: 88 } })>, + <#2374f4e7: ({ #d121c0bd: 185 }, 72)>, + <#2e3d736c: ({ #d121c0bd: 77 }, { #c1127ea9: 185 })>, + <#2e3d736c: ({ #d121c0bd: 89 }, { #c1127ea9: 182 })>, + <#d3d219f7: ({ #d121c0bd: 186 }, { #c1127ea9: 184 })>, + <#d3d219f7: ({ #d121c0bd: 87 }, { #c1127ea9: 71 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCTest.m.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCTest.m.exp new file mode 100644 index 000000000..04c16a8a9 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/ObjCTest.m.exp @@ -0,0 +1,9634 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 4, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "SEL", #2cdb06fb: [ "SEL" ] }, + 5, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 6, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "id", #2cdb06fb: [ "id" ] }, + 7, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 8, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "Class", #2cdb06fb: [ "Class" ] }, + 9, + { })>, + <#18d25297: + ({ + #d121c0bd: 10, + #f9005968: 1, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "Protocol", #2cdb06fb: [ "Protocol" ] }, + [], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 11, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 12, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 13, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 14, + #21793419: + ({ + #c3bbce7c: "tests/FoundationStub.h", + #c7b317f4: 8, + #c68b4ed6: 1 + }, + { #c68b4ed6: 13 }), + #d3368c8a: true + }, + { #c8ff724b: "BOOL", #2cdb06fb: [ "BOOL" ] }, + 15, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 16, + #21793419: ({ #c7b317f4: 9, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #d3368c8a: true + }, + { #c8ff724b: "NSUInteger", #2cdb06fb: [ "NSUInteger" ] }, + 17, + { })>, + <#18d25297: + ({ + #d121c0bd: 18, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 1 }, + { #c7b317f4: 27, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 19, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 20, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "alloc", #2cdb06fb: [ "alloc", "NSObject" ] }, + { + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "+[NSObject alloc]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 22, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, { #c68b4ed6: 20 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 23, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "new", #2cdb06fb: [ "new", "NSObject" ] }, + { + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "+[NSObject new]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 24, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 1 }, { #c68b4ed6: 28 }) + }, + { + #c8ff724b: "autorelease", + #2cdb06fb: [ "autorelease", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "-[NSObject autorelease]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 25, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, { #c68b4ed6: 21 }), + #1771a8d7: [ + <#d9379b99: ({ #d121c0bd: 26, #21793419: ({ }, { }) })>, + <#d394bbd3: ({ #d121c0bd: 27, #21793419: ({ }, { }) })> + ] + }, + { #c8ff724b: "init", #2cdb06fb: [ "init", "NSObject" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 21 }, + #d2e9b40c: "-[NSObject init]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 28, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, { #c68b4ed6: 15 }) + }, + { #c8ff724b: "class", #2cdb06fb: [ "class", "NSObject" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 9 }, + #d2e9b40c: "-[NSObject class]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 29, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 1 }, { #c68b4ed6: 34 }) + }, + { + #c8ff724b: "respondsToSelector:", + #2cdb06fb: [ "respondsToSelector:", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 15 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 30, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 33 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 5 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSObject respondsToSelector:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 31, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 1 }, { #c68b4ed6: 41 }) + }, + { + #c8ff724b: "conformsToProtocol:", + #2cdb06fb: [ "conformsToProtocol:", "NSObject" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 15 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 32, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 40 }) + }, + { #c8ff724b: "p", #2cdb06fb: [ "p" ] }, + { #c1127ea9: 33 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSObject conformsToProtocol:]" + })> + ], + { }, + { })>, + <#18d25297: + ({ + #d121c0bd: 34, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 29, #c68b4ed6: 1 }, + { #c7b317f4: 31, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSNumber", #2cdb06fb: [ "NSNumber" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 35, + #f9005968: 34, + #21793419: + ({ #c7b317f4: 30, #c68b4ed6: 1 }, { #c68b4ed6: 37 }) + }, + { + #c8ff724b: "numberWithInt:", + #2cdb06fb: [ "numberWithInt:", "NSNumber" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 36, + #21793419: ({ #c68b4ed6: 32 }, { #c68b4ed6: 36 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "+[NSNumber numberWithInt:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 38, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 33, #c68b4ed6: 1 }, + { #c7b317f4: 35, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSString", #2cdb06fb: [ "NSString" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 39, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 1 }, { #c68b4ed6: 21 }) + }, + { #c8ff724b: "length", #2cdb06fb: [ "length", "NSString" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 17 }, + #d2e9b40c: "-[NSString length]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 40, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 37, #c68b4ed6: 1 }, + { #c7b317f4: 42, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSDictionary", #2cdb06fb: [ "NSDictionary" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 41, + #f9005968: 40, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 1 }, + { #c7b317f4: 40, #c68b4ed6: 56 }) + }, + { + #c8ff724b: "dictionaryWithObjects:forKeys:count:", + #2cdb06fb: [ + "dictionaryWithObjects:forKeys:count:", "NSDictionary" + ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 42, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "objects", #2cdb06fb: [ "objects" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 44, + #21793419: + ({ #c7b317f4: 39, #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "keys", #2cdb06fb: [ "keys" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 1 })>, + <#fd75cc45: + ({ + #d121c0bd: 45, + #21793419: + ({ #c7b317f4: 40, #c68b4ed6: 40 }, + { #c68b4ed6: 51 }) + }, + { #c8ff724b: "count", #2cdb06fb: [ "count" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 2 })> + ], + #d2e9b40c: + "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 46, + #f9005968: 40, + #21793419: + ({ #c7b317f4: 41, #c68b4ed6: 1 }, { #c68b4ed6: 38 }) + }, + { + #c8ff724b: "objectForKeyedSubscript:", + #2cdb06fb: [ "objectForKeyedSubscript:", "NSDictionary" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 7 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 47, + #21793419: ({ #c68b4ed6: 32 }, { #c68b4ed6: 35 }) + }, + { #c8ff724b: "key", #2cdb06fb: [ "key" ] }, + { #c1127ea9: 7 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSDictionary objectForKeyedSubscript:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 48, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 44, #c68b4ed6: 1 }, + { #c7b317f4: 47, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSArray", #2cdb06fb: [ "NSArray" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 49, + #f9005968: 48, + #21793419: + ({ #c7b317f4: 45, #c68b4ed6: 1 }, { #c68b4ed6: 64 }) + }, + { + #c8ff724b: "arrayWithObjects:count:", + #2cdb06fb: [ "arrayWithObjects:count:", "NSArray" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 50, + #21793419: ({ #c68b4ed6: 35 }, { #c68b4ed6: 40 }) + }, + { #c8ff724b: "objs", #2cdb06fb: [ "objs" ] }, + { #c1127ea9: 51 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 52, + #21793419: ({ #c68b4ed6: 52 }, { #c68b4ed6: 61 }) + }, + { #c8ff724b: "cnt", #2cdb06fb: [ "cnt" ] }, + { #c1127ea9: 53 }, + { #0370b1b2: 1 })> + ], + #d2e9b40c: "+[NSArray arrayWithObjects:count:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 54, + #f9005968: 48, + #21793419: + ({ #c7b317f4: 46, #c68b4ed6: 1 }, { #c68b4ed6: 49 }) + }, + { + #c8ff724b: "objectAtIndexedSubscript:", + #2cdb06fb: [ "objectAtIndexedSubscript:", "NSArray" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 7 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 55, + #21793419: ({ #c68b4ed6: 33 }, { #c68b4ed6: 44 }) + }, + { #c8ff724b: "index", #2cdb06fb: [ "index" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[NSArray objectAtIndexedSubscript:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 56, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 49, #c68b4ed6: 1 }, + { #c7b317f4: 50, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSException", #2cdb06fb: [ "NSException" ] }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 57, + #21793419: ({ #c7b317f4: 52, #c68b4ed6: 13 }, { #c68b4ed6: 13 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #1771a8d7: [ + <#f68c4428: + ({ + #d121c0bd: 58, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + })> + ] + }, + { #c8ff724b: "NSLog", #2cdb06fb: [ "NSLog" ] }, + { #c1127ea9: 59 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 60, #21793419: ({ }, { }) }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 7 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 61, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 34 }), + #0a16e1f2: true, + #d3368c8a: true, + #1771a8d7: [ + <#f68c4428: + ({ + #d121c0bd: 62, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + })> + ] + }, + { #c8ff724b: "NSLog", #2cdb06fb: [ "NSLog" ] }, + { #c1127ea9: 59 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 63, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 28 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ] + })>, + <#e1b0618e: + ({ + #d121c0bd: 65, + #f9005968: 1, + #21793419: + ({ #c3bbce7c: "tests/ObjCTest.m", #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 12, #c68b4ed6: 2 }) + }, + { #c8ff724b: "MyProtocol", #2cdb06fb: [ "MyProtocol" ] }, + [ + <#c5b2960b: + ({ + #d121c0bd: 66, + #f9005968: 65, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, { #c68b4ed6: 38 }) + }, + { #c8ff724b: "str", #2cdb06fb: [ "str", "MyProtocol" ] }, + { + #30e4876a: { #c1127ea9: 64 }, + #3106f0d5: { + #c709e154: <#e655f08d>, + #ec05e4a8: 67, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyProtocol" ] + } + }, + #f60cd2e1: { + #c709e154: <#e655f08d>, + #ec05e4a8: 68, + #c8ff724b: { + #c8ff724b: "setStr:", + #2cdb06fb: [ "setStr:", "MyProtocol" ] + } + }, + #e42793c1: [ <#2fe629a9>, <#2c9de7d5>, <#cd718b98> ] + })>, + <#3ccd3797: + ({ + #d121c0bd: 67, + #f9005968: 65, + #21793419: ({ #c68b4ed6: 38 }, { #c68b4ed6: 38 }), + #eb8a1f5a: true + }, + { #c8ff724b: "str", #2cdb06fb: [ "str", "MyProtocol" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 64 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 66, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyProtocol" ] + } + }, + #d2e9b40c: "-[MyProtocol str]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 68, + #f9005968: 65, + #21793419: ({ #c68b4ed6: 38 }, { #c68b4ed6: 38 }), + #eb8a1f5a: true + }, + { + #c8ff724b: "setStr:", + #2cdb06fb: [ "setStr:", "MyProtocol" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 66, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyProtocol" ] + } + }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 70, + #21793419: ({ #c68b4ed6: 38 }, { #c68b4ed6: 38 }) + }, + { #c8ff724b: "str", #2cdb06fb: [ "str" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[MyProtocol setStr:]" + })> + ], + { }, + { })>, + <#e1b0618e: + ({ + #d121c0bd: 71, + #f9005968: 1, + #21793419: ({ #c7b317f4: 14, #c68b4ed6: 1 }, { #c68b4ed6: 11 }) + }, + { #c8ff724b: "SomeProtocol", #2cdb06fb: [ "SomeProtocol" ] }, + [], + { }, + { })>, + <#18d25297: + ({ + #d121c0bd: 72, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 1 }, + { #c7b317f4: 24, #c68b4ed6: 2 }) + }, + { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] }, + [ + <#c5b2960b: + ({ + #d121c0bd: 73, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 38 }) + }, + { #c8ff724b: "str", #2cdb06fb: [ "str", "MyClass" ] }, + { + #30e4876a: { #c1127ea9: 64 }, + #3106f0d5: { + #c709e154: <#e655f08d>, + #ec05e4a8: 74, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyClass" ] + } + }, + #f60cd2e1: { + #c709e154: <#e655f08d>, + #ec05e4a8: 75, + #c8ff724b: { + #c8ff724b: "setStr:", + #2cdb06fb: [ "setStr:", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 76, + #c8ff724b: { + #c8ff724b: "_str", + #2cdb06fb: [ "_str", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 64 } + }, + #e42793c1: [ <#2fe629a9>, <#2c9de7d5>, <#cd718b98> ] + })>, + <#c5b2960b: + ({ + #d121c0bd: 77, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 1 }, { #c68b4ed6: 36 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x", "MyClass" ] }, + { + #30e4876a: { #c1127ea9: 78 }, + #3106f0d5: { + #c709e154: <#e655f08d>, + #ec05e4a8: 79, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x", "MyClass" ] + } + }, + #f60cd2e1: { + #c709e154: <#e655f08d>, + #ec05e4a8: 80, + #c8ff724b: { + #c8ff724b: "setX:", + #2cdb06fb: [ "setX:", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 81, + #c8ff724b: { + #c8ff724b: "_x", + #2cdb06fb: [ "_x", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 78 } + }, + #e42793c1: [ + <#009aba4f>, <#2fe629a9>, <#cd718b98>, <#374fb956> + ] + })>, + <#c5b2960b: + ({ + #d121c0bd: 82, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, { #c68b4ed6: 34 }) + }, + { #c8ff724b: "y", #2cdb06fb: [ "y", "MyClass" ] }, + { + #30e4876a: { #c1127ea9: 37 }, + #3106f0d5: { + #c709e154: <#e655f08d>, + #ec05e4a8: 83, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ "y", "MyClass" ] + } + }, + #f60cd2e1: { + #c709e154: <#e655f08d>, + #ec05e4a8: 84, + #c8ff724b: { + #c8ff724b: "setY:", + #2cdb06fb: [ "setY:", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 85, + #c8ff724b: { + #c8ff724b: "_y", + #2cdb06fb: [ "_y", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 37 } + }, + #e42793c1: [ + <#009aba4f>, <#2fe629a9>, <#cd718b98>, <#374fb956> + ] + })>, + <#c5b2960b: + ({ + #d121c0bd: 86, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, { #c68b4ed6: 54 }) + }, + { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "MyClass" ] + }, + { + #30e4876a: { #c1127ea9: 87 }, + #3106f0d5: { + #c709e154: <#e655f08d>, + #ec05e4a8: 88, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "MyClass" ] + } + }, + #f60cd2e1: { + #c709e154: <#e655f08d>, + #ec05e4a8: 89, + #c8ff724b: { + #c8ff724b: "setDelegate:", + #2cdb06fb: [ "setDelegate:", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 90, + #c8ff724b: { + #c8ff724b: "_delegate", + #2cdb06fb: [ "_delegate", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 87 } + }, + #e42793c1: [ + <#009aba4f>, <#2fe629a9>, <#cd718b98>, <#374fb956> + ] + })>, + <#3ccd3797: + ({ + #d121c0bd: 74, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 38 }, { #c68b4ed6: 38 }), + #eb8a1f5a: true + }, + { #c8ff724b: "str", #2cdb06fb: [ "str", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 64 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 73, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyClass" ] + } + }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 91, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 93, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #f4ad3bfe: true, + #d2e9b40c: "-[MyClass str]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 75, + #f9005968: 72, + #21793419: ({ #c68b4ed6: 38 }, { #c68b4ed6: 38 }), + #eb8a1f5a: true + }, + { #c8ff724b: "setStr:", #2cdb06fb: [ "setStr:", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 73, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyClass" ] + } + }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 94, + #21793419: ({ #c68b4ed6: 38 }, { #c68b4ed6: 38 }) + }, + { #c8ff724b: "str", #2cdb06fb: [ "str" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 95, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 96, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #f4ad3bfe: true, + #d2e9b40c: "-[MyClass setStr:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 79, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 36 }, { #c68b4ed6: 36 }), + #eb8a1f5a: true + }, + { #c8ff724b: "x", #2cdb06fb: [ "x", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 78 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 77, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x", "MyClass" ] + } + }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 97, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 98, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[MyClass x]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 80, + #f9005968: 72, + #21793419: ({ #c68b4ed6: 36 }, { #c68b4ed6: 36 }), + #eb8a1f5a: true + }, + { #c8ff724b: "setX:", #2cdb06fb: [ "setX:", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 77, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x", "MyClass" ] + } + }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 99, + #21793419: ({ #c68b4ed6: 36 }, { #c68b4ed6: 36 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 78 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 100, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 101, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[MyClass setX:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 83, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 34 }, { #c68b4ed6: 34 }), + #eb8a1f5a: true + }, + { #c8ff724b: "y", #2cdb06fb: [ "y", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 37 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 82, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ "y", "MyClass" ] + } + }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 102, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 103, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[MyClass y]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 84, + #f9005968: 72, + #21793419: ({ #c68b4ed6: 34 }, { #c68b4ed6: 34 }), + #eb8a1f5a: true + }, + { #c8ff724b: "setY:", #2cdb06fb: [ "setY:", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 82, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ "y", "MyClass" ] + } + }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 104, + #21793419: ({ #c68b4ed6: 34 }, { #c68b4ed6: 34 }) + }, + { #c8ff724b: "y", #2cdb06fb: [ "y" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 105, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 106, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[MyClass setY:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 88, + #f9005968: 72, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 54 }, { #c68b4ed6: 54 }), + #eb8a1f5a: true + }, + { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "MyClass" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 87 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 86, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "MyClass" ] + } + }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 107, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 108, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[MyClass delegate]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 89, + #f9005968: 72, + #21793419: ({ #c68b4ed6: 54 }, { #c68b4ed6: 54 }), + #eb8a1f5a: true + }, + { + #c8ff724b: "setDelegate:", + #2cdb06fb: [ "setDelegate:", "MyClass" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 86, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "MyClass" ] + } + }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 109, + #21793419: ({ #c68b4ed6: 54 }, { #c68b4ed6: 54 }) + }, + { #c8ff724b: "delegate", #2cdb06fb: [ "delegate" ] }, + { #c1127ea9: 87 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 110, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 111, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[MyClass setDelegate:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + }, + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 112, + #c8ff724b: { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] } + }, + #d688371b: [ + { + #c709e154: <#cd511304>, + #ec05e4a8: 65, + #c8ff724b: { + #c8ff724b: "MyProtocol", + #2cdb06fb: [ "MyProtocol" ] + } + } + ], + #2eabd458: [ + { + #c709e154: <#fa59e7aa>, + #ec05e4a8: 113, + #c8ff724b: { + #c8ff724b: "MyCategory", + #2cdb06fb: [ "MyCategory" ] + } + }, + { + #c709e154: <#fa59e7aa>, + #ec05e4a8: 114, + #c8ff724b: { #c8ff724b: "", #2cdb06fb: [ "" ] } + } + ] + })>, + <#3a378134: + ({ + #d121c0bd: 114, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 26, #c68b4ed6: 1 }, + { #c7b317f4: 30, #c68b4ed6: 2 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 115, + #f9005968: 114, + #21793419: + ({ #c7b317f4: 28, #c68b4ed6: 1 }, { #c68b4ed6: 35 }) + }, + { #c8ff724b: "foo:", #2cdb06fb: [ "foo:", "" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 116, + #21793419: ({ #c68b4ed6: 14 }, { #c68b4ed6: 34 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 117 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[ foo:]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 72, + #c8ff724b: { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 112, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 32, #c68b4ed6: 1 }, + { #c7b317f4: 65, #c68b4ed6: 1 }) + }, + { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 118, + #f9005968: 112, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 1 }, + { #c7b317f4: 63, #c68b4ed6: 1 }) + }, + { #c8ff724b: "foo:", #2cdb06fb: [ "foo:", "MyClass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 119, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 14 }, + { #c68b4ed6: 34 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 117 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 120, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 121, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 122, + #21793419: + ({ #c68b4ed6: 36 }, + { #c7b317f4: 63, #c68b4ed6: 1 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 123, + #21793419: + ({ #c7b317f4: 36, #c68b4ed6: 3 }, + { #c68b4ed6: 33 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 124, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 125, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 59 } }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "NSLog", + #2cdb06fb: [ "NSLog" ] + }, + #30e4876a: { #c1127ea9: 59 } + } + })> + ], + { #30e4876a: { #c1127ea9: 126 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 127, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 10 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 128, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 10 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 129, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 130 + }, + #0e89e422: <#28055b85> + }, + [ "%s\n" ])> + ], + { #30e4876a: { #c1127ea9: 64 } })> + ], + { #30e4876a: { #c1127ea9: 7 } }, + { #c91e0a14: <#2b10160c>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 131, + #21793419: + ({ #c68b4ed6: 18 }, { #c68b4ed6: 32 }) + }, + [ + <#29e41e17: + ({ + #d121c0bd: 132, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 32 }) + }, + [], + { + #30e4876a: { #c1127ea9: 130 }, + #0e89e422: <#28055b85> + }, + { + #30e4876a: { #c1127ea9: 133 }, + #0056d5e8: "int **" + })> + ], + { #30e4876a: { #c1127ea9: 134 } }, + { #c91e0a14: <#0d4316b1>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 69 } })>, + <#c59ea513: + ({ + #d121c0bd: 135, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 3 }, + { #c68b4ed6: 59 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 136, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 137, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 59 } }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "NSLog", + #2cdb06fb: [ "NSLog" ] + }, + #30e4876a: { #c1127ea9: 59 } + } + })> + ], + { #30e4876a: { #c1127ea9: 126 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 138, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 10 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 139, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 10 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 140, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 130 + }, + #0e89e422: <#28055b85> + }, + [ "%d\n" ])> + ], + { #30e4876a: { #c1127ea9: 64 } })> + ], + { #30e4876a: { #c1127ea9: 7 } }, + { #c91e0a14: <#2b10160c>, #fa1a3bd3: [] })>, + <#f104c570: + ({ + #d121c0bd: 141, + #21793419: + ({ #c68b4ed6: 18 }, { #c68b4ed6: 58 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 142, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 143, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#c6dba908>, + #ec05e4a8: 120, + #c8ff724b: { + #c8ff724b: "self", + #2cdb06fb: [ "self" ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { #30e4876a: { #c1127ea9: 92 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#084d5aa0: + ({ + #d121c0bd: 144, + #21793419: + ({ #c68b4ed6: 43 }, + { #c68b4ed6: 57 }) + }, + [], + { #30e4876a: { #c1127ea9: 5 } }, + "foo:")> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #316d331f: "respondsToSelector:", + #ec05e4a8: 29 + })> + ], + { #30e4876a: { #c1127ea9: 69 } })>, + <#c59ea513: + ({ + #d121c0bd: 145, + #21793419: + ({ #c7b317f4: 40, #c68b4ed6: 3 }, + { #c68b4ed6: 73 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 146, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 147, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 59 } }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "NSLog", + #2cdb06fb: [ "NSLog" ] + }, + #30e4876a: { #c1127ea9: 59 } + } + })> + ], + { #30e4876a: { #c1127ea9: 126 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 148, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 10 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 149, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 10 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 150, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 130 + }, + #0e89e422: <#28055b85> + }, + [ "%d\n" ])> + ], + { #30e4876a: { #c1127ea9: 64 } })> + ], + { #30e4876a: { #c1127ea9: 7 } }, + { #c91e0a14: <#2b10160c>, #fa1a3bd3: [] })>, + <#f104c570: + ({ + #d121c0bd: 151, + #21793419: + ({ #c68b4ed6: 18 }, { #c68b4ed6: 72 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 152, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 153, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 20 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 154, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 20 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: 120, + #c8ff724b: { + #c8ff724b: "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 9 } }, + { + #316d331f: "class", + #ec05e4a8: 28 + })>, + <#e2680e59: + ({ + #d121c0bd: 155, + #21793419: + ({ #c68b4ed6: 51 }, + { #c68b4ed6: 71 }) + }, + [], + { #30e4876a: { #c1127ea9: 33 } }, + { + #c709e154: <#cd511304>, + #ec05e4a8: 65, + #c8ff724b: { + #c8ff724b: "MyProtocol", + #2cdb06fb: [ "MyProtocol" ] + } + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #316d331f: "conformsToProtocol:", + #ec05e4a8: 31 + })> + ], + { #30e4876a: { #c1127ea9: 69 } })>, + <#152ea3f2: + ({ + #d121c0bd: 156, + #21793419: + ({ #c7b317f4: 42, #c68b4ed6: 3 }, + { #c7b317f4: 45, #c68b4ed6: 4 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 157, + #21793419: + ({ #c7b317f4: 42, #c68b4ed6: 38 }, + { #c7b317f4: 45, #c68b4ed6: 3 }) + }, + [ + <#ea7fa902: + ({ + #d121c0bd: 158, + #21793419: + ({ + #c7b317f4: 42, + #c68b4ed6: 38 + }, + { + #c7b317f4: 45, + #c68b4ed6: 3 + }) + }, + [], + { #30e4876a: { #c1127ea9: 159 } }, + <#e9c7fc37: + ({ + #d121c0bd: 160, + #f9005968: 118, + #21793419: + ({ + #c7b317f4: 42, + #c68b4ed6: 38 + }, + { + #c7b317f4: 45, + #c68b4ed6: 3 + }) + }, + { + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 161, + #21793419: + ({ + #c7b317f4: 42, + #c68b4ed6: 40 + }, + { #c68b4ed6: 50 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { + #c8ff724b: "x", + #2cdb06fb: [ "x" ] + }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ], + #107ad516: [ + { + #e90d123c: { + #c709e154: <#c6dba908>, + #ec05e4a8: 120, + #c8ff724b: { + #c8ff724b: "self", + #2cdb06fb: [ "self" ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + } + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 162, + #21793419: + ({ #c68b4ed6: 53 }, + { + #c7b317f4: 45, + #c68b4ed6: 3 + }) + }, + [ + <#26afa8d2: + ({ + #d121c0bd: 163, + #21793419: + ({ + #c7b317f4: + 43, + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: + 164, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + < + #e9c8dd27: + ( + { + #d121c0bd: + 165, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 10 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 166, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 167, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 168, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 169 + }, + #0e89e422: + <#28055b85>, + #d61caa14: + <#f9260501> + }, + { + #c709e154: + < + #fac503de: { + #c709e154: + <#f9260501>, + #ec05e4a8: + 73, + #c8ff724b: { + #c8ff724b: + "str", + #2cdb06fb: [ + "str", + "MyClass" + ] + } + }>, + #f470120f: + true + })>, + < + #0d679c05: + ( + { + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c709e154: + <#009aba4f> + })>, + <#0d679c05: + ({ + #d121c0bd: + 166, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 167, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 168, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 172, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 173, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#f104c570: + ({ + #d121c0bd: + 174, + #21793419: + ( + { + #c68b4ed6: + 10 + }, + { + #c68b4ed6: + 10 + }) + }, + [ + < + #0d679c05: + ( + { + #d121c0bd: + 166, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 167, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 168, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + < + #0d679c05: + ( + { + #d121c0bd: + 172, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 173, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 69 + } + }, + { + #316d331f: + "setStr:", + #ec05e4a8: + 75 + })> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })>, + <#df3bdb38: + ({ + #d121c0bd: 175, + #21793419: + ({ + #c7b317f4: + 44, + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 21 + }) + }, + [ + <#f104c570: + ({ + #d121c0bd: + 176, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 21 + }) + }, + [ + < + #c3b129f9: + ( + { + #d121c0bd: + 177, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 178, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 17 + } + }, + { + #316d331f: + "length", + #ec05e4a8: + 39 + })> + ])> + ])>, + #d2e9b40c: + "__15-[MyClass foo:]_block_invoke" + })>)> + ], + { #30e4876a: { #c1127ea9: 159 } }, + { + #39445af5: [ + { + #c709e154: <#c829e52d>, + #ec05e4a8: 160 + } + ] + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 179, + #21793419: + ({ #c7b317f4: 42, #c68b4ed6: 3 }, + { #c7b317f4: 45, #c68b4ed6: 3 }) + }, + { + #c8ff724b: "block", + #2cdb06fb: [ "block" ] + }, + { #c1127ea9: 180 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 157, + #21793419: + ({ + #c7b317f4: 42, + #c68b4ed6: 38 + }, + { + #c7b317f4: 45, + #c68b4ed6: 3 + }) + }, + [ + <#ea7fa902: + ({ + #d121c0bd: 158, + #21793419: + ({ + #c7b317f4: 42, + #c68b4ed6: 38 + }, + { + #c7b317f4: 45, + #c68b4ed6: 3 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 159 + } + }, + <#e9c7fc37: + ({ + #d121c0bd: 160, + #f9005968: 118, + #21793419: + ({ + #c7b317f4: 42, + #c68b4ed6: 38 + }, + { + #c7b317f4: 45, + #c68b4ed6: 3 + }) + }, + { + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 161, + #21793419: + ({ + #c7b317f4: + 42, + #c68b4ed6: + 40 + }, + { + #c68b4ed6: + 50 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + { + #c1127ea9: 64 + }, + { + #0370b1b2: 0 + })> + ], + #107ad516: [ + { + #e90d123c: { + #c709e154: + <#c6dba908>, + #ec05e4a8: 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: + true + } + } + } + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: + 162, + #21793419: + ({ + #c68b4ed6: + 53 + }, + { + #c7b317f4: + 45, + #c68b4ed6: + 3 + }) + }, + [ + <#26afa8d2: + ({ + #d121c0bd: + 163, + #21793419: + ( + { + #c7b317f4: + 43, + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: + 164, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#e9c8dd27: + ({ + #d121c0bd: + 165, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 10 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 166, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 167, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 168, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 169 + }, + #0e89e422: + <#28055b85>, + #d61caa14: + <#f9260501> + }, + { + #c709e154: + < + #fac503de: { + #c709e154: + <#f9260501>, + #ec05e4a8: + 73, + #c8ff724b: { + #c8ff724b: + "str", + #2cdb06fb: [ + "str", + "MyClass" + ] + } + }>, + #f470120f: + true + })>, + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c709e154: + <#009aba4f> + })>, + <#0d679c05: + ({ + #d121c0bd: + 166, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 167, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 168, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 172, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 173, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#f104c570: + ({ + #d121c0bd: + 174, + #21793419: + ( + { + #c68b4ed6: + 10 + }, + { + #c68b4ed6: + 10 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 166, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 167, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 168, + #21793419: + ( + { + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 120, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 172, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 173, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 170, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #12076e59: + < + #e9db58be: + ( + { + #d121c0bd: + 171, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 69 + } + }, + { + #316d331f: + "setStr:", + #ec05e4a8: + 75 + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + })>, + <#df3bdb38: + ({ + #d121c0bd: + 175, + #21793419: + ( + { + #c7b317f4: + 44, + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 21 + }) + }, + [ + <#f104c570: + ({ + #d121c0bd: + 176, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 21 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 177, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 178, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 161, + #c8ff724b: { + #c8ff724b: + "x", + #2cdb06fb: [ + "x" + ] + }, + #30e4876a: { + #c1127ea9: + 64 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 17 + } + }, + { + #316d331f: + "length", + #ec05e4a8: + 39 + })> + ])> + ])>, + #d2e9b40c: + "__15-[MyClass foo:]_block_invoke" + })>)> + ], + { #30e4876a: { #c1127ea9: 159 } }, + { + #39445af5: [ + { + #c709e154: <#c829e52d>, + #ec05e4a8: 160 + } + ] + })> + })> + ])>, + <#f7d73e44: + ({ + #d121c0bd: 181, + #21793419: + ({ #c7b317f4: 47, #c68b4ed6: 3 }, + { #c7b317f4: 57, #c68b4ed6: 3 }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 182, + #21793419: + ({ #c7b317f4: 47, #c68b4ed6: 8 }, + { #c7b317f4: 53, #c68b4ed6: 3 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 183, + #21793419: + ({ + #c7b317f4: 48, + #c68b4ed6: 5 + }, + { #c68b4ed6: 27 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 184, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 26 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 185, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 26 }) + }, + [ + <#eae2bb82: + ({ + #d121c0bd: 186, + #21793419: + ({ + #c68b4ed6: + 18 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 187, + #21793419: + ( + { + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + < + #c3b129f9: + ( + { + #d121c0bd: + 188, + #21793419: + ( + { + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + <#32854f53: + ({ + #d121c0bd: + 189, + #21793419: + ( + { + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 190, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #1b5715a9: + "numberWithInt:" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { #dbe07007: 49 })> + ], + { + #30e4876a: { + #c1127ea9: 192 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 192 + } + }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 193, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 26 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { + #c8ff724b: "a", + #2cdb06fb: [ "a" ] + }, + { #c1127ea9: 192 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 184, + #21793419: + ({ + #c68b4ed6: 18 + }, + { + #c68b4ed6: 26 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 185, + #21793419: + ({ + #c68b4ed6: + 18 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#eae2bb82: + ({ + #d121c0bd: + 186, + #21793419: + ( + { + #c68b4ed6: + 18 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 187, + #21793419: + ( + { + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 188, + #21793419: + ( + { + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + <#32854f53: + ({ + #d121c0bd: + 189, + #21793419: + ( + { + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 190, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #1b5715a9: + "numberWithInt:" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #dbe07007: + 49 + })> + ], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 192 + } + }, + { })> + })> + ])>, + <#d0cddcea: + ({ + #d121c0bd: 194, + #21793419: + ({ + #c7b317f4: 49, + #c68b4ed6: 5 + }, + { #c68b4ed6: 24 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 195, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 24 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 196, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 197, + #21793419: + ({ + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 59 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: + "NSLog", + #2cdb06fb: [ + "NSLog" + ] + }, + #30e4876a: { + #c1127ea9: + 59 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 126 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 198, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 199, + #21793419: + ({ + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 12 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 200, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 130 + }, + #0e89e422: + <#28055b85> + }, + [ "%@\n" ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: [] + })>, + <#26afa8d2: + ({ + #d121c0bd: 201, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 23 }) + }, + [ + <#f28ad889: + ({ + #d121c0bd: 202, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 203, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 204, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 205, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 192 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 193, + #c8ff724b: { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + #30e4876a: { + #c1127ea9: + 192 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 206, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #12076e59: + < + #0fb8fb71: + ( + { + #d121c0bd: + 207, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 169 + }, + #0e89e422: + <#28055b85>, + #d61caa14: + <#1c2f715f> + }, + { + #c709e154: + <#375d22d2> + })>, + <#0d679c05: + ({ + #d121c0bd: 203, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: + 204, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 205, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 192 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 193, + #c8ff724b: { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + #30e4876a: { + #c1127ea9: + 192 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 206, + #21793419: + ({ + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #12076e59: + <#0fb8fb71: + ({ + #d121c0bd: + 207, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + })>, + <#c3b129f9: + ({ + #d121c0bd: 208, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#f104c570: + ({ + #d121c0bd: + 209, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + < + #0d679c05: + ( + { + #d121c0bd: + 203, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 204, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 205, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 192 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 193, + #c8ff724b: { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + #30e4876a: { + #c1127ea9: + 192 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 192 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + < + #c3b129f9: + ( + { + #d121c0bd: + 210, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 206, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #12076e59: + < + #0fb8fb71: + ( + { + #d121c0bd: + 207, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 17 + } + }, + { + #c91e0a14: + <#2677d46b>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #316d331f: + "objectAtIndexedSubscript:", + #ec05e4a8: + 54 + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 69 + } + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { })>, + <#152ea3f2: + ({ + #d121c0bd: 211, + #21793419: + ({ + #c7b317f4: 51, + #c68b4ed6: 5 + }, + { #c68b4ed6: 37 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 212, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 36 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 213, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 36 }) + }, + [ + <#f0ddca4d: + ({ + #d121c0bd: 214, + #21793419: + ({ + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 36 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 215, + #21793419: + ( + { + #c68b4ed6: + 25 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + < + #ff6ba872: + ( + { + #d121c0bd: + 216, + #21793419: + ( + { + #c68b4ed6: + 25 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 217, + #21793419: + ( + { + #c68b4ed6: + 26 + }, + { + #c68b4ed6: + 26 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 130 + }, + #0e89e422: + <#28055b85> + }, + [ "key" ])> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })>, + <#c3b129f9: + ({ + #d121c0bd: + 218, + #21793419: + ( + { + #c68b4ed6: + 34 + }, + { + #c68b4ed6: + 35 + }) + }, + [ + < + #c3b129f9: + ( + { + #d121c0bd: + 219, + #21793419: + ( + { + #c68b4ed6: + 34 + }, + { + #c68b4ed6: + 35 + }) + }, + [ + <#32854f53: + ({ + #d121c0bd: + 220, + #21793419: + ( + { + #c68b4ed6: + 34 + }, + { + #c68b4ed6: + 35 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 221, + #21793419: + ( + { + #c68b4ed6: + 35 + }, + { + #c68b4ed6: + 35 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #1b5715a9: + "numberWithInt:" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { #2b7669ca: 41 })> + ], + { + #30e4876a: { + #c1127ea9: 222 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 222 + } + }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 223, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 36 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { + #c8ff724b: "d", + #2cdb06fb: [ "d" ] + }, + { #c1127ea9: 222 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 212, + #21793419: + ({ + #c68b4ed6: 23 + }, + { + #c68b4ed6: 36 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 213, + #21793419: + ({ + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 36 + }) + }, + [ + <#f0ddca4d: + ({ + #d121c0bd: + 214, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 36 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 215, + #21793419: + ( + { + #c68b4ed6: + 25 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: + 216, + #21793419: + ( + { + #c68b4ed6: + 25 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 217, + #21793419: + ( + { + #c68b4ed6: + 26 + }, + { + #c68b4ed6: + 26 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 130 + }, + #0e89e422: + <#28055b85> + }, + [ "key" ])> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })>, + <#c3b129f9: + ({ + #d121c0bd: + 218, + #21793419: + ( + { + #c68b4ed6: + 34 + }, + { + #c68b4ed6: + 35 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 219, + #21793419: + ( + { + #c68b4ed6: + 34 + }, + { + #c68b4ed6: + 35 + }) + }, + [ + <#32854f53: + ({ + #d121c0bd: + 220, + #21793419: + ( + { + #c68b4ed6: + 34 + }, + { + #c68b4ed6: + 35 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 221, + #21793419: + ( + { + #c68b4ed6: + 35 + }, + { + #c68b4ed6: + 35 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #1b5715a9: + "numberWithInt:" + })> + ], + { + #30e4876a: { + #c1127ea9: + 191 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #2b7669ca: + 41 + })> + ], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 222 + } + }, + { })> + })> + ])>, + <#d0cddcea: + ({ + #d121c0bd: 224, + #21793419: + ({ + #c7b317f4: 52, + #c68b4ed6: 5 + }, + { #c68b4ed6: 35 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 225, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 35 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 226, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 227, + #21793419: + ({ + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 59 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: + "NSLog", + #2cdb06fb: [ + "NSLog" + ] + }, + #30e4876a: { + #c1127ea9: + 59 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 126 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 228, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 229, + #21793419: + ({ + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 12 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 230, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 130 + }, + #0e89e422: + <#28055b85> + }, + [ "%@\n" ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: [] + })>, + <#26afa8d2: + ({ + #d121c0bd: 231, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 34 }) + }, + [ + <#f28ad889: + ({ + #d121c0bd: 232, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 34 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 233, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 234, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 235, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 222 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 223, + #c8ff724b: { + #c8ff724b: + "d", + #2cdb06fb: [ + "d" + ] + }, + #30e4876a: { + #c1127ea9: + 222 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: + 236, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #12076e59: + < + #ff6ba872: + ( + { + #d121c0bd: + 237, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 238, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 239 + }, + #0e89e422: + <#28055b85> + }, + [ + "wrong key" + ])> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 169 + }, + #0e89e422: + <#28055b85>, + #d61caa14: + <#1c2f715f> + }, + { + #c709e154: + <#3056b8f5> + })>, + <#0d679c05: + ({ + #d121c0bd: 233, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: + 234, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 235, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 222 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 223, + #c8ff724b: { + #c8ff724b: + "d", + #2cdb06fb: [ + "d" + ] + }, + #30e4876a: { + #c1127ea9: + 222 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 236, + #21793419: + ({ + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 64 + } + }, + { + #12076e59: + <#ff6ba872: + ({ + #d121c0bd: + 237, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 238, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 239 + }, + #0e89e422: + <#28055b85> + }, + [ + "wrong key" + ])> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + })> + })>, + <#c3b129f9: + ({ + #d121c0bd: 240, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#f104c570: + ({ + #d121c0bd: + 241, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + < + #0d679c05: + ( + { + #d121c0bd: + 233, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #12076e59: + < + #c3b129f9: + ( + { + #d121c0bd: + 234, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 235, + #21793419: + ( + { + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 20 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 222 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 223, + #c8ff724b: { + #c8ff724b: + "d", + #2cdb06fb: [ + "d" + ] + }, + #30e4876a: { + #c1127ea9: + 222 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 222 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })>, + < + #c3b129f9: + ( + { + #d121c0bd: + 242, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: + 236, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 64 + } + }, + { + #12076e59: + < + #ff6ba872: + ( + { + #d121c0bd: + 237, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 238, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 239 + }, + #0e89e422: + <#28055b85> + }, + [ + "wrong key" + ])> + ], + { + #30e4876a: { + #c1127ea9: + 64 + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #316d331f: + "objectForKeyedSubscript:", + #ec05e4a8: + 46 + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 69 + } + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { })> + ])>, + <#d8411b84: + ({ + #d121c0bd: 243, + #21793419: + ({ #c7b317f4: 53, #c68b4ed6: 5 }, + { #c7b317f4: 55, #c68b4ed6: 3 }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 244, + #21793419: + ({ + #c7b317f4: 53, + #c68b4ed6: 29 + }, + { + #c7b317f4: 55, + #c68b4ed6: 3 + }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 245, + #21793419: + ({ + #c7b317f4: 54, + #c68b4ed6: 5 + }, + { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 246, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 247, + #21793419: + ({ + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 59 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: + "NSLog", + #2cdb06fb: [ + "NSLog" + ] + }, + #30e4876a: { + #c1127ea9: + 59 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 126 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 248, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 249, + #21793419: + ({ + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 12 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 250, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 251 + }, + #0e89e422: + <#28055b85> + }, + [ + "Exception: %@" + ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 252, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 29 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 253, + #21793419: + ({ + #c68b4ed6: + 29 + }, + { + #c68b4ed6: + 29 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 254 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 255, + #c8ff724b: { + #c8ff724b: + "e", + #2cdb06fb: [ + "e" + ] + }, + #30e4876a: { + #c1127ea9: + 254 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 254 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 69 + } + })> + ])> + ], + <#263f4272: + <#11c182d1: + ({ + #d121c0bd: 255, + #21793419: + ({ + #c7b317f4: 53, + #c68b4ed6: 13 + }, + { #c68b4ed6: 26 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { + #c8ff724b: "e", + #2cdb06fb: [ "e" ] + }, + { #c1127ea9: 254 }, + { })>>)>, + <#d557450c: + ({ + #d121c0bd: 256, + #21793419: + ({ #c7b317f4: 55, #c68b4ed6: 5 }, + { #c7b317f4: 57, #c68b4ed6: 3 }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 257, + #21793419: + ({ + #c7b317f4: 55, + #c68b4ed6: 14 + }, + { + #c7b317f4: 57, + #c68b4ed6: 3 + }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 258, + #21793419: + ({ + #c7b317f4: 56, + #c68b4ed6: 5 + }, + { #c68b4ed6: 21 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 259, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 260, + #21793419: + ({ + #c68b4ed6: + 5 + }, + { + #c68b4ed6: + 5 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 59 + } + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: + "NSLog", + #2cdb06fb: [ + "NSLog" + ] + }, + #30e4876a: { + #c1127ea9: + 59 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 126 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 261, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 262, + #21793419: + ({ + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 12 + }) + }, + [ + <#3231247e: + ({ + #d121c0bd: + 263, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 264 + }, + #0e89e422: + <#28055b85> + }, + [ + "finally" + ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#2b10160c>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 69 + } + })> + ])> + ])> + ])>, + <#e6e17dab: + ({ + #d121c0bd: 265, + #21793419: + ({ #c7b317f4: 59, #c68b4ed6: 3 }, + { #c68b4ed6: 8 }) + }, + [], + { #efaf0df4: "theend", #d121c0bd: 266 })>, + <#df3bdb38: + ({ + #d121c0bd: 267, + #21793419: + ({ #c7b317f4: 60, #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [])>, + <#ff87123c: + ({ + #d121c0bd: 268, + #21793419: + ({ #c7b317f4: 61, #c68b4ed6: 1 }, + { #c7b317f4: 62, #c68b4ed6: 18 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 269, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 18 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 270, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 271, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 59 + } + }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "NSLog", + #2cdb06fb: [ "NSLog" ] + }, + #30e4876a: { + #c1127ea9: 59 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 126 } }, + { + #c91e0a14: <#210490b0>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 272, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 10 }) + }, + [ + <#ff6ba872: + ({ + #d121c0bd: 273, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 10 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 274, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 275 + }, + #0e89e422: + <#28055b85> + }, + [ "jumped" ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { #30e4876a: { #c1127ea9: 7 } }, + { + #c91e0a14: <#2b10160c>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 69 } })> + ], + "theend")> + ])>, + #d2e9b40c: "-[MyClass foo:]" + })>, + <#070ee654: + ({ + #d121c0bd: 76, + #f9005968: 112, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 38 }, { #c68b4ed6: 38 }) + }, + { #c8ff724b: "_str", #2cdb06fb: [ "_str", "MyClass" ] }, + { #c1127ea9: 64 }, + { }, + { #015a971f: true, #f9049e82: <#d6c054e3> })>, + <#c1a9158b: + ({ #d121c0bd: 276, #21793419: ({ }, { #c68b4ed6: 38 }) }, + { + #d32dd232: <#009015ca>, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 73, + #c8ff724b: { + #c8ff724b: "str", + #2cdb06fb: [ "str", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 76, + #c8ff724b: { + #c8ff724b: "_str", + #2cdb06fb: [ "_str", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 64 } + } + })>, + <#070ee654: + ({ + #d121c0bd: 81, + #f9005968: 112, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 36 }, { #c68b4ed6: 36 }) + }, + { #c8ff724b: "_x", #2cdb06fb: [ "_x", "MyClass" ] }, + { #c1127ea9: 78 }, + { }, + { #015a971f: true, #f9049e82: <#d6c054e3> })>, + <#c1a9158b: + ({ #d121c0bd: 277, #21793419: ({ }, { #c68b4ed6: 36 }) }, + { + #d32dd232: <#009015ca>, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 77, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 81, + #c8ff724b: { + #c8ff724b: "_x", + #2cdb06fb: [ "_x", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 78 } + } + })>, + <#070ee654: + ({ + #d121c0bd: 85, + #f9005968: 112, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 34 }, { #c68b4ed6: 34 }) + }, + { #c8ff724b: "_y", #2cdb06fb: [ "_y", "MyClass" ] }, + { #c1127ea9: 37 }, + { }, + { #015a971f: true, #f9049e82: <#d6c054e3> })>, + <#c1a9158b: + ({ #d121c0bd: 278, #21793419: ({ }, { #c68b4ed6: 34 }) }, + { + #d32dd232: <#009015ca>, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 82, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ "y", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 85, + #c8ff724b: { + #c8ff724b: "_y", + #2cdb06fb: [ "_y", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })>, + <#070ee654: + ({ + #d121c0bd: 90, + #f9005968: 112, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 54 }, { #c68b4ed6: 54 }) + }, + { + #c8ff724b: "_delegate", + #2cdb06fb: [ "_delegate", "MyClass" ] + }, + { #c1127ea9: 87 }, + { }, + { #015a971f: true, #f9049e82: <#d6c054e3> })>, + <#c1a9158b: + ({ #d121c0bd: 279, #21793419: ({ }, { #c68b4ed6: 54 }) }, + { + #d32dd232: <#009015ca>, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 86, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "MyClass" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 90, + #c8ff724b: { + #c8ff724b: "_delegate", + #2cdb06fb: [ "_delegate", "MyClass" ] + }, + #30e4876a: { #c1127ea9: 87 } + } + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 72, + #c8ff724b: { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] } + } + })>, + <#3a378134: + ({ + #d121c0bd: 113, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 67, #c68b4ed6: 1 }, + { #c7b317f4: 71, #c68b4ed6: 2 }) + }, + { #c8ff724b: "MyCategory", #2cdb06fb: [ "MyCategory" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 280, + #f9005968: 113, + #21793419: + ({ #c7b317f4: 69, #c68b4ed6: 1 }, { #c68b4ed6: 26 }) + }, + { #c8ff724b: "bar:", #2cdb06fb: [ "bar:", "MyCategory" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 281, + #21793419: ({ #c68b4ed6: 14 }, { #c68b4ed6: 25 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "-[MyCategory bar:]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 72, + #c8ff724b: { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] } + }, + #d32dd232: { + #c709e154: <#3d8bafaa>, + #ec05e4a8: 282, + #c8ff724b: { + #c8ff724b: "MyCategory", + #2cdb06fb: [ "MyCategory" ] + } + } + })>, + <#0ded4934: + ({ + #d121c0bd: 282, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 73, #c68b4ed6: 1 }, + { #c7b317f4: 81, #c68b4ed6: 1 }) + }, + { #c8ff724b: "MyCategory", #2cdb06fb: [ "MyCategory" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 283, + #f9005968: 282, + #21793419: + ({ #c7b317f4: 75, #c68b4ed6: 1 }, + { #c7b317f4: 79, #c68b4ed6: 1 }) + }, + { #c8ff724b: "bar:", #2cdb06fb: [ "bar:", "MyCategory" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 284, + #21793419: + ({ #c7b317f4: 75, #c68b4ed6: 14 }, + { #c68b4ed6: 25 }) + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 285, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 92, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 286, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 287, + #21793419: + ({ #c68b4ed6: 27 }, + { #c7b317f4: 79, #c68b4ed6: 1 }) + }, + [ + <#26afa8d2: + ({ + #d121c0bd: 288, + #21793419: + ({ #c7b317f4: 76, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 289, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 12 }) + }, + [ + <#e9c8dd27: + ({ + #d121c0bd: 290, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 8 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 291, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 292, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 293, + #21793419: + ({ + #c68b4ed6: + 3 + }, + { + #c68b4ed6: + 3 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 285, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + })> + ], + { + #30e4876a: { #c1127ea9: 169 }, + #0e89e422: <#28055b85>, + #d61caa14: <#f9260501> + }, + { + #c709e154: + <#fac503de: { + #c709e154: <#f9260501>, + #ec05e4a8: 77, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ + "x", "MyClass" + ] + } + }>, + #f470120f: true + })>, + <#0d679c05: + ({ + #d121c0bd: 294, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 78 } }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: 295, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [ + <#ca9fafa2: + ({ + #d121c0bd: 296, + #21793419: + ({ + #c68b4ed6: 12 + }, + { + #c68b4ed6: 12 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 297, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: 32, + #31b87f71: + "0" + })> + ], + { + #30e4876a: { + #c1127ea9: 78 + } + }, + { + #c91e0a14: + <#ecec00db>, + #fa1a3bd3: [] + }, + { #c1127ea9: 78 })> + ], + { + #30e4876a: { + #c1127ea9: 78 + } + })> + })> + ], + { #30e4876a: { #c1127ea9: 78 } }, + { #c709e154: <#009aba4f> })>, + <#0d679c05: + ({ + #d121c0bd: 291, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 92 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 292, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 293, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#c6dba908>, + #ec05e4a8: 285, + #c8ff724b: { + #c8ff724b: "self", + #2cdb06fb: [ "self" ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { #30e4876a: { #c1127ea9: 92 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 294, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 78 } }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: 295, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [ + <#ca9fafa2: + ({ + #d121c0bd: 296, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 297, + #21793419: + ({ + #c68b4ed6: 12 + }, + { + #c68b4ed6: 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ], + { + #30e4876a: { + #c1127ea9: 78 + } + }, + { + #c91e0a14: <#ecec00db>, + #fa1a3bd3: [] + }, + { #c1127ea9: 78 })> + ], + { #30e4876a: { #c1127ea9: 78 } })> + })>, + <#f104c570: + ({ + #d121c0bd: 298, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 291, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 92 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 292, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 293, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: 285, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 294, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 78 } }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: 295, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [ + <#ca9fafa2: + ({ + #d121c0bd: 296, + #21793419: + ({ + #c68b4ed6: 12 + }, + { + #c68b4ed6: 12 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 297, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: 32, + #31b87f71: + "0" + })> + ], + { + #30e4876a: { + #c1127ea9: 78 + } + }, + { + #c91e0a14: + <#ecec00db>, + #fa1a3bd3: [] + }, + { #c1127ea9: 78 })> + ], + { + #30e4876a: { + #c1127ea9: 78 + } + })> + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { #316d331f: "setX:", #ec05e4a8: 80 })> + ], + { #30e4876a: { #c1127ea9: 78 } })>, + <#26afa8d2: + ({ + #d121c0bd: 299, + #21793419: + ({ #c7b317f4: 77, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 300, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 12 }) + }, + [ + <#e9c8dd27: + ({ + #d121c0bd: 301, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 8 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 302, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 303, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 304, + #21793419: + ({ + #c68b4ed6: + 3 + }, + { + #c68b4ed6: + 3 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 285, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + })> + ], + { + #30e4876a: { #c1127ea9: 169 }, + #0e89e422: <#28055b85>, + #d61caa14: <#f9260501> + }, + { + #c709e154: + <#fac503de: { + #c709e154: <#f9260501>, + #ec05e4a8: 82, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ + "y", "MyClass" + ] + } + }>, + #f470120f: true + })>, + <#0d679c05: + ({ + #d121c0bd: 305, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #12076e59: + <#0fb8fb71: + ({ + #d121c0bd: 306, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + })> + ], + { #30e4876a: { #c1127ea9: 37 } }, + { #c709e154: <#009aba4f> })>, + <#0d679c05: + ({ + #d121c0bd: 302, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 92 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 303, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 304, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#c6dba908>, + #ec05e4a8: 285, + #c8ff724b: { + #c8ff724b: "self", + #2cdb06fb: [ "self" ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { #30e4876a: { #c1127ea9: 92 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 305, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #12076e59: + <#0fb8fb71: + ({ + #d121c0bd: 306, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + })>, + <#f104c570: + ({ + #d121c0bd: 307, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 302, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 92 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 303, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 304, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: 285, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 305, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #12076e59: + <#0fb8fb71: + ({ + #d121c0bd: 306, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { #316d331f: "setY:", #ec05e4a8: 84 })> + ], + { #30e4876a: { #c1127ea9: 37 } })>, + <#26afa8d2: + ({ + #d121c0bd: 308, + #21793419: + ({ #c7b317f4: 78, #c68b4ed6: 3 }, + { #c68b4ed6: 19 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 309, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 19 }) + }, + [ + <#e9c8dd27: + ({ + #d121c0bd: 310, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 8 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 311, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 312, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 313, + #21793419: + ({ + #c68b4ed6: + 3 + }, + { + #c68b4ed6: + 3 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 285, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + })> + ], + { + #30e4876a: { #c1127ea9: 169 }, + #0e89e422: <#28055b85>, + #d61caa14: <#f9260501> + }, + { + #c709e154: + <#fac503de: { + #c709e154: <#f9260501>, + #ec05e4a8: 86, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ + "delegate", "MyClass" + ] + } + }>, + #f470120f: true + })>, + <#0d679c05: + ({ + #d121c0bd: 314, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 7 } }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: 315, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#ca9fafa2: + ({ + #d121c0bd: 316, + #21793419: + ({ + #c68b4ed6: 19 + }, + { + #c68b4ed6: 19 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 317, + #21793419: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: 32, + #31b87f71: + "0" + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: + <#ecec00db>, + #fa1a3bd3: [] + }, + { #c1127ea9: 7 })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + })> + })> + ], + { #30e4876a: { #c1127ea9: 7 } }, + { #c709e154: <#009aba4f> })>, + <#0d679c05: + ({ + #d121c0bd: 311, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 92 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 312, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 313, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#c6dba908>, + #ec05e4a8: 285, + #c8ff724b: { + #c8ff724b: "self", + #2cdb06fb: [ "self" ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { #30e4876a: { #c1127ea9: 92 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 314, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 7 } }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: 315, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#ca9fafa2: + ({ + #d121c0bd: 316, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 317, + #21793419: + ({ + #c68b4ed6: 19 + }, + { + #c68b4ed6: 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 37 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #c91e0a14: <#ecec00db>, + #fa1a3bd3: [] + }, + { #c1127ea9: 7 })> + ], + { #30e4876a: { #c1127ea9: 7 } })> + })>, + <#0d679c05: + ({ + #d121c0bd: 318, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 87 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 319, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 314, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: 315, + #21793419: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [ + <#ca9fafa2: + ({ + #d121c0bd: + 316, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [ + <#0fb8fb71: + ( + { + #d121c0bd: + 317, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#ecec00db>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 7 + })> + ], + { + #30e4876a: { + #c1127ea9: 7 + } + })> + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { + #c91e0a14: <#2b10160c>, + #fa1a3bd3: [] + })> + })>, + <#f104c570: + ({ + #d121c0bd: 320, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 311, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 92 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 312, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 313, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: 285, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: 92, + #ea1a680e: true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#0d679c05: + ({ + #d121c0bd: 318, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 87 } }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 319, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 314, + #21793419: + ({ + #c68b4ed6: 19 + }, + { + #c68b4ed6: 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 7 + } + }, + { + #12076e59: + <#02335a3f: + ({ + #d121c0bd: + 315, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [ + <#ca9fafa2: + ( + { + #d121c0bd: + 316, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 317, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + }, + { + #c91e0a14: + <#ecec00db>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 7 + })> + ], + { + #30e4876a: { + #c1127ea9: + 7 + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: 87 + } + }, + { + #c91e0a14: <#2b10160c>, + #fa1a3bd3: [] + })> + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #316d331f: "setDelegate:", + #ec05e4a8: 89 + })> + ], + { #30e4876a: { #c1127ea9: 87 } })> + ])>, + #d2e9b40c: "-[MyClass(MyCategory) bar:]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 72, + #c8ff724b: { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] } + }, + #2c58a88b: { + #c709e154: <#fa59e7aa>, + #ec05e4a8: 113, + #c8ff724b: { + #c8ff724b: "MyCategory", + #2cdb06fb: [ "MyCategory" ] + } + } + })>, + <#18d25297: + ({ + #d121c0bd: 321, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 83, #c68b4ed6: 1 }, + { #c7b317f4: 85, #c68b4ed6: 2 }) + }, + { #c8ff724b: "MyClassGenerics", #2cdb06fb: [ "MyClassGenerics" ] }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 322, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 87, #c68b4ed6: 1 }, + { #c7b317f4: 89, #c68b4ed6: 2 }) + }, + { #c8ff724b: "BarGenerics", #2cdb06fb: [ "BarGenerics" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 323, + #f9005968: 322, + #21793419: + ({ #c7b317f4: 88, #c68b4ed6: 1 }, { #c68b4ed6: 60 }), + #1771a8d7: [ + <#d394bbd3: ({ #d121c0bd: 324, #21793419: ({ }, { }) })> + ] + }, + { + #c8ff724b: "newWithCs:", + #2cdb06fb: [ "newWithCs:", "BarGenerics" ] + }, + { + #137b649c: { #c1127ea9: 21 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 325, + #21793419: ({ #c68b4ed6: 28 }, { #c68b4ed6: 58 }) + }, + { #c8ff724b: "Cs", #2cdb06fb: [ "Cs" ] }, + { #c1127ea9: 326 }, + { #0370b1b2: 0 })> + ], + #d2e9b40c: "+[BarGenerics newWithCs:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 327, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 91, #c68b4ed6: 1 }, + { #c7b317f4: 92, #c68b4ed6: 2 }) + }, + { #c8ff724b: "MySubclass", #2cdb06fb: [ "MySubclass" ] }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 72, + #c8ff724b: { #c8ff724b: "MyClass", #2cdb06fb: [ "MyClass" ] } + }, + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 328, + #c8ff724b: { + #c8ff724b: "MySubclass", + #2cdb06fb: [ "MySubclass" ] + } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 328, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 94, #c68b4ed6: 1 }, + { #c7b317f4: 104, #c68b4ed6: 1 }) + }, + { #c8ff724b: "MySubclass", #2cdb06fb: [ "MySubclass" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 329, + #f9005968: 328, + #21793419: + ({ #c7b317f4: 96, #c68b4ed6: 1 }, + { #c7b317f4: 98, #c68b4ed6: 1 }) + }, + { #c8ff724b: "bar:", #2cdb06fb: [ "bar:", "MySubclass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 330, + #21793419: + ({ #c7b317f4: 96, #c68b4ed6: 14 }, + { #c68b4ed6: 25 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 64 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 331, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 332, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 333, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #f4ad3bfe: true, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 334, + #21793419: + ({ #c68b4ed6: 27 }, + { #c7b317f4: 98, #c68b4ed6: 1 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 335, + #21793419: + ({ #c7b317f4: 97, #c68b4ed6: 3 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 336, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 14 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 337, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 14 }) + }, + [], + { + #30e4876a: { #c1127ea9: 64 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 330, + #c8ff724b: { + #c8ff724b: "s", + #2cdb06fb: [ "s" ] + }, + #30e4876a: { #c1127ea9: 64 } + } + })> + ], + { #30e4876a: { #c1127ea9: 64 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #316d331f: "bar:", + #1ea99a8b: true, + #ec05e4a8: 283, + #0ca98da4: <#0ba9a010> + })> + ])>, + #d2e9b40c: "-[MySubclass bar:]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 338, + #f9005968: 328, + #21793419: + ({ #c7b317f4: 100, #c68b4ed6: 1 }, + { #c7b317f4: 102, #c68b4ed6: 1 }) + }, + { #c8ff724b: "foo:", #2cdb06fb: [ "foo:", "MySubclass" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 69 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 339, + #21793419: + ({ #c7b317f4: 100, #c68b4ed6: 14 }, + { #c68b4ed6: 34 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 117 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 340, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 332, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 341, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #f4ad3bfe: true, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 342, + #21793419: + ({ #c68b4ed6: 36 }, + { #c7b317f4: 102, #c68b4ed6: 1 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 343, + #21793419: + ({ #c7b317f4: 101, #c68b4ed6: 3 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 344, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 14 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 345, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 14 }) + }, + [], + { + #30e4876a: { #c1127ea9: 117 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 339, + #c8ff724b: { + #c8ff724b: "s", + #2cdb06fb: [ "s" ] + }, + #30e4876a: { #c1127ea9: 117 } + } + })> + ], + { #30e4876a: { #c1127ea9: 117 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #316d331f: "foo:", + #1ea99a8b: true, + #ec05e4a8: 118, + #0ca98da4: <#0ba9a010> + })> + ])>, + #d2e9b40c: "-[MySubclass foo:]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 327, + #c8ff724b: { + #c8ff724b: "MySubclass", + #2cdb06fb: [ "MySubclass" ] + } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 346, + #21793419: + ({ #c7b317f4: 106, #c68b4ed6: 1 }, + { #c7b317f4: 112, #c68b4ed6: 1 }) + }, + { #c8ff724b: "main", #2cdb06fb: [ "main" ] }, + { #c1127ea9: 347 }, + { + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 348, + #21793419: + ({ #c7b317f4: 106, #c68b4ed6: 10 }, { #c68b4ed6: 14 }) + }, + { #c8ff724b: "argc", #2cdb06fb: [ "argc" ] }, + { #c1127ea9: 37 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 349, + #21793419: ({ #c68b4ed6: 20 }, { #c68b4ed6: 27 }) + }, + { #c8ff724b: "argv", #2cdb06fb: [ "argv" ] }, + { #c1127ea9: 350 }, + { #0370b1b2: 1 })> + ], + #ebe3c415: 346, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 351, + #21793419: + ({ #c68b4ed6: 33 }, { #c7b317f4: 112, #c68b4ed6: 1 }) + }, + [ + <#1a1d5a70: + ({ + #d121c0bd: 352, + #21793419: + ({ #c7b317f4: 107, #c68b4ed6: 3 }, + { #c7b317f4: 110, #c68b4ed6: 3 }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 353, + #21793419: + ({ #c7b317f4: 107, #c68b4ed6: 20 }, + { #c7b317f4: 110, #c68b4ed6: 3 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 354, + #21793419: + ({ #c7b317f4: 108, #c68b4ed6: 5 }, + { #c68b4ed6: 41 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 355, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 41 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 356, + #21793419: + ({ #c68b4ed6: 6 }, + { #c68b4ed6: 27 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 357, + #21793419: + ({ #c68b4ed6: 6 }, + { #c68b4ed6: 27 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 358, + #21793419: + ({ + #c68b4ed6: + 7 + }, + { + #c68b4ed6: + 21 + }) + }, + [ + <#f104c570: + ({ + #d121c0bd: + 359, + #21793419: + ( + { + #c68b4ed6: + 7 + }, + { + #c68b4ed6: + 21 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #316d331f: + "alloc", + #ec05e4a8: + 19, + #0ca98da4: + < + #db85e818: { + #c1127ea9: + 360 + }> + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: + <#38332009>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #316d331f: "init", + #ec05e4a8: 25 + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: <#38332009>, + #fa1a3bd3: [] + })>, + <#ff6ba872: + ({ + #d121c0bd: 361, + #21793419: + ({ #c68b4ed6: 33 }, + { #c68b4ed6: 34 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 362, + #21793419: + ({ #c68b4ed6: 34 }, + { #c68b4ed6: 34 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 363 + }, + #0e89e422: + <#28055b85> + }, + [ "hello" ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #316d331f: "foo:", + #1ea99a8b: true, + #ec05e4a8: 118 + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { })>, + <#d0cddcea: + ({ + #d121c0bd: 364, + #21793419: + ({ #c7b317f4: 109, #c68b4ed6: 5 }, + { #c68b4ed6: 32 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 365, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 32 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 366, + #21793419: + ({ #c68b4ed6: 6 }, + { #c68b4ed6: 18 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 367, + #21793419: + ({ #c68b4ed6: 6 }, + { #c68b4ed6: 18 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #316d331f: "new", + #ec05e4a8: 22, + #0ca98da4: + <#db85e818: { + #c1127ea9: 360 + }> + })> + ], + { + #30e4876a: { + #c1127ea9: 92 + } + }, + { + #c91e0a14: <#38332009>, + #fa1a3bd3: [] + })>, + <#ff6ba872: + ({ + #d121c0bd: 368, + #21793419: + ({ #c68b4ed6: 24 }, + { #c68b4ed6: 25 }) + }, + [ + <#3231247e: + ({ + #d121c0bd: 369, + #21793419: + ({ #c68b4ed6: 25 }, + { #c68b4ed6: 25 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 363 + }, + #0e89e422: + <#28055b85> + }, + [ "hello" ])> + ], + { + #30e4876a: { + #c1127ea9: 64 + } + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #316d331f: "bar:", + #1ea99a8b: true, + #ec05e4a8: 283 + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { })> + ])> + ])>, + <#df3bdb38: + ({ + #d121c0bd: 370, + #21793419: + ({ #c7b317f4: 111, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 371, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { #30e4876a: { #c1127ea9: 37 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 372, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 21, + { })> + ], + { }, + { + #e870593a: "tests/ObjCTest.m", + #e52854e9: <#3ff69d49>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 69 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 373 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 374 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 375 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 376 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 377 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 378 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 379 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 380 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 381 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 382 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 383 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 384 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 385 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 386 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 387 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 388 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 389 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 390 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 391 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 392 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 393 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 394 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 395 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 396 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 397 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 398 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 399 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 400 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 401 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 402 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 403 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 404 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 405 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 406 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 407 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 408 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 409 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 410 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 411 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 412 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 413 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 414 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 415 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 416 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 417 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 418 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 169 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 419 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 420 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 421 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 422 })>, + <#2e6cf4ea: ({ #d121c0bd: 423 })>, + <#2e6cf4ea: ({ #d121c0bd: 424 })>, + <#2e6cf4ea: ({ #d121c0bd: 425 })>, + <#22d546dd: ({ #d121c0bd: 426 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 427 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 428 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 78 }, { #c1127ea9: 69 })>, + <#22d546dd: ({ #d121c0bd: 429 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 430 }, <#2fe155d3>)>, + <#d3d219f7: ({ #d121c0bd: 431 }, { #c1127ea9: 428 })>, + <#0098a8c5: ({ #d121c0bd: 432 }, { #fcd148e8: 426 })>, + <#2e3d736c: ({ #d121c0bd: 433 }, { #c1127ea9: 432 })>, + <#0098a8c5: ({ #d121c0bd: 434 }, { #fcd148e8: 427 })>, + <#2e3d736c: ({ #d121c0bd: 435 }, { #c1127ea9: 434 })>, + <#2374f4e7: ({ #d121c0bd: 436 }, 10)>, + <#d80cb60b: ({ #d121c0bd: 437 }, 438)>, + <#d3d219f7: ({ #d121c0bd: 439 }, { #c1127ea9: 37, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 440 }, { #c1127ea9: 374, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 134 }, { #c1127ea9: 374 })>, + <#d80cb60b: ({ #d121c0bd: 441 }, 442)>, + <#da0c5ecf: + ({ #d121c0bd: 443 }, + { #cd26765d: { #c1127ea9: 441 }, #11302019: 24 }, + 1)>, + <#2374f4e7: ({ #d121c0bd: 444 }, 18)>, + <#19e1ef85: + ({ #d121c0bd: 7, #26f32be5: 433 }, + { #0b680f7d: { #c1127ea9: 433 }, #c3687459: 6 })>, + <#19e1ef85: + ({ #d121c0bd: 21, #26f32be5: 433 }, + { #0b680f7d: { #c1127ea9: 7 }, #c3687459: 372 })>, + <#19e1ef85: + ({ #d121c0bd: 9, #26f32be5: 435 }, + { #0b680f7d: { #c1127ea9: 435 }, #c3687459: 8 })>, + <#19e1ef85: + ({ #d121c0bd: 15, #26f32be5: 37 }, + { #0b680f7d: { #c1127ea9: 37 }, #c3687459: 14 })>, + <#19e1ef85: + ({ #d121c0bd: 5, #26f32be5: 431 }, + { #0b680f7d: { #c1127ea9: 431 }, #c3687459: 4 })>, + <#2e3d736c: ({ #d121c0bd: 33 }, { #c1127ea9: 436 })>, + <#2374f4e7: ({ #d121c0bd: 445 }, 34)>, + <#2374f4e7: ({ #d121c0bd: 446 }, 38)>, + <#19e1ef85: + ({ #d121c0bd: 17, #26f32be5: 53 }, + { #0b680f7d: { #c1127ea9: 53 }, #c3687459: 16 })>, + <#2374f4e7: ({ #d121c0bd: 447 }, 40)>, + <#cd01b755: + ({ #d121c0bd: 448 }, + { #cd26765d: { #c1127ea9: 433 }, #11302019: 8 })>, + <#cd01b755: + ({ #d121c0bd: 449 }, + { #cd26765d: { #c1127ea9: 7, #ea1a680e: true }, #11302019: 8 })>, + <#cd01b755: + ({ #d121c0bd: 450 }, + { #cd26765d: { #c1127ea9: 7, #ea1a680e: true }, #11302019: 8 })>, + <#d3d219f7: ({ #d121c0bd: 451 }, { #c1127ea9: 433, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 452 }, { #c1127ea9: 7, #ea1a680e: true })>, + <#2d935553: ({ #d121c0bd: 43, #26f32be5: 452 }, { #c1127ea9: 452 })>, + <#2374f4e7: ({ #d121c0bd: 453 }, 48)>, + <#d3d219f7: ({ #d121c0bd: 454 }, { #c1127ea9: 433 })>, + <#d3d219f7: ({ #d121c0bd: 51 }, { #c1127ea9: 7 })>, + <#2374f4e7: ({ #d121c0bd: 455 }, 56)>, + <#2e3d736c: ({ #d121c0bd: 64 }, { #c1127ea9: 446 })>, + <#26796f6a: + ({ #d121c0bd: 456 }, + { #f9c96be9: { #c1127ea9: 69 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 457 }, + { #f9c96be9: { #c1127ea9: 69 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 458 }, + { #f9c96be9: { #c1127ea9: 69 } }, + { #08ec7593: [ { #c1127ea9: 433 } ] })>, + <#26796f6a: + ({ #d121c0bd: 59 }, + { #f9c96be9: { #c1127ea9: 69 } }, + { #08ec7593: [ { #c1127ea9: 7 } ] })>, + <#2374f4e7: ({ #d121c0bd: 360 }, 72)>, + <#0098a8c5: + ({ #d121c0bd: 459 }, { #fcd148e8: 444, #0b037c51: [ 71 ] })>, + <#2e3d736c: ({ #d121c0bd: 87 }, { #c1127ea9: 459 })>, + <#ffc15fc2: + ({ #d121c0bd: 117, #26f32be5: 64 }, { #3ed86e62: <#207783bf> })>, + <#2e3d736c: ({ #d121c0bd: 92 }, { #c1127ea9: 360 })>, + <#da0c5ecf: + ({ #d121c0bd: 130 }, + { #cd26765d: { #c1127ea9: 374 }, #11302019: 1 }, + 4)>, + <#d3d219f7: ({ #d121c0bd: 460 }, { #c1127ea9: 37 })>, + <#d3d219f7: ({ #d121c0bd: 133 }, { #c1127ea9: 460 })>, + <#d3d219f7: ({ #d121c0bd: 461 }, { #c1127ea9: 458 })>, + <#d3d219f7: ({ #d121c0bd: 126 }, { #c1127ea9: 59 })>, + <#26796f6a: + ({ #d121c0bd: 462 }, + { #f9c96be9: { #c1127ea9: 53 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 463 }, + { #f9c96be9: { #c1127ea9: 17 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#0c1e4fc4: ({ #d121c0bd: 464, #26f32be5: 463 }, { #c1127ea9: 463 })>, + <#e5fe99ea: ({ #d121c0bd: 465 }, { #c1127ea9: 462 })>, + <#e5fe99ea: ({ #d121c0bd: 180 }, { #c1127ea9: 464 })>, + <#26796f6a: + ({ #d121c0bd: 466 }, + { #f9c96be9: { #c1127ea9: 416 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#26796f6a: + ({ #d121c0bd: 467 }, + { #f9c96be9: { #c1127ea9: 416 } }, + { #08ec7593: [ { #c1127ea9: 64 } ] })>, + <#e5fe99ea: ({ #d121c0bd: 159 }, { #c1127ea9: 463 })>, + <#2e3d736c: ({ #d121c0bd: 192 }, { #c1127ea9: 453 })>, + <#2e3d736c: ({ #d121c0bd: 191 }, { #c1127ea9: 445 })>, + <#2e3d736c: ({ #d121c0bd: 222 }, { #c1127ea9: 447 })>, + <#da0c5ecf: + ({ #d121c0bd: 239 }, + { #cd26765d: { #c1127ea9: 374 }, #11302019: 1 }, + 10)>, + <#2e3d736c: ({ #d121c0bd: 254 }, { #c1127ea9: 455 })>, + <#da0c5ecf: + ({ #d121c0bd: 251 }, + { #cd26765d: { #c1127ea9: 374 }, #11302019: 1 }, + 14)>, + <#da0c5ecf: + ({ #d121c0bd: 264 }, + { #cd26765d: { #c1127ea9: 374 }, #11302019: 1 }, + 8)>, + <#da0c5ecf: + ({ #d121c0bd: 275 }, + { #cd26765d: { #c1127ea9: 374 }, #11302019: 1 }, + 7)>, + <#e1d903a1: ({ #d121c0bd: 468, #26f32be5: 433 })>, + <#2374f4e7: ({ #d121c0bd: 469 }, 321)>, + <#2374f4e7: ({ #d121c0bd: 470 }, 322)>, + <#2e3d736c: ({ #d121c0bd: 471 }, { #c1127ea9: 444 })>, + <#0098a8c5: + ({ #d121c0bd: 472 }, + { #fcd148e8: 469, #25309442: [ { #c1127ea9: 471 } ] })>, + <#2e3d736c: ({ #d121c0bd: 326 }, { #c1127ea9: 472 })>, + <#2374f4e7: ({ #d121c0bd: 473 }, 327)>, + <#2e3d736c: ({ #d121c0bd: 332 }, { #c1127ea9: 473 })>, + <#d3d219f7: ({ #d121c0bd: 350 }, { #c1127ea9: 134 })>, + <#26796f6a: + ({ #d121c0bd: 347 }, + { #f9c96be9: { #c1127ea9: 37 } }, + { #08ec7593: [ { #c1127ea9: 37 }, { #c1127ea9: 350 } ] })>, + <#da0c5ecf: + ({ #d121c0bd: 363 }, + { #cd26765d: { #c1127ea9: 374 }, #11302019: 1 }, + 6)>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/available_expression.m.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/available_expression.m.exp new file mode 100644 index 000000000..c8d33acc6 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/available_expression.m.exp @@ -0,0 +1,399 @@ +tests/available_expression.m:8:12: warning: class 'NSObject' defined without specifying a base class [-Wobjc-root-class] +@interface NSObject + ^ +tests/available_expression.m:8:20: note: add a super class to fix this problem +@interface NSObject + ^ + : NSObject +1 warning generated. +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "SEL", #2cdb06fb: [ "SEL" ] }, + 5, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "id", #2cdb06fb: [ "id" ] }, + 7, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 8, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "Class", #2cdb06fb: [ "Class" ] }, + 0, + { })>, + <#18d25297: + ({ + #d121c0bd: 9, + #f9005968: 1, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "Protocol", #2cdb06fb: [ "Protocol" ] }, + [], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 10, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 11, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 12, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#18d25297: + ({ + #d121c0bd: 13, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/available_expression.m", + #c7b317f4: 8, + #c68b4ed6: 1 + }, + { #c7b317f4: 9, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [], + { }, + { + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 14, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 14, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 13, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + } + })>, + <#18d25297: + ({ + #d121c0bd: 15, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 15, #c68b4ed6: 2 }) + }, + { + #c8ff724b: "available_expression", + #2cdb06fb: [ "available_expression" ] + }, + [], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 13, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + }, + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 16, + #c8ff724b: { + #c8ff724b: "available_expression", + #2cdb06fb: [ "available_expression" ] + } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 16, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 1 }, + { #c7b317f4: 27, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "available_expression", + #2cdb06fb: [ "available_expression" ] + }, + [ + <#3ccd3797: + ({ + #d121c0bd: 17, + #f9005968: 16, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "test_no_bug:and:", + #2cdb06fb: [ "test_no_bug:and:", "available_expression" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 18 }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 19, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 22 }, + { #c68b4ed6: 26 }) + }, + { #c8ff724b: "n", #2cdb06fb: [ "n" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 21, + #21793419: ({ #c68b4ed6: 33 }, { #c68b4ed6: 56 }) + }, + { #c8ff724b: "data", #2cdb06fb: [ "data" ] }, + { #c1127ea9: 22 }, + { #0370b1b2: 1 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 23, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 22, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 24, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 61 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + [ + <#22219ce5: + ({ + #d121c0bd: 26, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 3 }, + { #c7b317f4: 21, #c68b4ed6: 3 }) + }, + [ + <#f0f37d96: + ({ + #d121c0bd: 27, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 7 }, + { #c68b4ed6: 42 }) + }, + [], + { #30e4876a: { #c1127ea9: 28 } }, + { #fcf1e718: "11.0" })>, + <#d394bb73: + ({ + #d121c0bd: 29, + #21793419: + ({ #c68b4ed6: 45 }, + { #c7b317f4: 21, #c68b4ed6: 3 }) + }, + [])> + ], + { #c1c4b9e2: 27, #ccfc02dd: 29 })>, + <#22219ce5: + ({ + #d121c0bd: 30, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, + { #c7b317f4: 24, #c68b4ed6: 3 }) + }, + [ + <#f0f37d96: + ({ + #d121c0bd: 31, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 7 }, + { #c68b4ed6: 48 }) + }, + [], + { #30e4876a: { #c1127ea9: 28 } }, + { #fcf1e718: "8" })>, + <#d394bb73: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 51 }, + { #c7b317f4: 24, #c68b4ed6: 3 }) + }, + [])> + ], + { #c1c4b9e2: 31, #ccfc02dd: 32 })> + ])>, + #d2e9b40c: "-[available_expression test_no_bug:and:]" + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 15, + #c8ff724b: { + #c8ff724b: "available_expression", + #2cdb06fb: [ "available_expression" ] + } + } + })>, + <#0f3f4d35: + ({ #d121c0bd: 33, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 34, + { })> + ], + { }, + { + #e870593a: "tests/available_expression.m", + #e52854e9: <#3ff69d49>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 18 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 85 })>, + <#2e6cf4ea: ({ #d121c0bd: 86 })>, + <#2e6cf4ea: ({ #d121c0bd: 87 })>, + <#2e6cf4ea: ({ #d121c0bd: 88 })>, + <#22d546dd: ({ #d121c0bd: 89 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 92 }, { #c1127ea9: 18 })>, + <#22d546dd: ({ #d121c0bd: 93 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#2fe155d3>)>, + <#d3d219f7: ({ #d121c0bd: 95 }, { #c1127ea9: 91 })>, + <#0098a8c5: ({ #d121c0bd: 96 }, { #fcd148e8: 89 })>, + <#2e3d736c: ({ #d121c0bd: 97 }, { #c1127ea9: 96 })>, + <#0098a8c5: ({ #d121c0bd: 98 }, { #fcd148e8: 90 })>, + <#2e3d736c: ({ #d121c0bd: 99 }, { #c1127ea9: 98 })>, + <#2374f4e7: ({ #d121c0bd: 100 }, 9)>, + <#d80cb60b: ({ #d121c0bd: 101 }, 102)>, + <#d3d219f7: ({ #d121c0bd: 103 }, { #c1127ea9: 20, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 104 }, { #c1127ea9: 35, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 105 }, { #c1127ea9: 35 })>, + <#d80cb60b: ({ #d121c0bd: 106 }, 107)>, + <#da0c5ecf: + ({ #d121c0bd: 108 }, + { #cd26765d: { #c1127ea9: 106 }, #11302019: 24 }, + 1)>, + <#2374f4e7: ({ #d121c0bd: 109 }, 13)>, + <#2374f4e7: ({ #d121c0bd: 110 }, 15)>, + <#2e3d736c: ({ #d121c0bd: 22 }, { #c1127ea9: 110 })>, + <#19e1ef85: + ({ #d121c0bd: 7, #26f32be5: 97 }, + { #0b680f7d: { #c1127ea9: 97 }, #c3687459: 6 })>, + <#19e1ef85: + ({ #d121c0bd: 34, #26f32be5: 97 }, + { #0b680f7d: { #c1127ea9: 7 }, #c3687459: 33 })>, + <#19e1ef85: + ({ #d121c0bd: 5, #26f32be5: 95 }, + { #0b680f7d: { #c1127ea9: 95 }, #c3687459: 4 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/bind_temporary.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/bind_temporary.cpp.exp new file mode 100644 index 000000000..72946c17d --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/bind_temporary.cpp.exp @@ -0,0 +1,553 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/bind_temporary.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 11, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "S", #2cdb06fb: [ "S" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#cc498dc1: + ({ + #d121c0bd: 11, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S" ] }, + { #c1127ea9: 12 }, + { + #d2e9b40c: "320519083853435709", + #f1a45f0e: true, + #ebe3c415: 11, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 14, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, { #c68b4ed6: 9 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~S", #2cdb06fb: [ "~S", "S" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "3243028866176254141", + #f1a45f0e: true, + #ebe3c415: 14, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 16, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 9 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 17, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S" ] }, + { #c1127ea9: 18 }, + { + #d2e9b40c: "1635307583371793064", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 19, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 14, + #c8ff724b: { #c8ff724b: "~S", #2cdb06fb: [ "~S", "S" ] }, + #30e4876a: { #c1127ea9: 15 } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 21, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test", #2cdb06fb: [ "test" ] }, + { #c1127ea9: 12 }, + { + #d2e9b40c: "18241244337164948030", + #f1a45f0e: true, + #ebe3c415: 21, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 22, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 13 }, + { #c7b317f4: 14, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 23, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, + { #c68b4ed6: 23 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 24, + #21793419: + ({ #c68b4ed6: 20 }, { #c68b4ed6: 22 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 20 }, { #c68b4ed6: 22 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 26, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 22 }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 27, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 22 }) + }, + [ + <#1b3b8242: + ({ + #d121c0bd: 28, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 22 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "S", + #2cdb06fb: [ + "S", "S" + ] + }, + #30e4876a: { + #c1127ea9: 12 + } + } + })> + ], + { + #30e4876a: { #c1127ea9: 8 } + }, + { #e715f735: 29 })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + } + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 30, + #c8ff724b: { + #c8ff724b: "s_ref", + #2cdb06fb: [ "s_ref" ] + }, + #30e4876a: { #c1127ea9: 20 } + } + })> + ], + { + #30e4876a: { #c1127ea9: 8, #ea1a680e: true }, + #0e89e422: <#28055b85> + }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 30, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 22 }) + }, + { #c8ff724b: "s_ref", #2cdb06fb: [ "s_ref" ] }, + { #c1127ea9: 20 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 24, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 22 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 22 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 26, + #21793419: + ({ #c68b4ed6: 20 }, + { #c68b4ed6: 22 }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 27, + #21793419: + ({ + #c68b4ed6: 20 + }, + { + #c68b4ed6: 22 + }) + }, + [ + <#1b3b8242: + ({ + #d121c0bd: 28, + #21793419: + ({ + #c68b4ed6: + 20 + }, + { + #c68b4ed6: + 22 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "S", + #2cdb06fb: [ + "S", "S" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 8 + } + }, + { #e715f735: 29 })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + } + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 30, + #c8ff724b: { + #c8ff724b: "s_ref", + #2cdb06fb: [ "s_ref" ] + }, + #30e4876a: { #c1127ea9: 20 } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { })> + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 31, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 32, + { })> + ], + { }, + { + #e870593a: "tests/bind_temporary.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 33 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 88 })>, + <#2e6cf4ea: ({ #d121c0bd: 89 })>, + <#2e6cf4ea: ({ #d121c0bd: 90 })>, + <#2e6cf4ea: ({ #d121c0bd: 91 })>, + <#22d546dd: ({ #d121c0bd: 92 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 95 }, { #c1127ea9: 33 })>, + <#22d546dd: ({ #d121c0bd: 96 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 98 }, 99)>, + <#d3d219f7: ({ #d121c0bd: 100 }, { #c1127ea9: 38, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 101 }, { #c1127ea9: 35, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 102 }, { #c1127ea9: 35 })>, + <#d80cb60b: ({ #d121c0bd: 103 }, 104)>, + <#da0c5ecf: + ({ #d121c0bd: 105 }, + { #cd26765d: { #c1127ea9: 103 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 106 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 12 }, { #f9c96be9: { #c1127ea9: 33 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 107 }, { #f9c96be9: { #c1127ea9: 33 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 15 }, { #f9c96be9: { #c1127ea9: 33 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 20 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 108 }, + { #f9c96be9: { #c1127ea9: 33 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 18 }, + { #f9c96be9: { #c1127ea9: 33 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#0098a8c5: ({ #d121c0bd: 109 }, { #fcd148e8: 92 })>, + <#2e3d736c: ({ #d121c0bd: 110 }, { #c1127ea9: 109 })>, + <#19e1ef85: + ({ #d121c0bd: 111, #26f32be5: 110 }, + { #0b680f7d: { #c1127ea9: 110 }, #c3687459: 112 })>, + <#19e1ef85: + ({ #d121c0bd: 32, #26f32be5: 110 }, + { #0b680f7d: { #c1127ea9: 111 }, #c3687459: 31 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_attributes.c.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_attributes.c.exp new file mode 100644 index 000000000..4eee03a4f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_attributes.c.exp @@ -0,0 +1,176 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/c_attributes.c", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c68b4ed6: 60 }), + #1771a8d7: [ + <#eebf2855: + ({ + #d121c0bd: 8, + #21793419: ({ #c68b4ed6: 45 }, { #c68b4ed6: 58 }) + }, + { #251950e4: 0, #31ee909c: 1 })> + ] + }, + { #c8ff724b: "add_all_ints", #2cdb06fb: [ "add_all_ints" ] }, + { #c1127ea9: 9 }, + { + #ed526254: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 10, + #21793419: ({ #c68b4ed6: 18 }, { #c68b4ed6: 22 }) + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 11 }, + { #0370b1b2: 0 })> + ] + })>, + <#0f3f4d35: + ({ #d121c0bd: 12, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 13, + { })> + ], + { }, + { + #e870593a: "tests/c_attributes.c", + #e52854e9: <#3079cf66>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 14 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 15 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 16 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 17 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 18 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 11 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 66 })>, + <#2e6cf4ea: ({ #d121c0bd: 67 })>, + <#2e6cf4ea: ({ #d121c0bd: 68 })>, + <#2e6cf4ea: ({ #d121c0bd: 69 })>, + <#22d546dd: ({ #d121c0bd: 70 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 73 }, { #c1127ea9: 14 })>, + <#22d546dd: ({ #d121c0bd: 74 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 76 }, 77)>, + <#d3d219f7: ({ #d121c0bd: 78 }, { #c1127ea9: 11, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 79 }, { #c1127ea9: 16, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 80 }, { #c1127ea9: 16 })>, + <#d80cb60b: ({ #d121c0bd: 81 }, 82)>, + <#da0c5ecf: + ({ #d121c0bd: 83 }, + { #cd26765d: { #c1127ea9: 81 }, #11302019: 24 }, + 1)>, + <#26796f6a: + ({ #d121c0bd: 9 }, + { #f9c96be9: { #c1127ea9: 11 } }, + { #08ec7593: [ { #c1127ea9: 11 } ] })>, + <#0098a8c5: ({ #d121c0bd: 84 }, { #fcd148e8: 70 })>, + <#2e3d736c: ({ #d121c0bd: 85 }, { #c1127ea9: 84 })>, + <#19e1ef85: + ({ #d121c0bd: 86, #26f32be5: 85 }, + { #0b680f7d: { #c1127ea9: 85 }, #c3687459: 87 })>, + <#19e1ef85: + ({ #d121c0bd: 13, #26f32be5: 85 }, + { #0b680f7d: { #c1127ea9: 86 }, #c3687459: 12 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_cast.cpp.exp new file mode 100644 index 000000000..22a451a0f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/c_cast.cpp.exp @@ -0,0 +1,287 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#11c182d1: + ({ + #d121c0bd: 7, + #21793419: + ({ #c3bbce7c: "tests/c_cast.cpp", #c7b317f4: 7, #c68b4ed6: 1 }, + { #c68b4ed6: 9 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 8 }, + { + #ccd69858: true, + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 9, + #21793419: ({ #c68b4ed6: 9 }, { #c68b4ed6: 9 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { #d9aa98d1: true, #1f65f619: 32, #31b87f71: "10" })> + })>, + <#11c182d1: + ({ + #d121c0bd: 10, + #21793419: ({ #c7b317f4: 8, #c68b4ed6: 1 }, { #c68b4ed6: 16 }) + }, + { #c8ff724b: "l", #2cdb06fb: [ "l" ] }, + { #c1127ea9: 11 }, + { + #ccd69858: true, + #fe93c404: + <#ca9fafa2: + ({ + #d121c0bd: 12, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 16 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 14, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 15, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 7, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { #c1127ea9: 8 } + } + })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { #c91e0a14: <#33e323e2>, #fa1a3bd3: [] }, + { #c1127ea9: 11 })> + })>, + <#11c182d1: + ({ + #d121c0bd: 16, + #21793419: ({ #c7b317f4: 9, #c68b4ed6: 1 }, { #c68b4ed6: 16 }) + }, + { #c8ff724b: "m", #2cdb06fb: [ "m" ] }, + { #c1127ea9: 11 }, + { + #ccd69858: true, + #fe93c404: + <#3f28859a: + ({ + #d121c0bd: 17, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 16 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 18, + #21793419: ({ #c68b4ed6: 15 }, { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 15 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 20, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 15 }) + }, + [], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 7, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { #c1127ea9: 8 } + } + })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { #c91e0a14: <#33e323e2>, #fa1a3bd3: [] }, + { #c1127ea9: 11 })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 21, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 22, + { })> + ], + { }, + { + #e870593a: "tests/c_cast.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 23 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 8 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 11 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 76 })>, + <#2e6cf4ea: ({ #d121c0bd: 77 })>, + <#2e6cf4ea: ({ #d121c0bd: 78 })>, + <#2e6cf4ea: ({ #d121c0bd: 79 })>, + <#22d546dd: ({ #d121c0bd: 80 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 83 }, { #c1127ea9: 23 })>, + <#22d546dd: ({ #d121c0bd: 84 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 86 }, 87)>, + <#d3d219f7: ({ #d121c0bd: 88 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 89 }, { #c1127ea9: 25, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 90 }, { #c1127ea9: 25 })>, + <#d80cb60b: ({ #d121c0bd: 91 }, 92)>, + <#da0c5ecf: + ({ #d121c0bd: 93 }, + { #cd26765d: { #c1127ea9: 91 }, #11302019: 24 }, + 1)>, + <#0098a8c5: ({ #d121c0bd: 94 }, { #fcd148e8: 80 })>, + <#2e3d736c: ({ #d121c0bd: 95 }, { #c1127ea9: 94 })>, + <#19e1ef85: + ({ #d121c0bd: 96, #26f32be5: 95 }, + { #0b680f7d: { #c1127ea9: 95 }, #c3687459: 97 })>, + <#19e1ef85: + ({ #d121c0bd: 22, #26f32be5: 95 }, + { #0b680f7d: { #c1127ea9: 96 }, #c3687459: 21 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/class_template.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/class_template.cpp.exp new file mode 100644 index 000000000..dfa492c0c --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/class_template.cpp.exp @@ -0,0 +1,1186 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#da76a085: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/class_template.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 27, #c68b4ed6: 1 }) + }, + { #c8ff724b: "N", #2cdb06fb: [ "N" ] }, + [ + <#37b901fc: + ({ + #d121c0bd: 8, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "N" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 16, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S *>", "N" ] + }, + 10, + [ + <#f50d797e: + ({ + #d121c0bd: 11, + #f9005968: 9, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, + { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S", "S *>", "N" ] + }, + 10, + [], + { }, + <#c5b1f8a9>, + { #33244202: 9 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 12, + #f9005968: 9, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 3 }, + { #c68b4ed6: 5 }), + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "field", + #2cdb06fb: [ "field", "S *>", "N" ] + }, + { #c1127ea9: 13 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 14, + #f9005968: 9, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 8 }, + { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S", "S *>", "N" ] + }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "7066629788491464130", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 14, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 16, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { + #ef684b00: [ + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S *>", "N" + ] + }, + #30e4876a: { #c1127ea9: 13 } + }>, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [], + { #30e4876a: { #c1127ea9: 13 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 18, + #c8ff724b: { + #c8ff724b: "S", + #2cdb06fb: [ + "S", "S", "N" + ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + } + ] + })>, + <#cc498dc1: + ({ + #d121c0bd: 19, + #f9005968: 9, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S", "S *>", "N" ] + }, + { #c1127ea9: 20 }, + { + #d2e9b40c: "11949468677960817094", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 22 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 23, + #f9005968: 9, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S", "S *>", "N" ] + }, + { #c1127ea9: 24 }, + { + #d2e9b40c: "14813278630171558444", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 26 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 9, #1a9a7e84: true }, + { #f1ae3b70: true }, + "15160212752071097404", + { + #e43971cf: 8, + #0de52551: [ <#37e21eda: { #c1127ea9: 27 }> ] + })> + ] + })>, + <#2339e324: + ({ + #d121c0bd: 28, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 16, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S", "N" ] + }, + 29, + [ + <#f50d797e: + ({ + #d121c0bd: 30, + #f9005968: 28, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "S", + #2cdb06fb: [ "S", "S", "N" ] + }, + 29, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0, #fd16bc2f: true }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 31, + #f9005968: 28, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 3 }, { #c68b4ed6: 5 }), + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S", "N" + ] + }, + { #c1127ea9: 32 }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 28, #1a9a7e84: true, #fd16bc2f: true }, + { }, + "15216485236755079891", + { + #e43971cf: 8, + #0de52551: [ <#37e21eda: { #c1127ea9: 33 }> ] + })>, + <#e0b96727: + ({ + #d121c0bd: 34, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, + { #c7b317f4: 21, #c68b4ed6: 1 }) + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "N" ] }, + 35, + [ + <#f50d797e: + ({ + #d121c0bd: 36, + #f9005968: 34, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S", "N" ] }, + 35, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 37, + #f9005968: 34, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "field", + #2cdb06fb: [ "field", "S", "N" ] + }, + { #c1127ea9: 38 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 18, + #f9005968: 34, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S", "N" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "13141222913637319333", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 18, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 39, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 40, + #f9005968: 34, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~S", #2cdb06fb: [ "~S", "S", "N" ] }, + { #c1127ea9: 41 }, + { + #d2e9b40c: "16063732695960137765", + #f1a45f0e: true, + #3e64314e: true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 42, + #f9005968: 34, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S", "N" ] }, + { #c1127ea9: 43 }, + { + #d2e9b40c: "16241844907223898831", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 44, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 45 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 46, + #f9005968: 34, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "S", #2cdb06fb: [ "S", "S", "N" ] }, + { #c1127ea9: 47 }, + { + #d2e9b40c: "6117498947183732003", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 48, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 49 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 50, + #f9005968: 34, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "operator=", + #2cdb06fb: [ "operator=", "S", "N" ] + }, + { #c1127ea9: 51 }, + { + #d2e9b40c: "16979568942442152295", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 52, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 45 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 50, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 53, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 54, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 55, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 56, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 27 + } + })> + ], + { + #30e4876a: { #c1127ea9: 38 }, + #0e89e422: <#28055b85> + }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S", "N" + ] + }, + #c369ebbe: { + #c709e154: <#13c1049a>, + #ec05e4a8: 37, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S", "N" + ] + }, + #30e4876a: { #c1127ea9: 38 } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 57, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 58, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 59, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 35, + #ea1a680e: true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: 52, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ "" ] + }, + #30e4876a: { + #c1127ea9: 45 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 38, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #f708701b: true, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S", "N" + ] + }, + #c369ebbe: { + #c709e154: <#13c1049a>, + #ec05e4a8: 37, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S", + "N" + ] + }, + #30e4876a: { + #c1127ea9: 38 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 38 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 38 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#009aba4f> })>, + <#df3bdb38: + ({ + #d121c0bd: 60, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 61, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 62, + #21793419: + ({ #c68b4ed6: 8 }, + { #c68b4ed6: 8 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 27 + } + })> + ], + { + #30e4876a: { #c1127ea9: 35 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ])> + ])> + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 63, + #f9005968: 34, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "operator=", + #2cdb06fb: [ "operator=", "S", "N" ] + }, + { #c1127ea9: 64 }, + { + #d2e9b40c: "12620087123913755403", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 65, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 49 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 34, #1a9a7e84: true }, + { + #f1ae3b70: true, + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 40, + #c8ff724b: { + #c8ff724b: "~S", + #2cdb06fb: [ "~S", "S", "N" ] + }, + #30e4876a: { #c1127ea9: 41 } + } + }, + "9300085993929073917", + { + #e43971cf: 8, + #0de52551: [ <#37e21eda: { #c1127ea9: 38 }> ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 66, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test", #2cdb06fb: [ "test", "N" ] }, + { #c1127ea9: 67 }, + { + #d2e9b40c: "3452486497056904182", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 68, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 11 }, + { #c68b4ed6: 18 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "p", #2cdb06fb: [ "p" ] }, + { #c1127ea9: 69 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 66, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 70, + #21793419: + ({ #c68b4ed6: 21 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 71, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, + { #c68b4ed6: 18 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 72, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 15 }) + }, + [], + { #30e4876a: { #c1127ea9: 73 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 14, + #c8ff724b: { + #c8ff724b: "S", + #2cdb06fb: [ + "S", "S *>", "N" + ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 74, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 15 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { + #c8ff724b: "val", + #2cdb06fb: [ "val" ] + }, + { #c1127ea9: 73 }, + { + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 72, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 15 }) + }, + [], + { #30e4876a: { #c1127ea9: 73 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 14, + #c8ff724b: { + #c8ff724b: "S", + #2cdb06fb: [ + "S", "S *>", + "N" + ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })> + ])>, + <#105d7ada: + ({ + #d121c0bd: 75, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 3 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 76, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 13 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 77, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 13 }) + }, + [], + { + #30e4876a: { #c1127ea9: 51 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#e7d5f344>, + #ec05e4a8: 50, + #c8ff724b: { + #c8ff724b: "operator=", + #2cdb06fb: [ + "operator=", "S", "N" + ] + }, + #30e4876a: { #c1127ea9: 51 } + } + })> + ], + { #30e4876a: { #c1127ea9: 78 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#090744cf: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 7 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 80, + #21793419: + ({ #c68b4ed6: 3 }, + { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { #c1127ea9: 73 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 74, + #c8ff724b: { + #c8ff724b: "val", + #2cdb06fb: [ "val" ] + }, + #30e4876a: { #c1127ea9: 73 } + } + })> + ], + { + #30e4876a: { #c1127ea9: 13 }, + #0e89e422: <#28055b85> + }, + { + #f708701b: true, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S *>", "N" + ] + }, + #c369ebbe: { + #c709e154: <#13c1049a>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "field", + #2cdb06fb: [ + "field", "S *>", "N" + ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 15 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 82, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 15 }) + }, + [], + { + #30e4876a: { #c1127ea9: 69 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 68, + #c8ff724b: { + #c8ff724b: "p", + #2cdb06fb: [ "p" ] + }, + #30e4876a: { #c1127ea9: 69 } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 69, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { #c91e0a14: <#33e323e2>, #fa1a3bd3: [] })> + ], + { + #30e4876a: { #c1127ea9: 35 }, + #0e89e422: <#28055b85> + })> + ])> + })> + ], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 83, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 84, + { })> + ], + { }, + { + #e870593a: "tests/class_template.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 85 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 100 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 103 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 106 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 107 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 109 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 110 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 111 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 112 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 113 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 116 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 117 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 121 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 139 })>, + <#2e6cf4ea: ({ #d121c0bd: 140 })>, + <#2e6cf4ea: ({ #d121c0bd: 141 })>, + <#2e6cf4ea: ({ #d121c0bd: 142 })>, + <#22d546dd: ({ #d121c0bd: 143 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 144 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 145 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 146 }, { #c1127ea9: 85 })>, + <#22d546dd: ({ #d121c0bd: 147 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 149 }, 150)>, + <#d3d219f7: ({ #d121c0bd: 151 }, { #c1127ea9: 38, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 152 }, { #c1127ea9: 87, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 153 }, { #c1127ea9: 87 })>, + <#d80cb60b: ({ #d121c0bd: 154 }, 155)>, + <#da0c5ecf: + ({ #d121c0bd: 156 }, + { #cd26765d: { #c1127ea9: 154 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 157 })>, + <#f3f3711a: ({ #d121c0bd: 158 })>, + <#ece2635f: ({ #d121c0bd: 159 })>, + <#ece2635f: ({ #d121c0bd: 160 })>, + <#d49f978d: ({ #d121c0bd: 161 })>, + <#f3f3711a: ({ #d121c0bd: 32 })>, + <#d3d219f7: ({ #d121c0bd: 33 }, { #c1127ea9: 157 })>, + <#d3d219f7: ({ #d121c0bd: 162 }, { #c1127ea9: 32 })>, + <#ece2635f: ({ #d121c0bd: 163 })>, + <#ece2635f: ({ #d121c0bd: 164 })>, + <#d49f978d: ({ #d121c0bd: 29 })>, + <#ece2635f: ({ #d121c0bd: 165 })>, + <#d80cb60b: ({ #d121c0bd: 35 }, 34)>, + <#ece2635f: ({ #d121c0bd: 166, #26f32be5: 35 })>, + <#ece2635f: ({ #d121c0bd: 69, #26f32be5: 35 })>, + <#26796f6a: + ({ #d121c0bd: 167 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 35 } ] })>, + <#26796f6a: + ({ #d121c0bd: 67 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 69 } ] })>, + <#ece2635f: ({ #d121c0bd: 168, #26f32be5: 35 })>, + <#d3d219f7: ({ #d121c0bd: 27 }, { #c1127ea9: 35 })>, + <#d3d219f7: ({ #d121c0bd: 169 }, { #c1127ea9: 168 })>, + <#d80cb60b: ({ #d121c0bd: 10 }, 9)>, + <#ece2635f: ({ #d121c0bd: 73, #26f32be5: 10 })>, + <#dd64b59b: ({ #d121c0bd: 13, #26f32be5: 35 })>, + <#d3d219f7: ({ #d121c0bd: 170 }, { #c1127ea9: 13 })>, + <#26796f6a: + ({ #d121c0bd: 171 }, { #f9c96be9: { #c1127ea9: 85 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 172 }, { #f9c96be9: { #c1127ea9: 85 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 173 }, { #f9c96be9: { #c1127ea9: 85 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 41 }, { #f9c96be9: { #c1127ea9: 85 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 22 }, { #c1127ea9: 10, #ea1a680e: true })>, + <#0b08cd60: ({ #d121c0bd: 45 }, { #c1127ea9: 35, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 174 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 45 } ] })>, + <#26796f6a: + ({ #d121c0bd: 43 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 45 } ] })>, + <#295746e6: ({ #d121c0bd: 49 }, { #c1127ea9: 35 })>, + <#26796f6a: + ({ #d121c0bd: 175 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 49 } ] })>, + <#26796f6a: + ({ #d121c0bd: 47 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 49 } ] })>, + <#26796f6a: + ({ #d121c0bd: 176 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 22 } ] })>, + <#26796f6a: + ({ #d121c0bd: 20 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 22 } ] })>, + <#295746e6: ({ #d121c0bd: 26 }, { #c1127ea9: 10 })>, + <#26796f6a: + ({ #d121c0bd: 177 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 26 } ] })>, + <#26796f6a: + ({ #d121c0bd: 24 }, + { #f9c96be9: { #c1127ea9: 85 } }, + { #08ec7593: [ { #c1127ea9: 26 } ] })>, + <#26796f6a: + ({ #d121c0bd: 15 }, { #f9c96be9: { #c1127ea9: 85 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 178 }, { #c1127ea9: 35 })>, + <#26796f6a: + ({ #d121c0bd: 179 }, + { #f9c96be9: { #c1127ea9: 178 } }, + { #08ec7593: [ { #c1127ea9: 45 } ] })>, + <#26796f6a: + ({ #d121c0bd: 180 }, + { #f9c96be9: { #c1127ea9: 178 } }, + { #08ec7593: [ { #c1127ea9: 45 } ] })>, + <#26796f6a: + ({ #d121c0bd: 181 }, + { #f9c96be9: { #c1127ea9: 178 } }, + { #08ec7593: [ { #c1127ea9: 49 } ] })>, + <#26796f6a: + ({ #d121c0bd: 64 }, + { #f9c96be9: { #c1127ea9: 178 } }, + { #08ec7593: [ { #c1127ea9: 49 } ] })>, + <#26796f6a: + ({ #d121c0bd: 51 }, + { #f9c96be9: { #c1127ea9: 178 } }, + { #08ec7593: [ { #c1127ea9: 45 } ] })>, + <#d3d219f7: ({ #d121c0bd: 182 }, { #c1127ea9: 179 })>, + <#d3d219f7: ({ #d121c0bd: 78 }, { #c1127ea9: 51 })>, + <#0098a8c5: ({ #d121c0bd: 183 }, { #fcd148e8: 143 })>, + <#2e3d736c: ({ #d121c0bd: 184 }, { #c1127ea9: 183 })>, + <#19e1ef85: + ({ #d121c0bd: 185, #26f32be5: 184 }, + { #0b680f7d: { #c1127ea9: 184 }, #c3687459: 186 })>, + <#19e1ef85: + ({ #d121c0bd: 84, #26f32be5: 184 }, + { #0b680f7d: { #c1127ea9: 185 }, #c3687459: 83 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/comments.c.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/comments.c.exp new file mode 100644 index 000000000..435cd3124 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/comments.c.exp @@ -0,0 +1,160 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 7, + #21793419: + ({ #c3bbce7c: "tests/comments.c", #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "foo", #2cdb06fb: [ "foo" ] }, + { #c1127ea9: 8 }, + { + #ebe3c415: 7, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 9, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 12 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + [])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 10, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 11, + { })> + ], + { }, + { + #e870593a: "tests/comments.c", + #e52854e9: <#3079cf66>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 12 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 13 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 14 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 15 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 16 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 17 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 18 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 65 })>, + <#2e6cf4ea: ({ #d121c0bd: 66 })>, + <#2e6cf4ea: ({ #d121c0bd: 67 })>, + <#2e6cf4ea: ({ #d121c0bd: 68 })>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 72 }, { #c1127ea9: 12 })>, + <#22d546dd: ({ #d121c0bd: 73 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 75 }, 76)>, + <#d3d219f7: ({ #d121c0bd: 77 }, { #c1127ea9: 17, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 78 }, { #c1127ea9: 14, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 79 }, { #c1127ea9: 14 })>, + <#d80cb60b: ({ #d121c0bd: 80 }, 81)>, + <#da0c5ecf: + ({ #d121c0bd: 82 }, + { #cd26765d: { #c1127ea9: 80 }, #11302019: 24 }, + 1)>, + <#01fe18e9: ({ #d121c0bd: 8 }, { #f9c96be9: { #c1127ea9: 12 } })>, + <#0098a8c5: ({ #d121c0bd: 83 }, { #fcd148e8: 69 })>, + <#2e3d736c: ({ #d121c0bd: 84 }, { #c1127ea9: 83 })>, + <#19e1ef85: + ({ #d121c0bd: 85, #26f32be5: 84 }, + { #0b680f7d: { #c1127ea9: 84 }, #c3687459: 86 })>, + <#19e1ef85: + ({ #d121c0bd: 11, #26f32be5: 84 }, + { #0b680f7d: { #c1127ea9: 85 }, #c3687459: 10 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/const_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/const_cast.cpp.exp new file mode 100644 index 000000000..fc42df98f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/const_cast.cpp.exp @@ -0,0 +1,443 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/const_cast.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 10, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "Foo", #2cdb06fb: [ "Foo" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Foo", #2cdb06fb: [ "Foo", "Foo" ] }, + 8, + [], + { }, + <#01fae064>, + { #33244202: 0 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#29ca61ce: + ({ + #d121c0bd: 11, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 16 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "func", #2cdb06fb: [ "func", "Foo" ] }, + { #c1127ea9: 12 }, + { + #d2e9b40c: "999725558640074098", + #f1a45f0e: true, + #ebe3c415: 11, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 15 }, { #c68b4ed6: 16 }) + }, + [])> + }, + { })> + ], + { }, + <#01fae064>, + { #33244202: 7, #1a9a7e84: true }, + { #f1ae3b70: true })>, + <#f173dfc2: + ({ + #d121c0bd: 14, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + { #c8ff724b: "someFunction", #2cdb06fb: [ "someFunction" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "9689270513361838995", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 16, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 19 }, { #c68b4ed6: 30 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "f", #2cdb06fb: [ "f" ] }, + { #c1127ea9: 17 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 14, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 18, + #21793419: + ({ #c68b4ed6: 33 }, { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 19, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, + { #c68b4ed6: 35 }) + }, + [ + <#0acc0a14: + ({ + #d121c0bd: 20, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 34 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 33 }, { #c68b4ed6: 33 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 16, + #c8ff724b: { + #c8ff724b: "f", + #2cdb06fb: [ "f" ] + }, + #30e4876a: { #c1127ea9: 17 } + } + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c91e0a14: <#33e323e2>, #fa1a3bd3: [] }, + { #c1127ea9: 22 }, + "const_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 23, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 34 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "fRef", #2cdb06fb: [ "fRef" ] }, + { #c1127ea9: 22 }, + { + #fe93c404: + <#0acc0a14: + ({ + #d121c0bd: 20, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 34 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 33 }, + { #c68b4ed6: 33 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 16, + #c8ff724b: { + #c8ff724b: "f", + #2cdb06fb: [ "f" ] + }, + #30e4876a: { #c1127ea9: 17 } + } + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + }, + { #c1127ea9: 22 }, + "const_cast")> + })> + ])>, + <#ee1808d0: + ({ + #d121c0bd: 24, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c68b4ed6: 13 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 8 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 26, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "fRef", + #2cdb06fb: [ "fRef" ] + }, + #30e4876a: { #c1127ea9: 22 } + } + })> + ], + { #30e4876a: { #c1127ea9: 27 } }, + { + #f708701b: true, + #c8ff724b: { + #c8ff724b: "func", + #2cdb06fb: [ "func", "Foo" ] + }, + #c369ebbe: { + #c709e154: <#e7d5f344>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "func", + #2cdb06fb: [ "func", "Foo" ] + }, + #30e4876a: { #c1127ea9: 12 } + } + })> + ], + { #30e4876a: { #c1127ea9: 28 } })> + ])> + })>, + <#11c182d1: + ({ + #d121c0bd: 29, + #21793419: ({ #c7b317f4: 17, #c68b4ed6: 1 }, { #c68b4ed6: 19 }) + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 30, #ea1a680e: true }, + { + #ccd69858: true, + #e45abe46: true, + #dd3d1991: true, + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 31, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 30 } }, + { #d9aa98d1: true, #1f65f619: 32, #31b87f71: "1" })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 32, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 33, + { })> + ], + { }, + { + #e870593a: "tests/const_cast.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 28 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 86 })>, + <#2e6cf4ea: ({ #d121c0bd: 87 })>, + <#2e6cf4ea: ({ #d121c0bd: 88 })>, + <#2e6cf4ea: ({ #d121c0bd: 89 })>, + <#22d546dd: ({ #d121c0bd: 90 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 93 }, { #c1127ea9: 28 })>, + <#22d546dd: ({ #d121c0bd: 94 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 96 }, 97)>, + <#d3d219f7: ({ #d121c0bd: 98 }, { #c1127ea9: 30, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 99 }, { #c1127ea9: 35, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 100 }, { #c1127ea9: 35 })>, + <#d80cb60b: ({ #d121c0bd: 101 }, 102)>, + <#da0c5ecf: + ({ #d121c0bd: 103 }, + { #cd26765d: { #c1127ea9: 101 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 104 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 12 }, { #f9c96be9: { #c1127ea9: 28 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 17 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 15 }, + { #f9c96be9: { #c1127ea9: 28 } }, + { #08ec7593: [ { #c1127ea9: 17 } ] })>, + <#0b08cd60: ({ #d121c0bd: 22 }, { #c1127ea9: 8 })>, + <#d3d219f7: ({ #d121c0bd: 105 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#0098a8c5: ({ #d121c0bd: 106 }, { #fcd148e8: 90 })>, + <#2e3d736c: ({ #d121c0bd: 107 }, { #c1127ea9: 106 })>, + <#19e1ef85: + ({ #d121c0bd: 108, #26f32be5: 107 }, + { #0b680f7d: { #c1127ea9: 107 }, #c3687459: 109 })>, + <#19e1ef85: + ({ #d121c0bd: 33, #26f32be5: 107 }, + { #0b680f7d: { #c1127ea9: 108 }, #c3687459: 32 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/dynamic_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/dynamic_cast.cpp.exp new file mode 100644 index 000000000..50dafc56a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/dynamic_cast.cpp.exp @@ -0,0 +1,1856 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/dynamic_cast.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 9, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, { #c68b4ed6: 21 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "f", #2cdb06fb: [ "f", "A" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "1453848921539526524", + #f1a45f0e: true, + #ebe3c415: 10, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 12, + #21793419: ({ #c68b4ed6: 20 }, { #c68b4ed6: 21 }) + }, + [])> + }, + { #f1c74d76: true })>, + <#29ca61ce: + ({ + #d121c0bd: 13, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "A" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "4916027756641681778", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 15, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 16 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 17, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "A" ] }, + { #c1127ea9: 18 }, + { + #d2e9b40c: "1130122404358677750", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 19, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cfe47fa6: + ({ + #d121c0bd: 21, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~A", #2cdb06fb: [ "~A", "A" ] }, + { #c1127ea9: 22 }, + { + #d2e9b40c: "5328378654181921475", + #f1a45f0e: true, + #3e64314e: true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 23, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 24 }, + { + #d2e9b40c: "14779025497907219583", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 23, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 25, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 26, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 27 }, + { + #d2e9b40c: "3430056695640597274", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 28, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 16 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 29, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 30 }, + { + #d2e9b40c: "1361265890968139694", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 31, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 21, + #c8ff724b: { #c8ff724b: "~A", #2cdb06fb: [ "~A", "A" ] }, + #30e4876a: { #c1127ea9: 22 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 32, + #f9005968: 1, + #21793419: ({ #c7b317f4: 10, #c68b4ed6: 1 }, { #c68b4ed6: 22 }), + #d3368c8a: true + }, + { #c8ff724b: "B", #2cdb06fb: [ "B" ] }, + 33, + [ + <#f50d797e: + ({ + #d121c0bd: 34, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + 33, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 35, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "B" ] }, + { #c1127ea9: 36 }, + { + #d2e9b40c: "12683202677887858481", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 37, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 38 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 39, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "B" ] }, + { #c1127ea9: 40 }, + { + #d2e9b40c: "4655428711165100535", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 41, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 42 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cfe47fa6: + ({ + #d121c0bd: 43, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~B", #2cdb06fb: [ "~B", "B" ] }, + { #c1127ea9: 44 }, + { + #d2e9b40c: "7876366742276079110", + #f1a45f0e: true, + #3e64314e: true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 45, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 24 }, + { + #d2e9b40c: "10798876524598897542", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 45, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 46, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { + #fe288443: true, + #ef684b00: [ + { + #298801ac: <#fa100247: (8, false)>, + #21793419: ({ }, { }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 47, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A" ] + }, + #30e4876a: { #c1127ea9: 24 } + } + })> + } + ] + })>, + <#cc498dc1: + ({ + #d121c0bd: 48, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 49 }, + { + #d2e9b40c: "7710293714478488613", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 50, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 38 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 51, + #f9005968: 32, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 52 }, + { + #d2e9b40c: "16903082029399050859", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 53, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 42 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 32, #1a9a7e84: true }, + { + #2dba2742: [ 8 ], + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 43, + #c8ff724b: { #c8ff724b: "~B", #2cdb06fb: [ "~B", "B" ] }, + #30e4876a: { #c1127ea9: 44 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 54, + #f9005968: 1, + #21793419: ({ #c7b317f4: 11, #c68b4ed6: 1 }, { #c68b4ed6: 11 }), + #d3368c8a: true + }, + { #c8ff724b: "C", #2cdb06fb: [ "C" ] }, + 55, + [ + <#f50d797e: + ({ + #d121c0bd: 56, + #f9005968: 54, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "C", #2cdb06fb: [ "C", "C" ] }, + 55, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 54, #1a9a7e84: true }, + { #f1ae3b70: true })>, + <#f173dfc2: + ({ + #d121c0bd: 57, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + { #c8ff724b: "f", #2cdb06fb: [ "f" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "4928059564287848975", + #f1a45f0e: true, + #ebe3c415: 57, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 58, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 10 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 59, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c68b4ed6: 6 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 60, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A" ] + }, + #30e4876a: { #c1127ea9: 24 } + } + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 61, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 5 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 8 }, + { + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 60, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A" ] + }, + #30e4876a: { #c1127ea9: 24 } + } + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 62, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 3 }, + { #c68b4ed6: 6 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 63, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { #30e4876a: { #c1127ea9: 33 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 45, + #c8ff724b: { + #c8ff724b: "B", + #2cdb06fb: [ "B", "B" ] + }, + #30e4876a: { #c1127ea9: 24 } + } + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 64, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 5 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 33 }, + { + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 63, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { #30e4876a: { #c1127ea9: 33 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 45, + #c8ff724b: { + #c8ff724b: "B", + #2cdb06fb: [ "B", "B" ] + }, + #30e4876a: { #c1127ea9: 24 } + } + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 65, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 3 }, + { #c68b4ed6: 13 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 12 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 67, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 68, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { #c1127ea9: 33 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 64, + #c8ff724b: { + #c8ff724b: "b", + #2cdb06fb: [ "b" ] + }, + #30e4876a: { #c1127ea9: 33 } + } + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { #c709e154: <#d3b492c8> })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#ef2d1ac9>, + #fa1a3bd3: [ { #c8ff724b: "A" } ] + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 71, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 12 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "ap", #2cdb06fb: [ "ap" ] }, + { #c1127ea9: 70 }, + { + #fe93c404: + <#c3b129f9: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 67, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 68, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 33 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 64, + #c8ff724b: { + #c8ff724b: "b", + #2cdb06fb: [ "b" ] + }, + #30e4876a: { + #c1127ea9: 33 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { #c709e154: <#d3b492c8> })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#ef2d1ac9>, + #fa1a3bd3: [ { #c8ff724b: "A" } ] + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 72, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 3 }, + { #c68b4ed6: 32 }) + }, + [ + <#c3746570: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 31 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 74, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 75, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a" ] + }, + #30e4876a: { #c1127ea9: 8 } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { #c709e154: <#d3b492c8> })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { #c91e0a14: <#0366c75f>, #fa1a3bd3: [] }, + { #c1127ea9: 69 }, + "dynamic_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 76, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 31 }) + }, + { #c8ff724b: "b1", #2cdb06fb: [ "b1" ] }, + { #c1127ea9: 69 }, + { + #fe93c404: + <#c3746570: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 31 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 74, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 75, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 8 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a" ] + }, + #30e4876a: { + #c1127ea9: 8 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { #c709e154: <#d3b492c8> })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #c91e0a14: <#0366c75f>, + #fa1a3bd3: [] + }, + { #c1127ea9: 69 }, + "dynamic_cast")> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 77, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 3 }, + { #c68b4ed6: 32 }) + }, + [ + <#c3746570: + ({ + #d121c0bd: 78, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 31 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 29 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 80, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 29 }) + }, + [], + { + #30e4876a: { #c1127ea9: 70 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { #c1127ea9: 70 } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { #c91e0a14: <#0366c75f>, #fa1a3bd3: [] }, + { #c1127ea9: 69 }, + "dynamic_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 31 }) + }, + { #c8ff724b: "b2", #2cdb06fb: [ "b2" ] }, + { #c1127ea9: 69 }, + { + #fe93c404: + <#c3746570: + ({ + #d121c0bd: 78, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 31 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 29 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 80, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 29 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 69 } }, + { + #c91e0a14: <#0366c75f>, + #fa1a3bd3: [] + }, + { #c1127ea9: 69 }, + "dynamic_cast")> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 82, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 3 }, + { #c68b4ed6: 31 }) + }, + [ + <#c3746570: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 28 }, { #c68b4ed6: 28 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 85, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { + #30e4876a: { #c1127ea9: 70 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { #c1127ea9: 70 } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 86 } }, + { #c91e0a14: <#0366c75f>, #fa1a3bd3: [] }, + { #c1127ea9: 86 }, + "dynamic_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 87, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 30 }) + }, + { #c8ff724b: "c", #2cdb06fb: [ "c" ] }, + { #c1127ea9: 86 }, + { + #fe93c404: + <#c3746570: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 85, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 86 } }, + { + #c91e0a14: <#0366c75f>, + #fa1a3bd3: [] + }, + { #c1127ea9: 86 }, + "dynamic_cast")> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 88, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 3 }, + { #c68b4ed6: 33 }) + }, + [ + <#c3746570: + ({ + #d121c0bd: 89, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 32 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 90, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 91, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 92, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c91e0a14: <#33e323e2>, #fa1a3bd3: [] }, + { #c1127ea9: 93 }, + "dynamic_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 94, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 32 }) + }, + { #c8ff724b: "ar", #2cdb06fb: [ "ar" ] }, + { #c1127ea9: 93 }, + { + #fe93c404: + <#c3746570: + ({ + #d121c0bd: 89, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 32 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 90, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 91, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 92, + #21793419: + ({ + #c68b4ed6: 30 + }, + { + #c68b4ed6: 30 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ + "ap" + ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 70 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + }, + { #c1127ea9: 93 }, + "dynamic_cast")> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 95, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, + { #c68b4ed6: 33 }) + }, + [ + <#c3746570: + ({ + #d121c0bd: 96, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 32 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 97, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 98, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 99, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ], + { + #30e4876a: { #c1127ea9: 33 }, + #0e89e422: <#28055b85> + }, + { #c91e0a14: <#0366c75f>, #fa1a3bd3: [] }, + { #c1127ea9: 100 }, + "dynamic_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 101, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 32 }) + }, + { #c8ff724b: "br", #2cdb06fb: [ "br" ] }, + { #c1127ea9: 100 }, + { + #fe93c404: + <#c3746570: + ({ + #d121c0bd: 96, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 32 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 97, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 98, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 99, + #21793419: + ({ + #c68b4ed6: 30 + }, + { + #c68b4ed6: 30 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ + "ap" + ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 70 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ], + { + #30e4876a: { #c1127ea9: 33 }, + #0e89e422: <#28055b85> + }, + { + #c91e0a14: <#0366c75f>, + #fa1a3bd3: [] + }, + { #c1127ea9: 100 }, + "dynamic_cast")> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 102, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, + { #c68b4ed6: 33 }) + }, + [ + <#c3746570: + ({ + #d121c0bd: 103, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 32 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 104, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 105, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 106, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ "ap" ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 70 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ], + { + #30e4876a: { #c1127ea9: 55 }, + #0e89e422: <#28055b85> + }, + { #c91e0a14: <#0366c75f>, #fa1a3bd3: [] }, + { #c1127ea9: 107 }, + "dynamic_cast")> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 108, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 32 }) + }, + { #c8ff724b: "cr", #2cdb06fb: [ "cr" ] }, + { #c1127ea9: 107 }, + { + #fe93c404: + <#c3746570: + ({ + #d121c0bd: 103, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 32 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 104, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 30 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 105, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 106, + #21793419: + ({ + #c68b4ed6: 30 + }, + { + #c68b4ed6: 30 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 71, + #c8ff724b: { + #c8ff724b: "ap", + #2cdb06fb: [ + "ap" + ] + }, + #30e4876a: { + #c1127ea9: 70 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 70 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#ea58d852> })> + ], + { + #30e4876a: { #c1127ea9: 55 }, + #0e89e422: <#28055b85> + }, + { + #c91e0a14: <#0366c75f>, + #fa1a3bd3: [] + }, + { #c1127ea9: 107 }, + "dynamic_cast")> + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 109, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 110, + { })> + ], + { }, + { + #e870593a: "tests/dynamic_cast.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 111 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 112 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 113 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 116 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 117 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 121 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 139 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 140 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 141 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 142 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 143 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 144 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 145 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 146 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 147 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 149 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 150 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 151 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 152 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 153 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 154 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 155 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 156 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 157 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 158 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 159 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 160 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 161 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 162 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 163 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 164 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 165 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 166 })>, + <#2e6cf4ea: ({ #d121c0bd: 167 })>, + <#2e6cf4ea: ({ #d121c0bd: 168 })>, + <#2e6cf4ea: ({ #d121c0bd: 169 })>, + <#22d546dd: ({ #d121c0bd: 170 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 171 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 172 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 173 }, { #c1127ea9: 111 })>, + <#22d546dd: ({ #d121c0bd: 174 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 175 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 176 }, 177)>, + <#d3d219f7: ({ #d121c0bd: 178 }, { #c1127ea9: 116, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 179 }, { #c1127ea9: 113, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 180 }, { #c1127ea9: 113 })>, + <#d80cb60b: ({ #d121c0bd: 181 }, 182)>, + <#da0c5ecf: + ({ #d121c0bd: 183 }, + { #cd26765d: { #c1127ea9: 181 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 70 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 11 }, { #f9c96be9: { #c1127ea9: 111 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 93 }, { #c1127ea9: 8 })>, + <#0b08cd60: ({ #d121c0bd: 16 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 184 }, + { #f9c96be9: { #c1127ea9: 93 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#26796f6a: + ({ #d121c0bd: 14 }, + { #f9c96be9: { #c1127ea9: 93 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#295746e6: ({ #d121c0bd: 20 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 185 }, + { #f9c96be9: { #c1127ea9: 93 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 18 }, + { #f9c96be9: { #c1127ea9: 93 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 22 }, { #f9c96be9: { #c1127ea9: 111 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 33 }, 32)>, + <#0b08cd60: ({ #d121c0bd: 100 }, { #c1127ea9: 33 })>, + <#0b08cd60: ({ #d121c0bd: 38 }, { #c1127ea9: 33, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 186 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 38 } ] })>, + <#26796f6a: + ({ #d121c0bd: 36 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 38 } ] })>, + <#295746e6: ({ #d121c0bd: 42 }, { #c1127ea9: 33 })>, + <#26796f6a: + ({ #d121c0bd: 187 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 42 } ] })>, + <#26796f6a: + ({ #d121c0bd: 40 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 42 } ] })>, + <#26796f6a: + ({ #d121c0bd: 44 }, { #f9c96be9: { #c1127ea9: 111 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 55 }, 54)>, + <#26796f6a: + ({ #d121c0bd: 188 }, { #f9c96be9: { #c1127ea9: 111 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 189 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#26796f6a: + ({ #d121c0bd: 27 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#26796f6a: + ({ #d121c0bd: 190 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 30 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 24 }, { #f9c96be9: { #c1127ea9: 111 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 191 }, { #f9c96be9: { #c1127ea9: 111 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 192 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 38 } ] })>, + <#26796f6a: + ({ #d121c0bd: 49 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 38 } ] })>, + <#26796f6a: + ({ #d121c0bd: 193 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 42 } ] })>, + <#26796f6a: + ({ #d121c0bd: 52 }, + { #f9c96be9: { #c1127ea9: 111 } }, + { #08ec7593: [ { #c1127ea9: 42 } ] })>, + <#d3d219f7: ({ #d121c0bd: 69 }, { #c1127ea9: 33 })>, + <#d3d219f7: ({ #d121c0bd: 86 }, { #c1127ea9: 55 })>, + <#0b08cd60: ({ #d121c0bd: 107 }, { #c1127ea9: 55 })>, + <#0098a8c5: ({ #d121c0bd: 194 }, { #fcd148e8: 170 })>, + <#2e3d736c: ({ #d121c0bd: 195 }, { #c1127ea9: 194 })>, + <#19e1ef85: + ({ #d121c0bd: 196, #26f32be5: 195 }, + { #0b680f7d: { #c1127ea9: 195 }, #c3687459: 197 })>, + <#19e1ef85: + ({ #d121c0bd: 110, #26f32be5: 195 }, + { #0b680f7d: { #c1127ea9: 196 }, #c3687459: 109 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/expr_with_cleanups.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/expr_with_cleanups.cpp.exp new file mode 100644 index 000000000..86371a3e7 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/expr_with_cleanups.cpp.exp @@ -0,0 +1,2824 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/expr_with_cleanups.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 13, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "X", #2cdb06fb: [ "X" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X" ] }, + 8, + [], + { }, + <#01fae064>, + { #33244202: 0 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#cc498dc1: + ({ + #d121c0bd: 11, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X" ] }, + { #c1127ea9: 12 }, + { + #d2e9b40c: "4951616904021883133", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 14 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 15, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, { #c68b4ed6: 14 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X" ] }, + { #c1127ea9: 16 }, + { + #d2e9b40c: "11474741413113936247", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 17, + #21793419: ({ #c68b4ed6: 5 }, { #c68b4ed6: 13 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 18 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 19, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 3 }, { #c68b4ed6: 25 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "X" ] }, + { #c1127ea9: 20 }, + { + #d2e9b40c: "3547081667308014059", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 21, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 24 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 18 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 22, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, { #c68b4ed6: 6 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~X", #2cdb06fb: [ "~X", "X" ] }, + { #c1127ea9: 23 }, + { #d2e9b40c: "9850251229546392500", #f1a45f0e: true }, + { })> + ], + { }, + <#01fae064>, + { #33244202: 7, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 22, + #c8ff724b: { #c8ff724b: "~X", #2cdb06fb: [ "~X", "X" ] }, + #30e4876a: { #c1127ea9: 23 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 24, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, + { #c7b317f4: 18, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y" ] }, + 25, + [ + <#f50d797e: + ({ + #d121c0bd: 26, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + 25, + [], + { }, + <#01fae064>, + { #33244202: 0 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 27, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#cc498dc1: + ({ + #d121c0bd: 28, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 12 }, + { + #d2e9b40c: "14898886720565199942", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 29, + #21793419: ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 14 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 30, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 3 }, { #c68b4ed6: 6 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~Y", #2cdb06fb: [ "~Y", "Y" ] }, + { #c1127ea9: 23 }, + { #d2e9b40c: "11799330211249239787", #f1a45f0e: true }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 31, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 32 }, + { + #d2e9b40c: "7125450473324676530", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 33, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 34 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 31, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 35, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + [])> + }, + { #fe288443: true })> + ], + { }, + <#01fae064>, + { #33244202: 24, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 30, + #c8ff724b: { #c8ff724b: "~Y", #2cdb06fb: [ "~Y", "Y" ] }, + #30e4876a: { #c1127ea9: 23 } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 36, + #21793419: ({ #c7b317f4: 19, #c68b4ed6: 1 }, { #c68b4ed6: 6 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "f", #2cdb06fb: [ "f" ] }, + { #c1127ea9: 37 }, + { + #d2e9b40c: "10279154687993237354", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 38, + #21793419: ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 8 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 39, + #21793419: ({ #c7b317f4: 20, #c68b4ed6: 1 }, { #c68b4ed6: 6 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "g", #2cdb06fb: [ "g" ] }, + { #c1127ea9: 40 }, + { + #d2e9b40c: "9626291071610925118", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 41, + #21793419: ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 25 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 42, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + { #c8ff724b: "h", #2cdb06fb: [ "h" ] }, + { #c1127ea9: 43 }, + { + #d2e9b40c: "4941587955358707969", + #f1a45f0e: true, + #ebe3c415: 42, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 44, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 10 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 45, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 3 }, + { #c68b4ed6: 9 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 46, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 8 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 47, + #21793419: + ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + [], + { #30e4876a: { #c1127ea9: 14 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X" ] + }, + #30e4876a: { #c1127ea9: 12 } + } + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 48, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 8 }, + { + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 46, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 8 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 47, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 7 }) + }, + [], + { #30e4876a: { #c1127ea9: 14 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X" ] + }, + #30e4876a: { #c1127ea9: 12 } + } + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 49, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, + { #c68b4ed6: 16 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 50, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 15 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 51, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 15 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 52, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 53, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 54, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 55, + #21793419: + ({ + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 15 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 56, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + < + #e9db58be: + ( + { + #d121c0bd: + 57, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 36, + #c8ff724b: { + #c8ff724b: + "f", + #2cdb06fb: [ + "f" + ] + }, + #30e4876a: { + #c1127ea9: + 37 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 58 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: + [] + })>, + <#d27fbfe6: + ({ + #d121c0bd: + 59, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + < + #e5067ee9: + ( + { + #d121c0bd: + 60, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: + 61, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 62, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#3f28859a: + ({ + #d121c0bd: + 63, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: + 64, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 65, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 66, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 14 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "2" + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "X", + #2cdb06fb: [ + "X", "X" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #e715f735: + 67 + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c91e0a14: + <#1904f090>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 8 + })> + ], + { + #30e4876a: { + #c1127ea9: + 8, + #ea1a680e: + true + } + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 8, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 15, + #c8ff724b: { + #c8ff724b: + "X", + #2cdb06fb: [ + "X", "X" + ] + }, + #30e4876a: { + #c1127ea9: + 16 + } + }, + #f02c40d1: + true, + #30155d65: + true + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #e715f735: + 68 + })> + ], + { + #30e4876a: { + #c1127ea9: 8 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 8 + } + }, + { #e715f735: 69 })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + } + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 15, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X" ] + }, + #30e4876a: { #c1127ea9: 16 } + }, + #f02c40d1: true, + #30155d65: true + })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 70, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 15 }) + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 8 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 50, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 51, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 52, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 53, + #21793419: + ({ #c68b4ed6: 9 }, + { + #c68b4ed6: 15 + }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 54, + #21793419: + ({ + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 15 + }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: + 55, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 15 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 56, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 57, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 36, + #c8ff724b: { + #c8ff724b: + "f", + #2cdb06fb: [ + "f" + ] + }, + #30e4876a: { + #c1127ea9: + 37 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 58 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: + [] + })>, + <#d27fbfe6: + ({ + #d121c0bd: + 59, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 60, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: + 61, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 62, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#3f28859a: + ({ + #d121c0bd: + 63, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: + 64, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 65, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 66, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 14 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "2" + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "X", + #2cdb06fb: [ + "X", "X" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #e715f735: + 67 + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c91e0a14: + <#1904f090>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 8 + })> + ], + { + #30e4876a: { + #c1127ea9: + 8, + #ea1a680e: + true + } + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 8, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 15, + #c8ff724b: { + #c8ff724b: + "X", + #2cdb06fb: [ + "X", "X" + ] + }, + #30e4876a: { + #c1127ea9: + 16 + } + }, + #f02c40d1: + true, + #30155d65: + true + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #e715f735: + 68 + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #e715f735: 69 + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + } + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 15, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X" ] + }, + #30e4876a: { #c1127ea9: 16 } + }, + #f02c40d1: true, + #30155d65: true + })> + ], + { #30e4876a: { #c1127ea9: 8 } }, + { })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 71, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, + { #c68b4ed6: 16 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 72, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 15 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 15 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 74, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 75, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 76, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 77, + #21793419: + ({ + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 15 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 78, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + < + #e9db58be: + ( + { + #d121c0bd: + 79, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 40 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 39, + #c8ff724b: { + #c8ff724b: + "g", + #2cdb06fb: [ + "g" + ] + }, + #30e4876a: { + #c1127ea9: + 40 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 80 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: + [] + })>, + <#d27fbfe6: + ({ + #d121c0bd: + 81, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + < + #e5067ee9: + ( + { + #d121c0bd: + 82, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: + 83, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 84, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#3f28859a: + ({ + #d121c0bd: + 85, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: + 86, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 87, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 88, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 14 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "3" + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 28, + #c8ff724b: { + #c8ff724b: + "Y", + #2cdb06fb: [ + "Y", "Y" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #e715f735: + 89 + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c91e0a14: + <#1904f090>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 25 + })> + ], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + } + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 31, + #c8ff724b: { + #c8ff724b: + "Y", + #2cdb06fb: [ + "Y", "Y" + ] + }, + #30e4876a: { + #c1127ea9: + 32 + } + }, + #f02c40d1: + true, + #30155d65: + true + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #e715f735: + 90 + })> + ], + { + #30e4876a: { + #c1127ea9: 25 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { #e715f735: 91 })> + ], + { + #30e4876a: { + #c1127ea9: 25, + #ea1a680e: true + } + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 25, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 31, + #c8ff724b: { + #c8ff724b: "Y", + #2cdb06fb: [ "Y", "Y" ] + }, + #30e4876a: { #c1127ea9: 32 } + }, + #f02c40d1: true, + #30155d65: true + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 92, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 15 }) + }, + { #c8ff724b: "c", #2cdb06fb: [ "c" ] }, + { #c1127ea9: 25 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 72, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 74, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 15 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 75, + #21793419: + ({ #c68b4ed6: 9 }, + { + #c68b4ed6: 15 + }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 76, + #21793419: + ({ + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 15 + }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: + 77, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 15 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 78, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 79, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 40 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 39, + #c8ff724b: { + #c8ff724b: + "g", + #2cdb06fb: [ + "g" + ] + }, + #30e4876a: { + #c1127ea9: + 40 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 80 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: + [] + })>, + <#d27fbfe6: + ({ + #d121c0bd: + 81, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 82, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: + 83, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 84, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#3f28859a: + ({ + #d121c0bd: + 85, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: + 86, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 87, + #21793419: + ( + { + #c68b4ed6: + 11 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 88, + #21793419: + ( + { + #c68b4ed6: + 13 + }, + { + #c68b4ed6: + 13 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 14 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "3" + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 28, + #c8ff724b: { + #c8ff724b: + "Y", + #2cdb06fb: [ + "Y", "Y" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #e715f735: + 89 + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c91e0a14: + <#1904f090>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 25 + })> + ], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + } + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 31, + #c8ff724b: { + #c8ff724b: + "Y", + #2cdb06fb: [ + "Y", "Y" + ] + }, + #30e4876a: { + #c1127ea9: + 32 + } + }, + #f02c40d1: + true, + #30155d65: + true + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #e715f735: + 90 + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #e715f735: 91 + })> + ], + { + #30e4876a: { + #c1127ea9: 25, + #ea1a680e: true + } + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 25, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 31, + #c8ff724b: { + #c8ff724b: "Y", + #2cdb06fb: [ "Y", "Y" ] + }, + #30e4876a: { #c1127ea9: 32 } + }, + #f02c40d1: true, + #30155d65: true + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { })> + })> + ])>, + <#d0cddcea: + ({ + #d121c0bd: 93, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#105d7ada: + ({ + #d121c0bd: 94, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 95, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 96, + #21793419: + ({ #c68b4ed6: 5 }, + { #c68b4ed6: 5 }) + }, + [], + { + #30e4876a: { #c1127ea9: 20 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#e7d5f344>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "operator=", + #2cdb06fb: [ + "operator=", "X" + ] + }, + #30e4876a: { #c1127ea9: 20 } + } + })> + ], + { #30e4876a: { #c1127ea9: 97 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#e9db58be: + ({ + #d121c0bd: 98, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 48, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a" ] + }, + #30e4876a: { #c1127ea9: 8 } + } + })>, + <#c27b9a39: + ({ + #d121c0bd: 99, + #21793419: + ({ #c68b4ed6: 7 }, { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 100, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 10 }) + }, + [ + <#d27fbfe6: + ({ + #d121c0bd: 101, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 10 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 102, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 103, + #21793419: + ({ + #c68b4ed6: + 7 + }, + { + #c68b4ed6: + 7 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 104, + #21793419: + ( + { + #c68b4ed6: + 7 + }, + { + #c68b4ed6: + 7 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 37 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: + 36, + #c8ff724b: { + #c8ff724b: + "f", + #2cdb06fb: [ + "f" + ] + }, + #30e4876a: { + #c1127ea9: + 37 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 58 + } + }, + { + #c91e0a14: + <#210490b0>, + #fa1a3bd3: [] + })>, + <#d27fbfe6: + ({ + #d121c0bd: 105, + #21793419: + ({ + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: + 106, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + < + #c3b129f9: + ( + { + #d121c0bd: + 107, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 108, + #21793419: + ( + { + #c68b4ed6: + 9 + }, + { + #c68b4ed6: + 9 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 8 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 48, + #c8ff724b: { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + #30e4876a: { + #c1127ea9: + 8 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 8, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + })> + ], + { + #30e4876a: { + #c1127ea9: + 8 + } + }, + { + #c369ebbe: { + #c709e154: + <#034d69b7>, + #ec05e4a8: + 15, + #c8ff724b: { + #c8ff724b: + "X", + #2cdb06fb: [ + "X", "X" + ] + }, + #30e4876a: { + #c1127ea9: + 16 + } + }, + #30155d65: + true + })> + ], + { + #30e4876a: { + #c1127ea9: 8 + } + }, + { + #e715f735: 109 + })> + ], + { + #30e4876a: { + #c1127ea9: 8 + } + })> + ], + { + #30e4876a: { #c1127ea9: 8 } + }, + { #e715f735: 110 })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + } + }, + { + #c91e0a14: <#33e323e2>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 8, + #ea1a680e: true + }, + #0e89e422: <#28055b85> + }, + { })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + })> + ], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { })> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 111, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 112, + { })> + ], + { }, + { + #e870593a: "tests/expr_with_cleanups.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 113 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 116 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 117 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 14 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 121 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 139 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 140 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 141 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 142 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 143 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 144 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 145 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 146 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 147 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 149 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 150 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 151 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 152 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 153 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 154 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 155 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 156 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 157 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 158 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 159 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 160 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 161 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 162 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 163 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 164 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 165 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 166 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 167 })>, + <#2e6cf4ea: ({ #d121c0bd: 168 })>, + <#2e6cf4ea: ({ #d121c0bd: 169 })>, + <#2e6cf4ea: ({ #d121c0bd: 170 })>, + <#22d546dd: ({ #d121c0bd: 171 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 172 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 173 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 174 }, { #c1127ea9: 113 })>, + <#22d546dd: ({ #d121c0bd: 175 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 176 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 177 }, 178)>, + <#d3d219f7: ({ #d121c0bd: 179 }, { #c1127ea9: 14, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 180 }, { #c1127ea9: 115, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 181 }, { #c1127ea9: 115 })>, + <#d80cb60b: ({ #d121c0bd: 182 }, 183)>, + <#da0c5ecf: + ({ #d121c0bd: 184 }, + { #cd26765d: { #c1127ea9: 182 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 185 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 12 }, + { #f9c96be9: { #c1127ea9: 113 } }, + { #08ec7593: [ { #c1127ea9: 14 } ] })>, + <#0b08cd60: ({ #d121c0bd: 18 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 16 }, + { #f9c96be9: { #c1127ea9: 113 } }, + { #08ec7593: [ { #c1127ea9: 18 } ] })>, + <#0b08cd60: ({ #d121c0bd: 186 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 20 }, + { #f9c96be9: { #c1127ea9: 186 } }, + { #08ec7593: [ { #c1127ea9: 18 } ] })>, + <#26796f6a: + ({ #d121c0bd: 43 }, { #f9c96be9: { #c1127ea9: 113 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 187 }, { #f9c96be9: { #c1127ea9: 113 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 25 }, 24)>, + <#d3d219f7: ({ #d121c0bd: 188 }, { #c1127ea9: 25 })>, + <#26796f6a: + ({ #d121c0bd: 189 }, { #f9c96be9: { #c1127ea9: 113 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 37 }, + { #f9c96be9: { #c1127ea9: 8 } }, + { #08ec7593: [ { #c1127ea9: 8 } ] })>, + <#26796f6a: + ({ #d121c0bd: 40 }, + { #f9c96be9: { #c1127ea9: 25 } }, + { #08ec7593: [ { #c1127ea9: 25 } ] })>, + <#26796f6a: + ({ #d121c0bd: 23 }, { #f9c96be9: { #c1127ea9: 113 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 58 }, { #c1127ea9: 37 })>, + <#0b08cd60: ({ #d121c0bd: 34 }, { #c1127ea9: 25, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 190 }, + { #f9c96be9: { #c1127ea9: 113 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#26796f6a: + ({ #d121c0bd: 191 }, + { #f9c96be9: { #c1127ea9: 113 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#d3d219f7: ({ #d121c0bd: 80 }, { #c1127ea9: 40 })>, + <#26796f6a: + ({ #d121c0bd: 32 }, + { #f9c96be9: { #c1127ea9: 113 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#d3d219f7: ({ #d121c0bd: 97 }, { #c1127ea9: 20 })>, + <#0098a8c5: ({ #d121c0bd: 192 }, { #fcd148e8: 171 })>, + <#2e3d736c: ({ #d121c0bd: 193 }, { #c1127ea9: 192 })>, + <#19e1ef85: + ({ #d121c0bd: 194, #26f32be5: 193 }, + { #0b680f7d: { #c1127ea9: 193 }, #c3687459: 195 })>, + <#19e1ef85: + ({ #d121c0bd: 112, #26f32be5: 193 }, + { #0b680f7d: { #c1127ea9: 194 }, #c3687459: 111 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/filter.sh b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/filter.sh new file mode 100755 index 000000000..25fef3611 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/filter.sh @@ -0,0 +1,6 @@ +#/bin/bash +# Copyright (c) 2015-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. +"$@" | bdump diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/friend.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/friend.cpp.exp new file mode 100644 index 000000000..12c8f4e81 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/friend.cpp.exp @@ -0,0 +1,420 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#37b901fc: + ({ + #d121c0bd: 7, + #21793419: + ({ #c3bbce7c: "tests/friend.cpp", #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 9, #c68b4ed6: 22 }) + }, + { #c8ff724b: "AnotherClass", #2cdb06fb: [ "AnotherClass" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 8, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 9, #c68b4ed6: 22 }) + }, + { + #c8ff724b: "AnotherClass", + #2cdb06fb: [ "AnotherClass" ] + }, + 9, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { }, + "8348715085918813141", + { + #e43971cf: 7, + #0de52551: [ <#37e21eda: { #c1127ea9: 10 }> ] + })> + ] + })>, + <#37b901fc: + ({ + #d121c0bd: 11, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, + { #c7b317f4: 16, #c68b4ed6: 1 }) + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 12, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, + { #c7b317f4: 16, #c68b4ed6: 1 }) + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y" ] }, + 13, + [ + <#f50d797e: + ({ + #d121c0bd: 14, + #f9005968: 12, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + 13, + [], + { }, + <#c5b1f8a9>, + { #33244202: 12 }, + { })>, + <#1e196208: + ({ + #d121c0bd: 15, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, + { #c68b4ed6: 32 }), + #0b0695a4: <#1b87f4c9> + }, + <#37e21eda: 16>)>, + <#1e196208: + ({ + #d121c0bd: 17, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c7b317f4: 15, #c68b4ed6: 16 }), + #0b0695a4: <#1b87f4c9> + }, + <#2d3f7c8a: + <#37b901fc: + ({ + #d121c0bd: 18, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c7b317f4: 15, #c68b4ed6: 16 }) + }, + { + #c8ff724b: "AnotherClass", + #2cdb06fb: [ "AnotherClass" ] + }, + { })>>)>, + <#cc498dc1: + ({ + #d121c0bd: 19, + #f9005968: 12, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 8 }, + { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 20 }, + { + #d2e9b40c: "17039860285578718334", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 19, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 22, + #f9005968: 12, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 23 }, + { + #d2e9b40c: "10269173081916450237", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 24, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 25 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 26, + #f9005968: 12, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 27 }, + { + #d2e9b40c: "15856009432989426751", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 28, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 29 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 12, #1a9a7e84: true }, + { #f1ae3b70: true }, + "12207844931495093295", + { + #e43971cf: 11, + #0de52551: [ <#37e21eda: { #c1127ea9: 30 }> ] + })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 31, + #21793419: ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "y1", #2cdb06fb: [ "y1" ] }, + { #c1127ea9: 32 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 33, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [], + { #30e4876a: { #c1127ea9: 32 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "Y", + #2cdb06fb: [ "Y", "Y" ] + }, + #30e4876a: { #c1127ea9: 20 } + } + })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 34, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 35, + { })> + ], + { }, + { + #e870593a: "tests/friend.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 36 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 90 })>, + <#2e6cf4ea: ({ #d121c0bd: 91 })>, + <#2e6cf4ea: ({ #d121c0bd: 92 })>, + <#2e6cf4ea: ({ #d121c0bd: 93 })>, + <#22d546dd: ({ #d121c0bd: 94 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 97 }, { #c1127ea9: 36 })>, + <#22d546dd: ({ #d121c0bd: 98 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 100 }, 101)>, + <#d3d219f7: ({ #d121c0bd: 102 }, { #c1127ea9: 30, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 103 }, { #c1127ea9: 38, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 104 }, { #c1127ea9: 38 })>, + <#d80cb60b: ({ #d121c0bd: 105 }, 106)>, + <#da0c5ecf: + ({ #d121c0bd: 107 }, + { #cd26765d: { #c1127ea9: 105 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 108 })>, + <#f3f3711a: ({ #d121c0bd: 109 })>, + <#ece2635f: ({ #d121c0bd: 110 })>, + <#ece2635f: ({ #d121c0bd: 111 })>, + <#d49f978d: ({ #d121c0bd: 112 })>, + <#f3f3711a: ({ #d121c0bd: 113 })>, + <#ece2635f: ({ #d121c0bd: 114 })>, + <#ece2635f: ({ #d121c0bd: 115 })>, + <#d49f978d: ({ #d121c0bd: 116 })>, + <#d3d219f7: ({ #d121c0bd: 117 }, { #c1127ea9: 108 })>, + <#d3d219f7: ({ #d121c0bd: 118 }, { #c1127ea9: 113 })>, + <#ece2635f: ({ #d121c0bd: 119 })>, + <#ece2635f: ({ #d121c0bd: 120 })>, + <#263b5f37: ({ #d121c0bd: 121, #26f32be5: 120 })>, + <#f3f3711a: ({ #d121c0bd: 122 })>, + <#f3f3711a: ({ #d121c0bd: 123 })>, + <#ece2635f: ({ #d121c0bd: 124 })>, + <#ece2635f: ({ #d121c0bd: 125 })>, + <#d49f978d: ({ #d121c0bd: 126 })>, + <#d80cb60b: ({ #d121c0bd: 13 }, 12)>, + <#ece2635f: ({ #d121c0bd: 32, #26f32be5: 13 })>, + <#dd64b59b: ({ #d121c0bd: 127, #26f32be5: 30 })>, + <#d3d219f7: ({ #d121c0bd: 10 }, { #c1127ea9: 30 })>, + <#d3d219f7: ({ #d121c0bd: 128 }, { #c1127ea9: 127 })>, + <#d80cb60b: ({ #d121c0bd: 9 }, 8)>, + <#ece2635f: ({ #d121c0bd: 129, #26f32be5: 9 })>, + <#263b5f37: ({ #d121c0bd: 16, #26f32be5: 9 })>, + <#f3f3711a: ({ #d121c0bd: 130 })>, + <#26796f6a: + ({ #d121c0bd: 131 }, { #f9c96be9: { #c1127ea9: 36 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 132 }, { #f9c96be9: { #c1127ea9: 36 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 25 }, { #c1127ea9: 13, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 133 }, + { #f9c96be9: { #c1127ea9: 36 } }, + { #08ec7593: [ { #c1127ea9: 25 } ] })>, + <#26796f6a: + ({ #d121c0bd: 23 }, + { #f9c96be9: { #c1127ea9: 36 } }, + { #08ec7593: [ { #c1127ea9: 25 } ] })>, + <#295746e6: ({ #d121c0bd: 29 }, { #c1127ea9: 13 })>, + <#26796f6a: + ({ #d121c0bd: 134 }, + { #f9c96be9: { #c1127ea9: 36 } }, + { #08ec7593: [ { #c1127ea9: 29 } ] })>, + <#26796f6a: + ({ #d121c0bd: 27 }, + { #f9c96be9: { #c1127ea9: 36 } }, + { #08ec7593: [ { #c1127ea9: 29 } ] })>, + <#26796f6a: + ({ #d121c0bd: 20 }, { #f9c96be9: { #c1127ea9: 36 } }, { })>, + <#0098a8c5: ({ #d121c0bd: 135 }, { #fcd148e8: 94 })>, + <#2e3d736c: ({ #d121c0bd: 136 }, { #c1127ea9: 135 })>, + <#19e1ef85: + ({ #d121c0bd: 137, #26f32be5: 136 }, + { #0b680f7d: { #c1127ea9: 136 }, #c3687459: 138 })>, + <#19e1ef85: + ({ #d121c0bd: 35, #26f32be5: 136 }, + { #0b680f7d: { #c1127ea9: 137 }, #c3687459: 34 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/function_template.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/function_template.cpp.exp new file mode 100644 index 000000000..d2855cf7f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/function_template.cpp.exp @@ -0,0 +1,885 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#c589b11c: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/function_template.cpp", + #c7b317f4: 8, + #c68b4ed6: 1 + }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "get", #2cdb06fb: [ "get" ] }, + { + #dfe08e08: [ + <#f173dfc2: + ({ + #d121c0bd: 8, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "get", #2cdb06fb: [ "get" ] }, + { #c1127ea9: 9 }, + { + #d2e9b40c: "18441705267350886400", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 7 }, + { #c68b4ed6: 9 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 11 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 8, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 12, + #21793419: + ({ #c68b4ed6: 12 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 13, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 14, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 15, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 11 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 10, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ])> + ])>, + #f3c2adb0: { + #e43971cf: 7, + #0de52551: [ <#37e21eda: { #c1127ea9: 16 }> ] + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 17, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "get", #2cdb06fb: [ "get" ] }, + { #c1127ea9: 18 }, + { + #d2e9b40c: "1909523640421882241", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 19, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 7 }, + { #c68b4ed6: 9 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 17, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 12 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 22, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 23, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 24, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 20 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x" ] + }, + #30e4876a: { #c1127ea9: 20 } + } + })> + ], + { #30e4876a: { #c1127ea9: 20 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ])> + ])>, + #f3c2adb0: { + #e43971cf: 7, + #0de52551: [ <#37e21eda: { #c1127ea9: 25 }> ] + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 26, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "get", #2cdb06fb: [ "get" ] }, + { #c1127ea9: 27 }, + { + #d2e9b40c: "2862116284697721030", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 28, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 7 }, + { #c68b4ed6: 9 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 29 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 26, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 30, + #21793419: + ({ #c68b4ed6: 12 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 31, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 29 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 28, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x" ] + }, + #30e4876a: { #c1127ea9: 29 } + } + })> + ], + { #30e4876a: { #c1127ea9: 29 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })> + ])> + ])>, + #f3c2adb0: { + #e43971cf: 7, + #0de52551: [ <#37e21eda: { #c1127ea9: 34 }> ] + } + })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 35, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, + { #c7b317f4: 17, #c68b4ed6: 1 }) + }, + { #c8ff724b: "get", #2cdb06fb: [ "get" ] }, + { #c1127ea9: 36 }, + { + #d2e9b40c: "8674435321115121355", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 37, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 9 }, { #c68b4ed6: 13 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 38 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 35, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 39, + #21793419: + ({ #c68b4ed6: 16 }, { #c7b317f4: 17, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 40, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 3 }, + { #c68b4ed6: 14 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 41, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 14 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 42, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { #30e4876a: { #c1127ea9: 38 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#c3b129f9: + ({ + #d121c0bd: 43, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 14 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 44, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 14 }) + }, + [], + { + #30e4876a: { #c1127ea9: 38 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 37, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x" ] + }, + #30e4876a: { #c1127ea9: 38 } + } + })> + ], + { #30e4876a: { #c1127ea9: 38 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 38 } }, + { #c709e154: <#003ad3e4> })> + ])> + ])>, + #f3c2adb0: { + #e43971cf: 7, + #0de52551: [ <#37e21eda: { #c1127ea9: 38 }> ] + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 45, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, + { #c7b317f4: 27, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test", #2cdb06fb: [ "test" ] }, + { #c1127ea9: 46 }, + { + #d2e9b40c: "18241244337164948030", + #f1a45f0e: true, + #ebe3c415: 45, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 47, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 13 }, + { #c7b317f4: 27, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 48, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, + { #c68b4ed6: 9 }) + }, + [], + [ + <#11c182d1: + ({ + #d121c0bd: 49, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "c", #2cdb06fb: [ "c" ] }, + { #c1127ea9: 25 }, + { })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 50, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [], + [ + <#11c182d1: + ({ + #d121c0bd: 51, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 9 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "f", #2cdb06fb: [ "f" ] }, + { #c1127ea9: 34 }, + { })> + ])>, + <#d49390e5: + ({ + #d121c0bd: 52, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 53, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { #c1127ea9: 25 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 49, + #c8ff724b: { + #c8ff724b: "c", + #2cdb06fb: [ "c" ] + }, + #30e4876a: { #c1127ea9: 25 } + } + })>, + <#c59ea513: + ({ + #d121c0bd: 54, + #21793419: + ({ #c68b4ed6: 7 }, { #c68b4ed6: 12 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 55, + #21793419: + ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 56, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 7 }) + }, + [], + { + #30e4876a: { #c1127ea9: 18 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 17, + #c8ff724b: { + #c8ff724b: "get", + #2cdb06fb: [ "get" ] + }, + #30e4876a: { #c1127ea9: 18 } + }, + #e3ab889b: { + #c709e154: <#de0c0392>, + #ec05e4a8: 7, + #c8ff724b: { + #c8ff724b: "get", + #2cdb06fb: [ "get" ] + } + } + })> + ], + { #30e4876a: { #c1127ea9: 57 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 58, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 59, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { + #30e4876a: { #c1127ea9: 25 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 49, + #c8ff724b: { + #c8ff724b: "c", + #2cdb06fb: [ "c" ] + }, + #30e4876a: { #c1127ea9: 25 } + } + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 20 } })> + ], + { + #30e4876a: { #c1127ea9: 25 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#009aba4f> })>, + <#d49390e5: + ({ + #d121c0bd: 60, + #21793419: + ({ #c7b317f4: 26, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 61, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { + #30e4876a: { #c1127ea9: 34 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 51, + #c8ff724b: { + #c8ff724b: "f", + #2cdb06fb: [ "f" ] + }, + #30e4876a: { #c1127ea9: 34 } + } + })>, + <#c59ea513: + ({ + #d121c0bd: 62, + #21793419: + ({ #c68b4ed6: 7 }, { #c68b4ed6: 12 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 63, + #21793419: + ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 64, + #21793419: + ({ #c68b4ed6: 7 }, + { #c68b4ed6: 7 }) + }, + [], + { + #30e4876a: { #c1127ea9: 27 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 26, + #c8ff724b: { + #c8ff724b: "get", + #2cdb06fb: [ "get" ] + }, + #30e4876a: { #c1127ea9: 27 } + }, + #e3ab889b: { + #c709e154: <#de0c0392>, + #ec05e4a8: 7, + #c8ff724b: { + #c8ff724b: "get", + #2cdb06fb: [ "get" ] + } + } + })> + ], + { #30e4876a: { #c1127ea9: 65 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 67, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { + #30e4876a: { #c1127ea9: 34 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 51, + #c8ff724b: { + #c8ff724b: "f", + #2cdb06fb: [ "f" ] + }, + #30e4876a: { #c1127ea9: 34 } + } + })> + ], + { #30e4876a: { #c1127ea9: 34 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 29 } })> + ], + { + #30e4876a: { #c1127ea9: 34 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#009aba4f> })> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 68, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 69, + { })> + ], + { }, + { + #e870593a: "tests/function_template.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 70 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 16 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 100 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 103 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 106 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 107 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 109 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 110 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 111 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 112 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 113 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 116 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 117 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 121 })>, + <#2e6cf4ea: ({ #d121c0bd: 122 })>, + <#2e6cf4ea: ({ #d121c0bd: 123 })>, + <#2e6cf4ea: ({ #d121c0bd: 124 })>, + <#22d546dd: ({ #d121c0bd: 125 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 128 }, { #c1127ea9: 70 })>, + <#22d546dd: ({ #d121c0bd: 129 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 131 }, 132)>, + <#d3d219f7: ({ #d121c0bd: 133 }, { #c1127ea9: 38, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 134 }, { #c1127ea9: 25, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 135 }, { #c1127ea9: 25 })>, + <#d80cb60b: ({ #d121c0bd: 136 }, 137)>, + <#da0c5ecf: + ({ #d121c0bd: 138 }, + { #cd26765d: { #c1127ea9: 136 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 139 })>, + <#f3f3711a: ({ #d121c0bd: 140 })>, + <#26796f6a: + ({ #d121c0bd: 141 }, + { #f9c96be9: { #c1127ea9: 139 } }, + { #08ec7593: [ { #c1127ea9: 139 } ] })>, + <#26796f6a: + ({ #d121c0bd: 142 }, + { #f9c96be9: { #c1127ea9: 140 } }, + { #08ec7593: [ { #c1127ea9: 140 } ] })>, + <#26796f6a: + ({ #d121c0bd: 36 }, + { #f9c96be9: { #c1127ea9: 38 } }, + { #08ec7593: [ { #c1127ea9: 38 } ] })>, + <#dd64b59b: ({ #d121c0bd: 143, #26f32be5: 38 })>, + <#26796f6a: + ({ #d121c0bd: 144 }, + { #f9c96be9: { #c1127ea9: 143 } }, + { #08ec7593: [ { #c1127ea9: 143 } ] })>, + <#26796f6a: + ({ #d121c0bd: 145 }, + { #f9c96be9: { #c1127ea9: 16 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#dd64b59b: ({ #d121c0bd: 11, #26f32be5: 16 })>, + <#26796f6a: + ({ #d121c0bd: 9 }, + { #f9c96be9: { #c1127ea9: 11 } }, + { #08ec7593: [ { #c1127ea9: 11 } ] })>, + <#26796f6a: + ({ #d121c0bd: 46 }, { #f9c96be9: { #c1127ea9: 70 } }, { })>, + <#dd64b59b: ({ #d121c0bd: 20, #26f32be5: 25 })>, + <#26796f6a: + ({ #d121c0bd: 146 }, + { #f9c96be9: { #c1127ea9: 25 } }, + { #08ec7593: [ { #c1127ea9: 25 } ] })>, + <#26796f6a: + ({ #d121c0bd: 18 }, + { #f9c96be9: { #c1127ea9: 20 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#d3d219f7: ({ #d121c0bd: 147 }, { #c1127ea9: 146 })>, + <#d3d219f7: ({ #d121c0bd: 57 }, { #c1127ea9: 18 })>, + <#dd64b59b: ({ #d121c0bd: 29, #26f32be5: 34 })>, + <#26796f6a: + ({ #d121c0bd: 148 }, + { #f9c96be9: { #c1127ea9: 34 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#26796f6a: + ({ #d121c0bd: 27 }, + { #f9c96be9: { #c1127ea9: 29 } }, + { #08ec7593: [ { #c1127ea9: 29 } ] })>, + <#d3d219f7: ({ #d121c0bd: 149 }, { #c1127ea9: 148 })>, + <#d3d219f7: ({ #d121c0bd: 65 }, { #c1127ea9: 27 })>, + <#0098a8c5: ({ #d121c0bd: 150 }, { #fcd148e8: 125 })>, + <#2e3d736c: ({ #d121c0bd: 151 }, { #c1127ea9: 150 })>, + <#19e1ef85: + ({ #d121c0bd: 152, #26f32be5: 151 }, + { #0b680f7d: { #c1127ea9: 151 }, #c3687459: 153 })>, + <#19e1ef85: + ({ #d121c0bd: 69, #26f32be5: 151 }, + { #0b680f7d: { #c1127ea9: 152 }, #c3687459: 68 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/generic_selector_expression.c.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/generic_selector_expression.c.exp new file mode 100644 index 000000000..cb619f7f5 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/generic_selector_expression.c.exp @@ -0,0 +1,897 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/generic_selector_expression.c", + #c7b317f4: 9, + #c68b4ed6: 1 + }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test_typename", #2cdb06fb: [ "test_typename" ] }, + { #c1127ea9: 8 }, + { + #ebe3c415: 7, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 9, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 25 }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, + { #c68b4ed6: 9 }) + }, + [], + [ + <#11c182d1: + ({ + #d121c0bd: 11, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #d3368c8a: true + }, + { #c8ff724b: "s", #2cdb06fb: [ "s" ] }, + { #c1127ea9: 12 }, + { })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 13, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 3 }, + { #c68b4ed6: 8 }) + }, + [], + [ + <#11c182d1: + ({ + #d121c0bd: 14, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #d3368c8a: true + }, + { #c8ff724b: "y", #2cdb06fb: [ "y" ] }, + { #c1127ea9: 15 }, + { })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 16, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, + { #c68b4ed6: 18 }) + }, + [ + <#c835bf2a: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 18, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [ + <#02335a3f: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 20, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 12 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "s", + #2cdb06fb: [ "s" ] + }, + #30e4876a: { + #c1127ea9: 12 + } + } + })> + ], + { + #30e4876a: { #c1127ea9: 12 }, + #0e89e422: <#28055b85> + })> + ], + { #30e4876a: { #c1127ea9: 12 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })>, + <#0fb8fb71: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 22, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 23, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 24, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #31b87f71: + <#0fb8fb71: + ({ + #d121c0bd: 22, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 11 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 15 }, + { + #fe93c404: + <#c835bf2a: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 18, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#02335a3f: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 20, + #21793419: + ({ + #c68b4ed6: 11 + }, + { + #c68b4ed6: 11 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "s", + #2cdb06fb: [ + "s" + ] + }, + #30e4876a: { + #c1127ea9: 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 12 + }, + #0e89e422: <#28055b85> + })> + ], + { #30e4876a: { #c1127ea9: 12 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#0fb8fb71: + ({ + #d121c0bd: 21, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 22, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 23, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 24, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #31b87f71: + <#0fb8fb71: + ({ + #d121c0bd: 22, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { + #30e4876a: { #c1127ea9: 15 } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 26, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, + { #c68b4ed6: 18 }) + }, + [ + <#c835bf2a: + ({ + #d121c0bd: 27, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 28, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [ + <#02335a3f: + ({ + #d121c0bd: 29, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 30, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 15 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 14, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ "y" ] + }, + #30e4876a: { + #c1127ea9: 15 + } + } + })> + ], + { + #30e4876a: { #c1127ea9: 15 }, + #0e89e422: <#28055b85> + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })>, + <#0fb8fb71: + ({ + #d121c0bd: 31, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 34, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #31b87f71: + <#0fb8fb71: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 35, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 11 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "z", #2cdb06fb: [ "z" ] }, + { #c1127ea9: 15 }, + { + #fe93c404: + <#c835bf2a: + ({ + #d121c0bd: 27, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 28, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#02335a3f: + ({ + #d121c0bd: 29, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 30, + #21793419: + ({ + #c68b4ed6: 11 + }, + { + #c68b4ed6: 11 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 15 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 14, + #c8ff724b: { + #c8ff724b: "y", + #2cdb06fb: [ + "y" + ] + }, + #30e4876a: { + #c1127ea9: 15 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 15 + }, + #0e89e422: <#28055b85> + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#0fb8fb71: + ({ + #d121c0bd: 31, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 34, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { + #31b87f71: + <#0fb8fb71: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { + #30e4876a: { #c1127ea9: 15 } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + })> + })> + ])>, + <#df3bdb38: + ({ + #d121c0bd: 36, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c68b4ed6: 14 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 37, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 14 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 38, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 39, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 15 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 25, + #c8ff724b: { + #c8ff724b: "x", + #2cdb06fb: [ "x" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 40, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 14 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 41, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 14 }) + }, + [], + { + #30e4876a: { #c1127ea9: 15 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 35, + #c8ff724b: { + #c8ff724b: "z", + #2cdb06fb: [ "z" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 15 } }, + { #c709e154: <#0031aa01> })> + ])> + ])> + })>, + <#21116177: + ({ + #d121c0bd: 42, + #21793419: ({ #c7b317f4: 15, #c68b4ed6: 2 }, { #c68b4ed6: 2 }) + })>, + <#0f3f4d35: + ({ #d121c0bd: 43, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 44, + { })> + ], + { }, + { + #e870593a: "tests/generic_selector_expression.c", + #e52854e9: <#3079cf66>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 45 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 12 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 15 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 96 })>, + <#2e6cf4ea: ({ #d121c0bd: 97 })>, + <#2e6cf4ea: ({ #d121c0bd: 98 })>, + <#2e6cf4ea: ({ #d121c0bd: 99 })>, + <#22d546dd: ({ #d121c0bd: 100 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 103 }, { #c1127ea9: 45 })>, + <#22d546dd: ({ #d121c0bd: 104 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 106 }, 107)>, + <#d3d219f7: ({ #d121c0bd: 108 }, { #c1127ea9: 15, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 109 }, { #c1127ea9: 12, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 110 }, { #c1127ea9: 12 })>, + <#d80cb60b: ({ #d121c0bd: 111 }, 112)>, + <#da0c5ecf: + ({ #d121c0bd: 113 }, + { #cd26765d: { #c1127ea9: 111 }, #11302019: 24 }, + 1)>, + <#26796f6a: ({ #d121c0bd: 8 }, { #f9c96be9: { #c1127ea9: 15 } }, { })>, + <#0098a8c5: ({ #d121c0bd: 114 }, { #fcd148e8: 100 })>, + <#2e3d736c: ({ #d121c0bd: 115 }, { #c1127ea9: 114 })>, + <#19e1ef85: + ({ #d121c0bd: 116, #26f32be5: 115 }, + { #0b680f7d: { #c1127ea9: 115 }, #c3687459: 117 })>, + <#19e1ef85: + ({ #d121c0bd: 44, #26f32be5: 115 }, + { #0b680f7d: { #c1127ea9: 116 }, #c3687459: 43 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheritance.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheritance.cpp.exp new file mode 100644 index 000000000..b81f9cbc8 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheritance.cpp.exp @@ -0,0 +1,1666 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/inheritance.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c68b4ed6: 26 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "sqrt", #2cdb06fb: [ "sqrt" ] }, + { #c1127ea9: 8 }, + { + #d2e9b40c: "4816046332438161094", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 9, + #21793419: ({ #c68b4ed6: 20 }, { #c68b4ed6: 20 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 10 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 11, + #21793419: ({ #c7b317f4: 8, #c68b4ed6: 1 }, { #c68b4ed6: 33 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "pow", #2cdb06fb: [ "pow" ] }, + { #c1127ea9: 12 }, + { + #d2e9b40c: "13660907022155764957", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 10 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 14, + #21793419: ({ #c68b4ed6: 27 }, { #c68b4ed6: 27 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 10 }, + { #0370b1b2: 1 })> + ] + })>, + <#f50d797e: + ({ + #d121c0bd: 15, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 21, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "Form", #2cdb06fb: [ "Form" ] }, + 16, + [ + <#f50d797e: + ({ + #d121c0bd: 17, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Form", #2cdb06fb: [ "Form", "Form" ] }, + 16, + [], + { }, + <#01fae064>, + { #33244202: 0 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 18, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 2 }, { #c68b4ed6: 9 }), + #0b0695a4: <#d6c054e3> + })>, + <#fb87d624: + ({ + #d121c0bd: 19, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, { #c68b4ed6: 10 }), + #d3368c8a: true, + #0b0695a4: <#d6c054e3> + }, + { #c8ff724b: "area", #2cdb06fb: [ "area", "Form" ] }, + { #c1127ea9: 10 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 20, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#fb87d624: + ({ + #d121c0bd: 21, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "color", #2cdb06fb: [ "color", "Form" ] }, + { #c1127ea9: 22 }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 23, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 3 }, { #c68b4ed6: 27 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "vmethod", #2cdb06fb: [ "vmethod", "Form" ] }, + { #c1127ea9: 24 }, + { + #d2e9b40c: "9163681093625571351", + #f1a45f0e: true, + #ebe3c415: 23, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 25, + #21793419: ({ #c68b4ed6: 26 }, { #c68b4ed6: 27 }) + }, + [])> + }, + { #f1c74d76: true })>, + <#29ca61ce: + ({ + #d121c0bd: 26, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 3 }, { #c68b4ed6: 41 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "getArea", #2cdb06fb: [ "getArea", "Form" ] }, + { #c1127ea9: 27 }, + { + #d2e9b40c: "261422336308970065", + #f1a45f0e: true, + #ebe3c415: 26, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 28, + #21793419: ({ #c68b4ed6: 20 }, { #c68b4ed6: 41 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 29, + #21793419: + ({ #c68b4ed6: 22 }, { #c68b4ed6: 35 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 30, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 35 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 31, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 35 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 29 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 33 + } + })> + ], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "area", + #2cdb06fb: [ "area", "Form" ] + }, + #c369ebbe: { + #c709e154: <#13c1049a>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "area", + #2cdb06fb: [ "area", "Form" ] + }, + #30e4876a: { #c1127ea9: 10 } + } + })> + ], + { #30e4876a: { #c1127ea9: 10 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ])> + ])> + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 34, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 3 }, { #c68b4ed6: 50 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "setArea", #2cdb06fb: [ "setArea", "Form" ] }, + { #c1127ea9: 35 }, + { + #d2e9b40c: "5322570675579474415", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 36, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 23 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "area", #2cdb06fb: [ "area" ] }, + { #c1127ea9: 10 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 34, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 37, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 50 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 38, + #21793419: + ({ #c68b4ed6: 31 }, { #c68b4ed6: 44 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 39, + #21793419: + ({ #c68b4ed6: 31 }, { #c68b4ed6: 37 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 40, + #21793419: + ({ #c68b4ed6: 31 }, + { #c68b4ed6: 31 }) + }, + [], + { #30e4876a: { #c1127ea9: 33 } })> + ], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "area", + #2cdb06fb: [ "area", "Form" ] + }, + #c369ebbe: { + #c709e154: <#13c1049a>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "area", + #2cdb06fb: [ "area", "Form" ] + }, + #30e4876a: { #c1127ea9: 10 } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 41, + #21793419: + ({ #c68b4ed6: 44 }, { #c68b4ed6: 44 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 42, + #21793419: + ({ #c68b4ed6: 44 }, + { #c68b4ed6: 44 }) + }, + [], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "area", + #2cdb06fb: [ "area" ] + }, + #30e4876a: { #c1127ea9: 10 } + } + })> + ], + { #30e4876a: { #c1127ea9: 10 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#009aba4f> })> + ])> + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 43, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "operator=", + #2cdb06fb: [ "operator=", "Form" ] + }, + { #c1127ea9: 44 }, + { + #d2e9b40c: "4640576070247419134", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 45, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 46 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 47, + #f9005968: 15, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "operator=", + #2cdb06fb: [ "operator=", "Form" ] + }, + { #c1127ea9: 48 }, + { + #d2e9b40c: "2917574045643344002", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 49, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 50 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 51, + #f9005968: 15, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~Form", #2cdb06fb: [ "~Form", "Form" ] }, + { #c1127ea9: 52 }, + { + #d2e9b40c: "7469005664164565375", + #f1a45f0e: true, + #3e64314e: true + }, + { })> + ], + { }, + <#01fae064>, + { #33244202: 15, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 51, + #c8ff724b: { + #c8ff724b: "~Form", + #2cdb06fb: [ "~Form", "Form" ] + }, + #30e4876a: { #c1127ea9: 52 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 53, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, + { #c7b317f4: 35, #c68b4ed6: 1 }) + }, + { #c8ff724b: "Circle", #2cdb06fb: [ "Circle" ] }, + 54, + [ + <#f50d797e: + ({ + #d121c0bd: 55, + #f9005968: 53, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Circle", #2cdb06fb: [ "Circle", "Circle" ] }, + 54, + [], + { }, + <#01fae064>, + { #33244202: 0 }, + { })>, + <#1cd5be29: + ({ + #d121c0bd: 56, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#29ca61ce: + ({ + #d121c0bd: 57, + #f9005968: 53, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 3 }, { #c68b4ed6: 28 }), + #1771a8d7: [ + <#d2b6cdbd: + ({ + #d121c0bd: 58, + #21793419: ({ #c68b4ed6: 18 }, { #c68b4ed6: 18 }) + })> + ], + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "vmethod", #2cdb06fb: [ "vmethod", "Circle" ] }, + { #c1127ea9: 24 }, + { + #d2e9b40c: "5817484235031938003", + #f1a45f0e: true, + #ebe3c415: 57, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 59, + #21793419: ({ #c68b4ed6: 27 }, { #c68b4ed6: 28 }) + }, + [])> + }, + { + #f1c74d76: true, + #cf8fba95: [ + { + #c709e154: <#e7d5f344>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "vmethod", + #2cdb06fb: [ "vmethod", "Form" ] + }, + #30e4876a: { #c1127ea9: 24 } + } + ] + })>, + <#29ca61ce: + ({ + #d121c0bd: 60, + #f9005968: 53, + #21793419: + ({ #c7b317f4: 26, #c68b4ed6: 3 }, + { #c7b317f4: 30, #c68b4ed6: 3 }), + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "getRatio", + #2cdb06fb: [ "getRatio", "Circle" ] + }, + { #c1127ea9: 27 }, + { + #d2e9b40c: "6347748275554434892", + #f1a45f0e: true, + #ebe3c415: 60, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 61, + #21793419: + ({ #c7b317f4: 26, #c68b4ed6: 21 }, + { #c7b317f4: 30, #c68b4ed6: 3 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 62, + #21793419: + ({ #c7b317f4: 27, #c68b4ed6: 5 }, + { #c68b4ed6: 13 }) + }, + [], + [ + <#11c182d1: + ({ + #d121c0bd: 63, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 12 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 10 }, + { })> + ])>, + <#d49390e5: + ({ + #d121c0bd: 64, + #21793419: + ({ #c7b317f4: 28, #c68b4ed6: 5 }, + { #c68b4ed6: 17 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 65, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 63, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a" ] + }, + #30e4876a: { #c1127ea9: 10 } + } + })>, + <#ee1808d0: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 9 }, { #c68b4ed6: 17 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 67, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 9 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 68, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 9 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 69, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 9 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 33 + } + }, + { + #c91e0a14: <#14e0f83b>, + #fa1a3bd3: [ + { #c8ff724b: "Form" } + ] + })> + ], + { #30e4876a: { #c1127ea9: 71 } }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "getArea", + #2cdb06fb: [ + "getArea", "Form" + ] + }, + #c369ebbe: { + #c709e154: <#e7d5f344>, + #ec05e4a8: 26, + #c8ff724b: { + #c8ff724b: "getArea", + #2cdb06fb: [ + "getArea", "Form" + ] + }, + #30e4876a: { #c1127ea9: 27 } + } + })> + ], + { #30e4876a: { #c1127ea9: 10 } })> + ], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#009aba4f> })>, + <#df3bdb38: + ({ + #d121c0bd: 72, + #21793419: + ({ #c7b317f4: 29, #c68b4ed6: 5 }, + { #c68b4ed6: 29 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 29 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 74, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 75, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { #c1127ea9: 8 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 7, + #c8ff724b: { + #c8ff724b: "sqrt", + #2cdb06fb: [ "sqrt" ] + }, + #30e4876a: { + #c1127ea9: 8 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 76 } }, + { + #c91e0a14: <#210490b0>, + #fa1a3bd3: [] + })>, + <#d49390e5: + ({ + #d121c0bd: 77, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 25 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 78, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 21 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 17 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 80, + #21793419: + ({ + #c68b4ed6: + 17 + }, + { + #c68b4ed6: + 17 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 10 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 63, + #c8ff724b: { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + #30e4876a: { + #c1127ea9: + 10 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 21 }, + { #c68b4ed6: 21 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 82, + #21793419: + ({ + #c68b4ed6: + 21 + }, + { + #c68b4ed6: + 21 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 22 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + { + #c91e0a14: + <#fd9b840d>, + #fa1a3bd3: [] + })> + ], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + { #c709e154: <#0033f531> })>, + <#d1b36d29: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 25 }, + { #c68b4ed6: 25 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + "3.1400000000000001")> + ], + { #30e4876a: { #c1127ea9: 10 } }, + { #c709e154: <#003ad3e4> })> + ], + { #30e4876a: { #c1127ea9: 10 } })> + ])> + ])> + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 84, + #f9005968: 53, + #21793419: + ({ #c7b317f4: 32, #c68b4ed6: 3 }, { #c68b4ed6: 76 }), + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "setRatio", + #2cdb06fb: [ "setRatio", "Circle" ] + }, + { #c1127ea9: 35 }, + { + #d2e9b40c: "8248811014851696566", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 85, + #21793419: ({ #c68b4ed6: 17 }, { #c68b4ed6: 24 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "diameter", #2cdb06fb: [ "diameter" ] }, + { #c1127ea9: 10 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 84, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 86, + #21793419: ({ #c68b4ed6: 34 }, { #c68b4ed6: 76 }) + }, + [ + <#ee1808d0: + ({ + #d121c0bd: 87, + #21793419: + ({ #c68b4ed6: 36 }, { #c68b4ed6: 73 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 88, + #21793419: + ({ #c68b4ed6: 36 }, { #c68b4ed6: 36 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 89, + #21793419: + ({ #c68b4ed6: 36 }, + { #c68b4ed6: 36 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 90, + #21793419: + ({ #c68b4ed6: 36 }, + { #c68b4ed6: 36 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 70 + } + })> + ], + { #30e4876a: { #c1127ea9: 33 } }, + { + #c91e0a14: <#14e0f83b>, + #fa1a3bd3: [ + { #c8ff724b: "Form" } + ] + })> + ], + { #30e4876a: { #c1127ea9: 71 } }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "setArea", + #2cdb06fb: [ "setArea", "Form" ] + }, + #c369ebbe: { + #c709e154: <#e7d5f344>, + #ec05e4a8: 34, + #c8ff724b: { + #c8ff724b: "setArea", + #2cdb06fb: [ "setArea", "Form" ] + }, + #30e4876a: { #c1127ea9: 35 } + } + })>, + <#d49390e5: + ({ + #d121c0bd: 91, + #21793419: + ({ #c68b4ed6: 44 }, { #c68b4ed6: 69 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 92, + #21793419: + ({ #c68b4ed6: 44 }, + { #c68b4ed6: 65 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 93, + #21793419: + ({ #c68b4ed6: 44 }, + { #c68b4ed6: 44 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 94, + #21793419: + ({ #c68b4ed6: 44 }, + { #c68b4ed6: 44 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "pow", + #2cdb06fb: [ + "pow" + ] + }, + #30e4876a: { + #c1127ea9: 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 95 + } + }, + { + #c91e0a14: <#210490b0>, + #fa1a3bd3: [] + })>, + <#d49390e5: + ({ + #d121c0bd: 96, + #21793419: + ({ #c68b4ed6: 48 }, + { #c68b4ed6: 59 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 97, + #21793419: + ({ #c68b4ed6: 48 }, + { #c68b4ed6: 48 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 98, + #21793419: + ({ + #c68b4ed6: + 48 + }, + { + #c68b4ed6: + 48 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 10 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: 85, + #c8ff724b: { + #c8ff724b: + "diameter", + #2cdb06fb: [ + "diameter" + ] + }, + #30e4876a: { + #c1127ea9: + 10 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#d1b36d29: + ({ + #d121c0bd: 99, + #21793419: + ({ #c68b4ed6: 59 }, + { #c68b4ed6: 59 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + "0.5")> + ], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + { #c709e154: <#003ad3e4> })>, + <#c3b129f9: + ({ + #d121c0bd: 100, + #21793419: + ({ #c68b4ed6: 64 }, + { #c68b4ed6: 64 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 101, + #21793419: + ({ #c68b4ed6: 64 }, + { #c68b4ed6: 64 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 22 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { + #30e4876a: { + #c1127ea9: 10 + } + }, + { + #c91e0a14: <#fd9b840d>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 10 } })>, + <#d1b36d29: + ({ + #d121c0bd: 102, + #21793419: + ({ #c68b4ed6: 69 }, + { #c68b4ed6: 69 }) + }, + [], + { #30e4876a: { #c1127ea9: 10 } }, + "3.1400000000000001")> + ], + { #30e4876a: { #c1127ea9: 10 } }, + { #c709e154: <#003ad3e4> })> + ], + { #30e4876a: { #c1127ea9: 103 } })> + ])> + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 104, + #f9005968: 53, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 3 }, { #c68b4ed6: 40 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "isDark", #2cdb06fb: [ "isDark", "Circle" ] }, + { #c1127ea9: 105 }, + { + #d2e9b40c: "1657580448964179997", + #f1a45f0e: true, + #ebe3c415: 104, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 106, + #21793419: ({ #c68b4ed6: 17 }, { #c68b4ed6: 40 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 107, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 37 }) + }, + [ + <#02335a3f: + ({ + #d121c0bd: 108, + #21793419: + ({ #c68b4ed6: 26 }, { #c68b4ed6: 37 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 109, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 35 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 110, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 111, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 112, + #21793419: + ({ + #c68b4ed6: + 27 + }, + { + #c68b4ed6: + 27 + }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: + 113, + #21793419: + ( + { + #c68b4ed6: + 27 + }, + { + #c68b4ed6: + 27 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 70 + } + })> + ], + { + #30e4876a: { + #c1127ea9: 33 + } + }, + { + #c91e0a14: + <#14e0f83b>, + #fa1a3bd3: [ + { + #c8ff724b: + "Form" + } + ] + })> + ], + { + #30e4876a: { + #c1127ea9: 22 + }, + #0e89e422: + <#28055b85> + }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "color", + #2cdb06fb: [ + "color", "Form" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: 21, + #c8ff724b: { + #c8ff724b: + "color", + #2cdb06fb: [ + "color", "Form" + ] + }, + #30e4876a: { + #c1127ea9: 22 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 22 + } + }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#0fb8fb71: + ({ + #d121c0bd: 114, + #21793419: + ({ #c68b4ed6: 35 }, + { #c68b4ed6: 35 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 22 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 115 } }, + { #c709e154: <#00003e2d> })> + ], + { #30e4876a: { #c1127ea9: 115 } })> + ])> + ])> + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 116, + #f9005968: 53, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "operator=", + #2cdb06fb: [ "operator=", "Circle" ] + }, + { #c1127ea9: 117 }, + { + #d2e9b40c: "15331083219049658522", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 118, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 119 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 120, + #f9005968: 53, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "operator=", + #2cdb06fb: [ "operator=", "Circle" ] + }, + { #c1127ea9: 121 }, + { + #d2e9b40c: "10302011452979039278", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 122, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 123 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 124, + #f9005968: 53, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~Circle", #2cdb06fb: [ "~Circle", "Circle" ] }, + { #c1127ea9: 125 }, + { + #d2e9b40c: "4580501627556196443", + #f1a45f0e: true, + #3e64314e: true + }, + { })> + ], + { }, + <#01fae064>, + { #33244202: 53, #1a9a7e84: true }, + { + #2dba2742: [ 16 ], + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 124, + #c8ff724b: { + #c8ff724b: "~Circle", + #2cdb06fb: [ "~Circle", "Circle" ] + }, + #30e4876a: { #c1127ea9: 125 } + } + })>, + <#0f3f4d35: + ({ #d121c0bd: 126, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 127, + { })> + ], + { }, + { + #e870593a: "tests/inheritance.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 103 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 10 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 139 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 140 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 141 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 142 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 143 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 144 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 145 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 146 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 147 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 149 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 150 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 151 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 152 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 153 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 154 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 155 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 156 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 157 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 158 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 159 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 160 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 161 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 162 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 163 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 164 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 165 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 166 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 167 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 168 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 169 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 170 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 171 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 172 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 173 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 174 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 175 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 176 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 177 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 178 })>, + <#2e6cf4ea: ({ #d121c0bd: 179 })>, + <#2e6cf4ea: ({ #d121c0bd: 180 })>, + <#2e6cf4ea: ({ #d121c0bd: 181 })>, + <#22d546dd: ({ #d121c0bd: 182 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 183 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 184 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 185 }, { #c1127ea9: 103 })>, + <#22d546dd: ({ #d121c0bd: 186 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 187 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 188 }, 189)>, + <#d3d219f7: ({ #d121c0bd: 190 }, { #c1127ea9: 22, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 191 }, { #c1127ea9: 128, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 192 }, { #c1127ea9: 128 })>, + <#d80cb60b: ({ #d121c0bd: 193 }, 194)>, + <#da0c5ecf: + ({ #d121c0bd: 195 }, + { #cd26765d: { #c1127ea9: 193 }, #11302019: 24 }, + 1)>, + <#26796f6a: + ({ #d121c0bd: 8 }, + { #f9c96be9: { #c1127ea9: 10 } }, + { #08ec7593: [ { #c1127ea9: 10 } ] })>, + <#26796f6a: + ({ #d121c0bd: 12 }, + { #f9c96be9: { #c1127ea9: 10 } }, + { #08ec7593: [ { #c1127ea9: 10 }, { #c1127ea9: 10 } ] })>, + <#d80cb60b: ({ #d121c0bd: 16 }, 15)>, + <#d3d219f7: ({ #d121c0bd: 33 }, { #c1127ea9: 16 })>, + <#26796f6a: + ({ #d121c0bd: 24 }, { #f9c96be9: { #c1127ea9: 103 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 27 }, { #f9c96be9: { #c1127ea9: 10 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 35 }, + { #f9c96be9: { #c1127ea9: 103 } }, + { #08ec7593: [ { #c1127ea9: 10 } ] })>, + <#0b08cd60: ({ #d121c0bd: 196 }, { #c1127ea9: 16 })>, + <#0b08cd60: ({ #d121c0bd: 46 }, { #c1127ea9: 16, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 197 }, + { #f9c96be9: { #c1127ea9: 196 } }, + { #08ec7593: [ { #c1127ea9: 46 } ] })>, + <#26796f6a: + ({ #d121c0bd: 44 }, + { #f9c96be9: { #c1127ea9: 196 } }, + { #08ec7593: [ { #c1127ea9: 46 } ] })>, + <#295746e6: ({ #d121c0bd: 50 }, { #c1127ea9: 16 })>, + <#26796f6a: + ({ #d121c0bd: 198 }, + { #f9c96be9: { #c1127ea9: 196 } }, + { #08ec7593: [ { #c1127ea9: 50 } ] })>, + <#26796f6a: + ({ #d121c0bd: 48 }, + { #f9c96be9: { #c1127ea9: 196 } }, + { #08ec7593: [ { #c1127ea9: 50 } ] })>, + <#26796f6a: + ({ #d121c0bd: 52 }, { #f9c96be9: { #c1127ea9: 103 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 54 }, 53)>, + <#d3d219f7: ({ #d121c0bd: 70 }, { #c1127ea9: 54 })>, + <#26796f6a: + ({ #d121c0bd: 105 }, { #f9c96be9: { #c1127ea9: 115 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 199 }, { #c1127ea9: 54 })>, + <#0b08cd60: ({ #d121c0bd: 119 }, { #c1127ea9: 54, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 200 }, + { #f9c96be9: { #c1127ea9: 199 } }, + { #08ec7593: [ { #c1127ea9: 119 } ] })>, + <#26796f6a: + ({ #d121c0bd: 117 }, + { #f9c96be9: { #c1127ea9: 199 } }, + { #08ec7593: [ { #c1127ea9: 119 } ] })>, + <#295746e6: ({ #d121c0bd: 123 }, { #c1127ea9: 54 })>, + <#26796f6a: + ({ #d121c0bd: 201 }, + { #f9c96be9: { #c1127ea9: 199 } }, + { #08ec7593: [ { #c1127ea9: 123 } ] })>, + <#26796f6a: + ({ #d121c0bd: 121 }, + { #f9c96be9: { #c1127ea9: 199 } }, + { #08ec7593: [ { #c1127ea9: 123 } ] })>, + <#26796f6a: + ({ #d121c0bd: 125 }, { #f9c96be9: { #c1127ea9: 103 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 76 }, { #c1127ea9: 8 })>, + <#d3d219f7: ({ #d121c0bd: 95 }, { #c1127ea9: 12 })>, + <#0098a8c5: ({ #d121c0bd: 202 }, { #fcd148e8: 182 })>, + <#2e3d736c: ({ #d121c0bd: 203 }, { #c1127ea9: 202 })>, + <#19e1ef85: + ({ #d121c0bd: 204, #26f32be5: 203 }, + { #0b680f7d: { #c1127ea9: 203 }, #c3687459: 205 })>, + <#19e1ef85: + ({ #d121c0bd: 127, #26f32be5: 203 }, + { #0b680f7d: { #c1127ea9: 204 }, #c3687459: 126 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheriting_constructor.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheriting_constructor.cpp.exp new file mode 100644 index 000000000..e76933ee4 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/inheriting_constructor.cpp.exp @@ -0,0 +1,678 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/inheriting_constructor.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 10, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, { #c68b4ed6: 11 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "14779048587651412014", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 12, + #21793419: ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 13 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 10, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 14, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 11 }) + }, + [])> + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 15, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 14 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "foo", #2cdb06fb: [ "foo", "A" ] }, + { #c1127ea9: 16 }, + { + #d2e9b40c: "11285596688767843576", + #f1a45f0e: true, + #ebe3c415: 15, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 17, + #21793419: ({ #c68b4ed6: 13 }, { #c68b4ed6: 14 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 18, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 19 }, + { + #d2e9b40c: "3430056695640597274", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 20, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 21 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 22, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 23 }, + { + #d2e9b40c: "1361265890968139694", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 24, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 25 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cfe47fa6: + ({ + #d121c0bd: 26, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~A", #2cdb06fb: [ "~A", "A" ] }, + { #c1127ea9: 27 }, + { + #d2e9b40c: "5328378654181921475", + #f1a45f0e: true, + #3e64314e: true + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 26, + #c8ff724b: { #c8ff724b: "~A", #2cdb06fb: [ "~A", "A" ] }, + #30e4876a: { #c1127ea9: 27 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 28, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "B", #2cdb06fb: [ "B" ] }, + 29, + [ + <#f50d797e: + ({ + #d121c0bd: 30, + #f9005968: 28, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + 29, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#c0e5c3ae: + ({ + #d121c0bd: 31, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, { #c68b4ed6: 12 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] })>, + <#39c4b314: + ({ + #d121c0bd: 32, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] })>, + <#39c4b314: + ({ + #d121c0bd: 33, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] })>, + <#39c4b314: + ({ + #d121c0bd: 34, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] })>, + <#cc498dc1: + ({ + #d121c0bd: 35, + #f9005968: 28, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 36 }, + { + #d2e9b40c: "10798876524598897542", + #f1a45f0e: true, + #3e64314e: true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 37, + #f9005968: 28, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 38 }, + { + #d2e9b40c: "7710293714478488613", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 39, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 40 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 41, + #f9005968: 28, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 42 }, + { + #d2e9b40c: "16903082029399050859", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 43, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 44 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 45, + #f9005968: 28, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 12 }, { #c68b4ed6: 12 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "B" ] }, + { #c1127ea9: 46 }, + { + #d2e9b40c: "18258347749069050656", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 47, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }), + #eb8a1f5a: true + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 13 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 45, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 48, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [])> + }, + { + #ef684b00: [ + { + #298801ac: <#fa100247: (8, false)>, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }), + #fe93c404: + <#364949d0: + ({ + #d121c0bd: 49, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 10, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + } + ] + })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 28, #1a9a7e84: true }, + { #2dba2742: [ 8 ] })>, + <#f173dfc2: + ({ + #d121c0bd: 50, + #21793419: ({ #c7b317f4: 16, #c68b4ed6: 1 }, { #c68b4ed6: 22 }) + }, + { #c8ff724b: "main", #2cdb06fb: [ "main" ] }, + { #c1127ea9: 51 }, + { + #f1a45f0e: true, + #ebe3c415: 50, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 52, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 22 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 53, + #21793419: ({ #c68b4ed6: 14 }, { #c68b4ed6: 20 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 54, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 19 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 55, + #21793419: + ({ #c68b4ed6: 18 }, { #c68b4ed6: 18 }) + }, + [], + { #30e4876a: { #c1127ea9: 13 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "5" + })> + ], + { #30e4876a: { #c1127ea9: 29 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 45, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "B" ] + }, + #30e4876a: { #c1127ea9: 46 } + } + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 56, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 19 }) + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 29 }, + { + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 54, + #21793419: + ({ #c68b4ed6: 16 }, + { #c68b4ed6: 19 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 55, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 18 }) + }, + [], + { #30e4876a: { #c1127ea9: 13 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "5" + })> + ], + { #30e4876a: { #c1127ea9: 29 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 45, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "B" ] + }, + #30e4876a: { #c1127ea9: 46 } + } + })> + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 57, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 58, + { })> + ], + { }, + { + #e870593a: "tests/inheriting_constructor.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 59 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 13 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 100 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 103 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 106 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 107 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 109 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 110 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 111 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 112 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 113 })>, + <#2e6cf4ea: ({ #d121c0bd: 114 })>, + <#2e6cf4ea: ({ #d121c0bd: 115 })>, + <#2e6cf4ea: ({ #d121c0bd: 116 })>, + <#22d546dd: ({ #d121c0bd: 117 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 120 }, { #c1127ea9: 59 })>, + <#22d546dd: ({ #d121c0bd: 121 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 123 }, 124)>, + <#d3d219f7: ({ #d121c0bd: 125 }, { #c1127ea9: 13, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 126 }, { #c1127ea9: 61, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 127 }, { #c1127ea9: 61 })>, + <#d80cb60b: ({ #d121c0bd: 128 }, 129)>, + <#da0c5ecf: + ({ #d121c0bd: 130 }, + { #cd26765d: { #c1127ea9: 128 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 131 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 11 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 13 } ] })>, + <#26796f6a: + ({ #d121c0bd: 16 }, { #f9c96be9: { #c1127ea9: 59 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 29 }, 28)>, + <#0b08cd60: ({ #d121c0bd: 21 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 132 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 21 } ] })>, + <#26796f6a: + ({ #d121c0bd: 19 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 21 } ] })>, + <#295746e6: ({ #d121c0bd: 25 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 133 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 25 } ] })>, + <#26796f6a: + ({ #d121c0bd: 23 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 25 } ] })>, + <#26796f6a: + ({ #d121c0bd: 36 }, { #f9c96be9: { #c1127ea9: 59 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 40 }, { #c1127ea9: 29, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 134 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 40 } ] })>, + <#26796f6a: + ({ #d121c0bd: 38 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 40 } ] })>, + <#26796f6a: + ({ #d121c0bd: 27 }, { #f9c96be9: { #c1127ea9: 59 } }, { })>, + <#295746e6: ({ #d121c0bd: 44 }, { #c1127ea9: 29 })>, + <#26796f6a: + ({ #d121c0bd: 135 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 44 } ] })>, + <#26796f6a: + ({ #d121c0bd: 42 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 44 } ] })>, + <#26796f6a: + ({ #d121c0bd: 51 }, { #f9c96be9: { #c1127ea9: 13 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 136 }, { #c1127ea9: 127 })>, + <#26796f6a: + ({ #d121c0bd: 137 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 13 } ] })>, + <#26796f6a: + ({ #d121c0bd: 46 }, + { #f9c96be9: { #c1127ea9: 59 } }, + { #08ec7593: [ { #c1127ea9: 13 } ] })>, + <#0098a8c5: ({ #d121c0bd: 138 }, { #fcd148e8: 117 })>, + <#2e3d736c: ({ #d121c0bd: 139 }, { #c1127ea9: 138 })>, + <#19e1ef85: + ({ #d121c0bd: 140, #26f32be5: 139 }, + { #0b680f7d: { #c1127ea9: 139 }, #c3687459: 141 })>, + <#19e1ef85: + ({ #d121c0bd: 58, #26f32be5: 139 }, + { #0b680f7d: { #c1127ea9: 140 }, #c3687459: 57 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/lambda.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/lambda.cpp.exp new file mode 100644 index 000000000..4aabd44a4 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/lambda.cpp.exp @@ -0,0 +1,6121 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 7, + #21793419: + ({ #c3bbce7c: "tests/lambda.cpp", #c7b317f4: 7, #c68b4ed6: 1 }, + { #c7b317f4: 17, #c68b4ed6: 1 }) + }, + { #c8ff724b: "main", #2cdb06fb: [ "main" ] }, + { #c1127ea9: 8 }, + { + #f1a45f0e: true, + #ebe3c415: 7, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 9, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 12 }, + { #c7b317f4: 17, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, + { #c68b4ed6: 11 }) + }, + [], + [ + <#11c182d1: + ({ + #d121c0bd: 11, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "m", #2cdb06fb: [ "m" ] }, + { #c1127ea9: 12 }, + { })>, + <#11c182d1: + ({ + #d121c0bd: 13, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 10 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "n", #2cdb06fb: [ "n" ] }, + { #c1127ea9: 12 }, + { })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 14, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 3 }, + { #c68b4ed6: 30 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 15, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 29 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 16, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 29 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 29 }) + }, + [ + <#cccbeffc: + ({ + #d121c0bd: 18, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 29 }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 29 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 20, + #21793419: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 21, + #21793419: + ( + { + #c68b4ed6: + 26 + }, + { + #c68b4ed6: + 26 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ])> + ])> + ], + { + #30e4876a: { + #c1127ea9: 22 + } + }, + { + #ec9ddfe2: + <#f50d797e: + ({ + #d121c0bd: 23, + #f9005968: 7, + #21793419: + ({ + #c68b4ed6: 12 + }, + { + #c68b4ed6: 12 + }), + #eb8a1f5a: true + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + 22, + [ + <#29ca61ce: + ({ + #d121c0bd: 24, + #f9005968: 23, + #21793419: + ({ + #c68b4ed6: + 15 + }, + { + #c68b4ed6: + 29 + }), + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: 25 + }, + { + #d2e9b40c: + "8700561857799965393", + #f1a45f0e: + true, + #3e64314e: + true, + #ebe3c415: 24, + #c11b7aa2: + <#d394bb73: + ( + { + #d121c0bd: + 19, + #21793419: + ( + { + #c68b4ed6: + 17 + }, + { + #c68b4ed6: + 29 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 20, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 21, + #21793419: + ( + { + #c68b4ed6: + 26 + }, + { + #c68b4ed6: + 26 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ])> + ])> + }, + { })>, + <#3f402a03: + ({ + #d121c0bd: 26, + #f9005968: 23, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 29 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator int (*)()", + #2cdb06fb: [ + "operator int (*)()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: 27 + }, + { + #d2e9b40c: + "13435645424728763319", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 28, + #f9005968: 23, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 29 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__invoke", + #2cdb06fb: [ + "__invoke", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: 29 + }, + { + #d2e9b40c: + "17605822925966688033", + #f1a45f0e: + true, + #3e64314e: + true, + #2b2043a3: + true + }, + { + #2b2043a3: + true + })>, + <#cfe47fa6: + ({ + #d121c0bd: 30, + #f9005968: 23, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: 31 + }, + { + #d2e9b40c: + "11922868141377072075", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 32, + #f9005968: 23, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: 33 + }, + { + #d2e9b40c: + "11530695906998885266", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 34, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 35 + }, + { + #0370b1b2: + 0 + })> + ] + }, + { + #fe288443: + true + })>, + <#cc498dc1: + ({ + #d121c0bd: 36, + #f9005968: 23, + #21793419: + ({ + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true, + #0a16e1f2: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: 37 + }, + { + #d2e9b40c: + "12828931072019093462", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 38, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 39 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: 36, + #c11b7aa2: + <#d394bb73: + ( + { + #d121c0bd: + 40, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [])> + }, + { + #fe288443: + true + })> + ], + { }, + <#01fae064>, + { + #33244202: 23, + #1a9a7e84: true + }, + { + #1411db39: { + #c709e154: + <#3266451c>, + #ec05e4a8: 30, + #c8ff724b: { + #c8ff724b: "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + #30e4876a: { + #c1127ea9: 31 + } + }, + #ff08b82d: { + #c709e154: + <#e7d5f344>, + #ec05e4a8: 24, + #c8ff724b: { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + #30e4876a: { + #c1127ea9: 25 + } + } + })> + })> + ], + { + #30e4876a: { #c1127ea9: 22 }, + #0e89e422: <#f44daff9> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 41 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + #30e4876a: { #c1127ea9: 37 } + }, + #f02c40d1: true + })> + ], + { #30e4876a: { #c1127ea9: 41 } }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 42, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 29 }) + }, + { #c8ff724b: "f", #2cdb06fb: [ "f" ] }, + { #c1127ea9: 41 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 15, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 29 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 16, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 29 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 12 }, + { #c68b4ed6: 29 }) + }, + [ + <#cccbeffc: + ({ + #d121c0bd: 18, + #21793419: + ({ + #c68b4ed6: 12 + }, + { + #c68b4ed6: 29 + }) + }, + [ + <#d394bb73: + ({ + #d121c0bd: 19, + #21793419: + ({ + #c68b4ed6: + 17 + }, + { + #c68b4ed6: + 29 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 20, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 21, + #21793419: + ( + { + #c68b4ed6: + 26 + }, + { + #c68b4ed6: + 26 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ])> + ])> + ], + { + #30e4876a: { + #c1127ea9: 22 + } + }, + { + #ec9ddfe2: + <#f50d797e: + ({ + #d121c0bd: + 23, + #f9005968: + 7, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + 22, + [ + <#29ca61ce: + ( + { + #d121c0bd: + 24, + #f9005968: + 23, + #21793419: + ( + { + #c68b4ed6: + 15 + }, + { + #c68b4ed6: + 29 + }), + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: + 25 + }, + { + #d2e9b40c: + "8700561857799965393", + #f1a45f0e: + true, + #3e64314e: + true, + #ebe3c415: + 24, + #c11b7aa2: + < + #d394bb73: + ( + { + #d121c0bd: + 19, + #21793419: + ( + { + #c68b4ed6: + 17 + }, + { + #c68b4ed6: + 29 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 20, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 26 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: + 21, + #21793419: + ( + { + #c68b4ed6: + 26 + }, + { + #c68b4ed6: + 26 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "1" + })> + ])> + ])> + }, + { })>, + <#3f402a03: + ( + { + #d121c0bd: + 26, + #f9005968: + 23, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 29 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator int (*)()", + #2cdb06fb: [ + "operator int (*)()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: + 27 + }, + { + #d2e9b40c: + "13435645424728763319", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#29ca61ce: + ( + { + #d121c0bd: + 28, + #f9005968: + 23, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 29 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__invoke", + #2cdb06fb: [ + "__invoke", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: + 29 + }, + { + #d2e9b40c: + "17605822925966688033", + #f1a45f0e: + true, + #3e64314e: + true, + #2b2043a3: + true + }, + { + #2b2043a3: + true + })>, + <#cfe47fa6: + ( + { + #d121c0bd: + 30, + #f9005968: + 23, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: + 31 + }, + { + #d2e9b40c: + "11922868141377072075", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#cc498dc1: + ( + { + #d121c0bd: + 32, + #f9005968: + 23, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: + 33 + }, + { + #d2e9b40c: + "11530695906998885266", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 34, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 35 + }, + { + #0370b1b2: + 0 + })> + ] + }, + { + #fe288443: + true + })>, + <#cc498dc1: + ( + { + #d121c0bd: + 36, + #f9005968: + 23, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }), + #eb8a1f5a: + true, + #0a16e1f2: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + #c1127ea9: + 37 + }, + { + #d2e9b40c: + "12828931072019093462", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 38, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 39 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: + 36, + #c11b7aa2: + < + #d394bb73: + ( + { + #d121c0bd: + 40, + #21793419: + ( + { + #c68b4ed6: + 12 + }, + { + #c68b4ed6: + 12 + }) + }, + [])> + }, + { + #fe288443: + true + })> + ], + { }, + <#01fae064>, + { + #33244202: + 23, + #1a9a7e84: + true + }, + { + #1411db39: { + #c709e154: + <#3266451c>, + #ec05e4a8: + 30, + #c8ff724b: { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 31 + } + }, + #ff08b82d: { + #c709e154: + <#e7d5f344>, + #ec05e4a8: + 24, + #c8ff724b: { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 25 + } + } + })> + })> + ], + { + #30e4876a: { + #c1127ea9: 22 + }, + #0e89e422: <#f44daff9> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 41 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + #30e4876a: { #c1127ea9: 37 } + }, + #f02c40d1: true + })> + ], + { #30e4876a: { #c1127ea9: 41 } }, + { })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 43, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, + { #c68b4ed6: 42 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 44, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 41 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 45, + #21793419: + ({ #c68b4ed6: 14 }, { #c68b4ed6: 41 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 46, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 41 }) + }, + [ + <#cccbeffc: + ({ + #d121c0bd: 47, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 41 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 48, + #21793419: + ({ #c68b4ed6: 16 }, + { #c68b4ed6: 16 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: 12 + } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 49, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 50, + #21793419: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 13, + #c8ff724b: { + #c8ff724b: + "n", + #2cdb06fb: [ + "n" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#d394bb73: + ({ + #d121c0bd: 51, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 41 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 52, + #21793419: + ({ + #c68b4ed6: + 31 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 53, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + < + #e9db58be: + ( + { + #d121c0bd: + 54, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + ], + { + #30e4876a: { + #c1127ea9: 55 + } + }, + { + #ec9ddfe2: + <#f50d797e: + ({ + #d121c0bd: 56, + #f9005968: 7, + #21793419: + ({ + #c68b4ed6: 14 + }, + { + #c68b4ed6: 14 + }), + #eb8a1f5a: true + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + 55, + [ + <#29ca61ce: + ({ + #d121c0bd: 57, + #f9005968: 56, + #21793419: + ({ + #c68b4ed6: + 27 + }, + { + #c68b4ed6: + 41 + }), + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: 58 + }, + { + #d2e9b40c: + "19264279795607331", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 59, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 26 + }) + }, + { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + { + #c1127ea9: + 12 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: 57, + #c11b7aa2: + <#d394bb73: + ( + { + #d121c0bd: + 51, + #21793419: + ( + { + #c68b4ed6: + 29 + }, + { + #c68b4ed6: + 41 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 52, + #21793419: + ( + { + #c68b4ed6: + 31 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 53, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 54, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 60, + #f9005968: 56, + #21793419: + ({ + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: 61 + }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 62, + #f9005968: 56, + #21793419: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: 12 + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 63, + #f9005968: 56, + #21793419: + ({ + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: 31 + }, + { + #d2e9b40c: + "16202408192376244884", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 64, + #f9005968: 56, + #21793419: + ({ + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: 65 + }, + { + #d2e9b40c: + "9965911517403679447", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 66, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 67 + }, + { + #0370b1b2: + 0 + })> + ] + }, + { + #fe288443: + true + })>, + <#cc498dc1: + ({ + #d121c0bd: 68, + #f9005968: 56, + #21793419: + ({ + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true, + #0a16e1f2: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: 69 + }, + { + #d2e9b40c: + "8193408137476215445", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 70, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 71 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: 68, + #c11b7aa2: + <#d394bb73: + ( + { + #d121c0bd: + 72, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [])> + }, + { + #fe288443: + true, + #ef684b00: [ + { + #298801ac: + < + #394a567a: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 60, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 61 + } + }>, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #fe93c404: + < + #090744cf: + ( + { + #d121c0bd: + 73, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#1bd2a1c5: + ({ + #d121c0bd: + 74, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 75, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 70, + #c8ff724b: { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + #30e4876a: { + #c1127ea9: + 71 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#f44daff9> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 71 + }, + "static_cast")> + ], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #f708701b: + true, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 60, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 61 + } + } + })> + }, + { + #298801ac: + < + #394a567a: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 62, + #c8ff724b: { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + }>, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #fe93c404: + < + #c3b129f9: + ( + { + #d121c0bd: + 76, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#090744cf: + ({ + #d121c0bd: + 77, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#1bd2a1c5: + ({ + #d121c0bd: + 78, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 79, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 70, + #c8ff724b: { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + #30e4876a: { + #c1127ea9: + 71 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#f44daff9> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 71 + }, + "static_cast")> + ], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#f44daff9> + }, + { + #f708701b: + true, + #c8ff724b: { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 62, + #c8ff724b: { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + } + ] + })> + ], + { }, + <#01fae064>, + { + #33244202: 56, + #1a9a7e84: true + }, + { + #1411db39: { + #c709e154: + <#3266451c>, + #ec05e4a8: 63, + #c8ff724b: { + #c8ff724b: "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: 31 + } + }, + #ff08b82d: { + #c709e154: + <#e7d5f344>, + #ec05e4a8: 57, + #c8ff724b: { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: 58 + } + }, + #370550a5: [ + { + #fc0986ed: + <#133bc7d1>, + #3f91f855: true, + #d525b006: { + #c709e154: + <#004196c7>, + #ec05e4a8: 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + }, + #e5466e35: + ({ + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + { + #fc0986ed: + <#37307b77>, + #3f91f855: true, + #d525b006: { + #c709e154: + <#004196c7>, + #ec05e4a8: 13, + #c8ff724b: { + #c8ff724b: + "n", + #2cdb06fb: [ + "n" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + }, + #e5466e35: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + } + ] + })> + })> + ], + { + #30e4876a: { #c1127ea9: 55 }, + #0e89e422: <#f44daff9> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 80 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 68, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { #c1127ea9: 69 } + }, + #f02c40d1: true + })> + ], + { #30e4876a: { #c1127ea9: 80 } }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 41 }) + }, + { #c8ff724b: "bar", #2cdb06fb: [ "bar" ] }, + { #c1127ea9: 80 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 44, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 41 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 45, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 41 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 46, + #21793419: + ({ #c68b4ed6: 14 }, + { #c68b4ed6: 41 }) + }, + [ + <#cccbeffc: + ({ + #d121c0bd: 47, + #21793419: + ({ + #c68b4ed6: 14 + }, + { + #c68b4ed6: 41 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 48, + #21793419: + ({ + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 49, + #21793419: + ({ + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 50, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 13, + #c8ff724b: { + #c8ff724b: + "n", + #2cdb06fb: [ + "n" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#d394bb73: + ({ + #d121c0bd: 51, + #21793419: + ({ + #c68b4ed6: + 29 + }, + { + #c68b4ed6: + 41 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 52, + #21793419: + ( + { + #c68b4ed6: + 31 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 53, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 54, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + ], + { + #30e4876a: { + #c1127ea9: 55 + } + }, + { + #ec9ddfe2: + <#f50d797e: + ({ + #d121c0bd: + 56, + #f9005968: + 7, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + 55, + [ + <#29ca61ce: + ( + { + #d121c0bd: + 57, + #f9005968: + 56, + #21793419: + ( + { + #c68b4ed6: + 27 + }, + { + #c68b4ed6: + 41 + }), + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: + 58 + }, + { + #d2e9b40c: + "19264279795607331", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 59, + #21793419: + ( + { + #c68b4ed6: + 22 + }, + { + #c68b4ed6: + 26 + }) + }, + { + #c8ff724b: + "a", + #2cdb06fb: [ + "a" + ] + }, + { + #c1127ea9: + 12 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: + 57, + #c11b7aa2: + < + #d394bb73: + ( + { + #d121c0bd: + 51, + #21793419: + ( + { + #c68b4ed6: + 29 + }, + { + #c68b4ed6: + 41 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 52, + #21793419: + ( + { + #c68b4ed6: + 31 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 53, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 54, + #21793419: + ( + { + #c68b4ed6: + 38 + }, + { + #c68b4ed6: + 38 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + }, + { })>, + <#fb87d624: + ( + { + #d121c0bd: + 60, + #f9005968: + 56, + #21793419: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: + 61 + }, + { })>, + <#fb87d624: + ( + { + #d121c0bd: + 62, + #f9005968: + 56, + #21793419: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: + 12 + }, + { })>, + <#cfe47fa6: + ( + { + #d121c0bd: + 63, + #f9005968: + 56, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: + 31 + }, + { + #d2e9b40c: + "16202408192376244884", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#cc498dc1: + ( + { + #d121c0bd: + 64, + #f9005968: + 56, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: + 65 + }, + { + #d2e9b40c: + "9965911517403679447", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 66, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 67 + }, + { + #0370b1b2: + 0 + })> + ] + }, + { + #fe288443: + true + })>, + <#cc498dc1: + ( + { + #d121c0bd: + 68, + #f9005968: + 56, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #eb8a1f5a: + true, + #0a16e1f2: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + #c1127ea9: + 69 + }, + { + #d2e9b40c: + "8193408137476215445", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 70, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 71 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: + 68, + #c11b7aa2: + < + #d394bb73: + ( + { + #d121c0bd: + 72, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [])> + }, + { + #fe288443: + true, + #ef684b00: [ + { + #298801ac: + < + #394a567a: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 60, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 61 + } + }>, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #fe93c404: + < + #090744cf: + ( + { + #d121c0bd: + 73, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#1bd2a1c5: + ({ + #d121c0bd: + 74, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 75, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 70, + #c8ff724b: { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + #30e4876a: { + #c1127ea9: + 71 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#f44daff9> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 71 + }, + "static_cast")> + ], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#28055b85> + }, + { + #f708701b: + true, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 60, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 61 + } + } + })> + }, + { + #298801ac: + < + #394a567a: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 62, + #c8ff724b: { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + }>, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }), + #fe93c404: + < + #c3b129f9: + ( + { + #d121c0bd: + 76, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#090744cf: + ({ + #d121c0bd: + 77, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#1bd2a1c5: + ({ + #d121c0bd: + 78, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 79, + #21793419: + ( + { + #c68b4ed6: + 14 + }, + { + #c68b4ed6: + 14 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 70, + #c8ff724b: { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + #30e4876a: { + #c1127ea9: + 71 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 55 + }, + #0e89e422: + <#f44daff9> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 71 + }, + "static_cast")> + ], + { + #30e4876a: { + #c1127ea9: + 12 + }, + #0e89e422: + <#f44daff9> + }, + { + #f708701b: + true, + #c8ff724b: { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 62, + #c8ff724b: { + #c8ff724b: + "__anon_field_1", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + } + ] + })> + ], + { }, + <#01fae064>, + { + #33244202: + 56, + #1a9a7e84: + true + }, + { + #1411db39: { + #c709e154: + <#3266451c>, + #ec05e4a8: + 63, + #c8ff724b: { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 31 + } + }, + #ff08b82d: { + #c709e154: + <#e7d5f344>, + #ec05e4a8: + 57, + #c8ff724b: { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 58 + } + }, + #370550a5: [ + { + #fc0986ed: + <#133bc7d1>, + #3f91f855: + true, + #d525b006: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 11, + #c8ff724b: { + #c8ff724b: + "m", + #2cdb06fb: [ + "m" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + }, + #e5466e35: + ( + { + #c68b4ed6: + 16 + }, + { + #c68b4ed6: + 16 + }) + }, + { + #fc0986ed: + <#37307b77>, + #3f91f855: + true, + #d525b006: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 13, + #c8ff724b: { + #c8ff724b: + "n", + #2cdb06fb: [ + "n" + ] + }, + #30e4876a: { + #c1127ea9: + 12 + } + }, + #e5466e35: + ( + { + #c68b4ed6: + 19 + }, + { + #c68b4ed6: + 19 + }) + } + ] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: 55 + }, + #0e89e422: <#f44daff9> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 80 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 68, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + #30e4876a: { #c1127ea9: 69 } + }, + #f02c40d1: true + })> + ], + { #30e4876a: { #c1127ea9: 80 } }, + { })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 82, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c68b4ed6: 46 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 45 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 45 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 85, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 45 }) + }, + [ + <#cccbeffc: + ({ + #d121c0bd: 86, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 45 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 87, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 12 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })>, + <#d394bb73: + ({ + #d121c0bd: 88, + #21793419: + ({ #c68b4ed6: 33 }, + { #c68b4ed6: 45 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 89, + #21793419: + ({ + #c68b4ed6: + 35 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 90, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + < + #e9db58be: + ( + { + #d121c0bd: + 91, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 93, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + ], + { + #30e4876a: { + #c1127ea9: 94 + } + }, + { + #ec9ddfe2: + <#f50d797e: + ({ + #d121c0bd: 95, + #f9005968: 7, + #21793419: + ({ + #c68b4ed6: 23 + }, + { + #c68b4ed6: 23 + }), + #eb8a1f5a: true + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + 94, + [ + <#29ca61ce: + ({ + #d121c0bd: 96, + #f9005968: 95, + #21793419: + ({ + #c68b4ed6: + 31 + }, + { + #c68b4ed6: + 45 + }), + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: 25 + }, + { + #d2e9b40c: + "8151698240653651715", + #f1a45f0e: + true, + #3e64314e: + true, + #ebe3c415: 96, + #c11b7aa2: + <#d394bb73: + ( + { + #d121c0bd: + 88, + #21793419: + ( + { + #c68b4ed6: + 33 + }, + { + #c68b4ed6: + 45 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 89, + #21793419: + ( + { + #c68b4ed6: + 35 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 90, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 91, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 93, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 97, + #f9005968: 95, + #21793419: + ({ + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 24 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: 92 + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 98, + #f9005968: 95, + #21793419: + ({ + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: 31 + }, + { + #d2e9b40c: + "17098733838812833493", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 99, + #f9005968: 95, + #21793419: + ({ + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 100 + }, + { + #d2e9b40c: + "14201972727608021968", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 101, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 102 + }, + { + #0370b1b2: + 0 + })> + ] + }, + { + #fe288443: + true + })>, + <#cc498dc1: + ({ + #d121c0bd: + 103, + #f9005968: 95, + #21793419: + ({ + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true, + #0a16e1f2: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 104 + }, + { + #d2e9b40c: + "3001717133787422796", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ( + { + #d121c0bd: + 105, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 106 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: + 103, + #c11b7aa2: + <#d394bb73: + ( + { + #d121c0bd: + 107, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [])> + }, + { + #fe288443: + true, + #ef684b00: [ + { + #298801ac: + < + #394a567a: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 97, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + }>, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #fe93c404: + < + #c3b129f9: + ( + { + #d121c0bd: + 108, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#090744cf: + ({ + #d121c0bd: + 109, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#1bd2a1c5: + ({ + #d121c0bd: + 110, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 111, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 94 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 105, + #c8ff724b: { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + #30e4876a: { + #c1127ea9: + 106 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 94 + }, + #0e89e422: + <#f44daff9> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 106 + }, + "static_cast")> + ], + { + #30e4876a: { + #c1127ea9: + 92 + }, + #0e89e422: + <#f44daff9> + }, + { + #f708701b: + true, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 97, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + } + ] + })> + ], + { }, + <#01fae064>, + { + #33244202: 95, + #1a9a7e84: true + }, + { + #1411db39: { + #c709e154: + <#3266451c>, + #ec05e4a8: 98, + #c8ff724b: { + #c8ff724b: "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: 31 + } + }, + #ff08b82d: { + #c709e154: + <#e7d5f344>, + #ec05e4a8: 96, + #c8ff724b: { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: 25 + } + }, + #370550a5: [ + { + #fc0986ed: + <#37307b77>, + #3f91f855: true, + #e737bcbf: + <#11c182d1: + ({ + #d121c0bd: + 93, + #21793419: + ( + { + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 28 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + { + #c1127ea9: + 92 + }, + { + #fe93c404: + < + #0fb8fb71: + ( + { + #d121c0bd: + 87, + #21793419: + ( + { + #c68b4ed6: + 28 + }, + { + #c68b4ed6: + 28 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + })>, + #d525b006: { + #c709e154: + <#004196c7>, + #ec05e4a8: 93, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + }, + #e5466e35: + ({ + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 24 + }) + } + ] + })> + })> + ], + { + #30e4876a: { #c1127ea9: 94 }, + #0e89e422: <#f44daff9> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 112 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 103, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { #c1127ea9: 104 } + }, + #f02c40d1: true + })> + ], + { #30e4876a: { #c1127ea9: 112 } }, + { })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 113, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 45 }) + }, + { + #c8ff724b: "init_capture", + #2cdb06fb: [ "init_capture" ] + }, + { #c1127ea9: 112 }, + { + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 45 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 45 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 85, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 45 }) + }, + [ + <#cccbeffc: + ({ + #d121c0bd: 86, + #21793419: + ({ + #c68b4ed6: 23 + }, + { + #c68b4ed6: 45 + }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 87, + #21793419: + ({ + #c68b4ed6: + 28 + }, + { + #c68b4ed6: + 28 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: 32, + #31b87f71: + "0" + })>, + <#d394bb73: + ({ + #d121c0bd: 88, + #21793419: + ({ + #c68b4ed6: + 33 + }, + { + #c68b4ed6: + 45 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 89, + #21793419: + ( + { + #c68b4ed6: + 35 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 90, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 91, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 93, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + ], + { + #30e4876a: { + #c1127ea9: 94 + } + }, + { + #ec9ddfe2: + <#f50d797e: + ({ + #d121c0bd: + 95, + #f9005968: + 7, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + 94, + [ + <#29ca61ce: + ( + { + #d121c0bd: + 96, + #f9005968: + 95, + #21793419: + ( + { + #c68b4ed6: + 31 + }, + { + #c68b4ed6: + 45 + }), + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 25 + }, + { + #d2e9b40c: + "8151698240653651715", + #f1a45f0e: + true, + #3e64314e: + true, + #ebe3c415: + 96, + #c11b7aa2: + < + #d394bb73: + ( + { + #d121c0bd: + 88, + #21793419: + ( + { + #c68b4ed6: + 33 + }, + { + #c68b4ed6: + 45 + }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: + 89, + #21793419: + ( + { + #c68b4ed6: + 35 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: + 90, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 91, + #21793419: + ( + { + #c68b4ed6: + 42 + }, + { + #c68b4ed6: + 42 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 92, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 93, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + ])> + ])> + }, + { })>, + <#fb87d624: + ( + { + #d121c0bd: + 97, + #f9005968: + 95, + #21793419: + ( + { + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 24 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#d6c054e3> + }, + { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 92 + }, + { })>, + <#cfe47fa6: + ( + { + #d121c0bd: + 98, + #f9005968: + 95, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 31 + }, + { + #d2e9b40c: + "17098733838812833493", + #f1a45f0e: + true, + #3e64314e: + true + }, + { })>, + <#cc498dc1: + ( + { + #d121c0bd: + 99, + #f9005968: + 95, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 100 + }, + { + #d2e9b40c: + "14201972727608021968", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 101, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 102 + }, + { + #0370b1b2: + 0 + })> + ] + }, + { + #fe288443: + true + })>, + <#cc498dc1: + ( + { + #d121c0bd: + 103, + #f9005968: + 95, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #eb8a1f5a: + true, + #0a16e1f2: + true, + #d3368c8a: + true, + #0b0695a4: + <#1b87f4c9> + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + #c1127ea9: + 104 + }, + { + #d2e9b40c: + "3001717133787422796", + #f1a45f0e: + true, + #3e64314e: + true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: + 105, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + { + #c1127ea9: + 106 + }, + { + #0370b1b2: + 0 + })> + ], + #ebe3c415: + 103, + #c11b7aa2: + < + #d394bb73: + ( + { + #d121c0bd: + 107, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [])> + }, + { + #fe288443: + true, + #ef684b00: [ + { + #298801ac: + < + #394a567a: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 97, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + }>, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }), + #fe93c404: + < + #c3b129f9: + ( + { + #d121c0bd: + 108, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#090744cf: + ({ + #d121c0bd: + 109, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#1bd2a1c5: + ({ + #d121c0bd: + 110, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 111, + #21793419: + ( + { + #c68b4ed6: + 23 + }, + { + #c68b4ed6: + 23 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 94 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#334f163b>, + #ec05e4a8: + 105, + #c8ff724b: { + #c8ff724b: + "", + #2cdb06fb: [ + "" + ] + }, + #30e4876a: { + #c1127ea9: + 106 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 94 + }, + #0e89e422: + <#f44daff9> + }, + { + #c91e0a14: + <#33e323e2>, + #fa1a3bd3: + [] + }, + { + #c1127ea9: + 106 + }, + "static_cast")> + ], + { + #30e4876a: { + #c1127ea9: + 92 + }, + #0e89e422: + <#f44daff9> + }, + { + #f708701b: + true, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #c369ebbe: { + #c709e154: + <#13c1049a>, + #ec05e4a8: + 97, + #c8ff724b: { + #c8ff724b: + "__anon_field_0", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 92 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + } + ] + })> + ], + { }, + <#01fae064>, + { + #33244202: + 95, + #1a9a7e84: + true + }, + { + #1411db39: { + #c709e154: + <#3266451c>, + #ec05e4a8: + 98, + #c8ff724b: { + #c8ff724b: + "~", + #2cdb06fb: [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 31 + } + }, + #ff08b82d: { + #c709e154: + <#e7d5f344>, + #ec05e4a8: + 96, + #c8ff724b: { + #c8ff724b: + "operator()", + #2cdb06fb: [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { + #c1127ea9: + 25 + } + }, + #370550a5: [ + { + #fc0986ed: + <#37307b77>, + #3f91f855: + true, + #e737bcbf: + < + #11c182d1: + ( + { + #d121c0bd: + 93, + #21793419: + ( + { + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 28 + }), + #0a16e1f2: + true, + #d3368c8a: + true + }, + { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + { + #c1127ea9: + 92 + }, + { + #fe93c404: + < + #0fb8fb71: + ( + { + #d121c0bd: + 87, + #21793419: + ( + { + #c68b4ed6: + 28 + }, + { + #c68b4ed6: + 28 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 12 + } + }, + { + #d9aa98d1: + true, + #1f65f619: + 32, + #31b87f71: + "0" + })> + })>, + #d525b006: { + #c709e154: + <#004196c7>, + #ec05e4a8: + 93, + #c8ff724b: { + #c8ff724b: + "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: + 92 + } + }, + #e5466e35: + ( + { + #c68b4ed6: + 24 + }, + { + #c68b4ed6: + 24 + }) + } + ] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: 94 + }, + #0e89e422: <#f44daff9> + }, + { })> + ], + { #30e4876a: { #c1127ea9: 112 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 103, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + #30e4876a: { #c1127ea9: 104 } + }, + #f02c40d1: true + })> + ], + { #30e4876a: { #c1127ea9: 112 } }, + { })> + })> + ])>, + <#df3bdb38: + ({ + #d121c0bd: 114, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 115, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { #30e4876a: { #c1127ea9: 12 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "0" + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 116, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 117, + { })> + ], + { }, + { + #e870593a: "tests/lambda.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 118 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 121 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 12 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 126 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 127 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 128 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 129 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 130 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 133 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 134 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 136 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 137 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 138 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 139 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 140 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 141 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 142 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 143 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 144 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 145 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 146 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 147 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 148 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 149 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 150 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 151 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 152 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 153 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 154 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 155 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 156 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 157 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 158 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 159 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 160 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 161 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 162 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 163 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 164 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 165 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 166 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 167 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 168 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 169 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 170 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 171 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 172 })>, + <#2e6cf4ea: ({ #d121c0bd: 173 })>, + <#2e6cf4ea: ({ #d121c0bd: 174 })>, + <#2e6cf4ea: ({ #d121c0bd: 175 })>, + <#22d546dd: ({ #d121c0bd: 176 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 177 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 178 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 179 }, { #c1127ea9: 118 })>, + <#22d546dd: ({ #d121c0bd: 180 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 181 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 182 }, 183)>, + <#d3d219f7: ({ #d121c0bd: 184 }, { #c1127ea9: 12, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 185 }, { #c1127ea9: 120, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 186 }, { #c1127ea9: 120 })>, + <#d80cb60b: ({ #d121c0bd: 187 }, 188)>, + <#da0c5ecf: + ({ #d121c0bd: 189 }, + { #cd26765d: { #c1127ea9: 187 }, #11302019: 24 }, + 1)>, + <#26796f6a: ({ #d121c0bd: 8 }, { #f9c96be9: { #c1127ea9: 12 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 190 }, { #c1127ea9: 186 })>, + <#26796f6a: + ({ #d121c0bd: 191 }, { #f9c96be9: { #c1127ea9: 192 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 22 }, 23)>, + <#f3f3711a: ({ #d121c0bd: 193 })>, + <#f3f3711a: ({ #d121c0bd: 194 })>, + <#09e09de9: ({ #d121c0bd: 92, #26f32be5: 12 })>, + <#26796f6a: + ({ #d121c0bd: 195 }, { #f9c96be9: { #c1127ea9: 12 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 25 }, { #f9c96be9: { #c1127ea9: 92 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 29 }, { #f9c96be9: { #c1127ea9: 92 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 196 }, { #c1127ea9: 8 })>, + <#d3d219f7: ({ #d121c0bd: 197 }, { #c1127ea9: 29 })>, + <#26796f6a: + ({ #d121c0bd: 198 }, { #f9c96be9: { #c1127ea9: 196 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 27 }, { #f9c96be9: { #c1127ea9: 197 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 199 }, { #f9c96be9: { #c1127ea9: 118 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 200 }, { #f9c96be9: { #c1127ea9: 118 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 31 }, { #f9c96be9: { #c1127ea9: 118 } }, { })>, + <#f3f3711a: ({ #d121c0bd: 201 })>, + <#09e09de9: ({ #d121c0bd: 41, #26f32be5: 22 })>, + <#0b08cd60: ({ #d121c0bd: 35 }, { #c1127ea9: 22, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 202 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 35 } ] })>, + <#26796f6a: + ({ #d121c0bd: 33 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 35 } ] })>, + <#295746e6: ({ #d121c0bd: 39 }, { #c1127ea9: 22 })>, + <#26796f6a: + ({ #d121c0bd: 203 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 39 } ] })>, + <#26796f6a: + ({ #d121c0bd: 204 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 39 } ] })>, + <#26796f6a: + ({ #d121c0bd: 37 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 39 } ] })>, + <#26796f6a: + ({ #d121c0bd: 205 }, + { #f9c96be9: { #c1127ea9: 192 } }, + { #08ec7593: [ { #c1127ea9: 12 } ] })>, + <#d80cb60b: ({ #d121c0bd: 55 }, 56)>, + <#0b08cd60: ({ #d121c0bd: 61 }, { #c1127ea9: 12 })>, + <#f3f3711a: ({ #d121c0bd: 206 })>, + <#26796f6a: + ({ #d121c0bd: 207 }, + { #f9c96be9: { #c1127ea9: 12 } }, + { #08ec7593: [ { #c1127ea9: 12 } ] })>, + <#26796f6a: + ({ #d121c0bd: 58 }, + { #f9c96be9: { #c1127ea9: 92 } }, + { #08ec7593: [ { #c1127ea9: 12 } ] })>, + <#26796f6a: + ({ #d121c0bd: 208 }, { #f9c96be9: { #c1127ea9: 118 } }, { })>, + <#f3f3711a: ({ #d121c0bd: 209 })>, + <#09e09de9: ({ #d121c0bd: 80, #26f32be5: 55 })>, + <#0b08cd60: ({ #d121c0bd: 67 }, { #c1127ea9: 55, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 210 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 67 } ] })>, + <#26796f6a: + ({ #d121c0bd: 65 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 67 } ] })>, + <#295746e6: ({ #d121c0bd: 71 }, { #c1127ea9: 55 })>, + <#26796f6a: + ({ #d121c0bd: 211 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 71 } ] })>, + <#26796f6a: + ({ #d121c0bd: 212 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 71 } ] })>, + <#26796f6a: + ({ #d121c0bd: 69 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 71 } ] })>, + <#f3f3711a: ({ #d121c0bd: 213 })>, + <#d80cb60b: ({ #d121c0bd: 94 }, 95)>, + <#f3f3711a: ({ #d121c0bd: 214 })>, + <#26796f6a: + ({ #d121c0bd: 215 }, { #f9c96be9: { #c1127ea9: 118 } }, { })>, + <#f3f3711a: ({ #d121c0bd: 216 })>, + <#09e09de9: ({ #d121c0bd: 112, #26f32be5: 94 })>, + <#0b08cd60: ({ #d121c0bd: 102 }, { #c1127ea9: 94, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 217 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 102 } ] })>, + <#26796f6a: + ({ #d121c0bd: 100 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 102 } ] })>, + <#295746e6: ({ #d121c0bd: 106 }, { #c1127ea9: 94 })>, + <#26796f6a: + ({ #d121c0bd: 218 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 106 } ] })>, + <#26796f6a: + ({ #d121c0bd: 219 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 106 } ] })>, + <#26796f6a: + ({ #d121c0bd: 104 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 106 } ] })>, + <#0098a8c5: ({ #d121c0bd: 220 }, { #fcd148e8: 176 })>, + <#2e3d736c: ({ #d121c0bd: 221 }, { #c1127ea9: 220 })>, + <#19e1ef85: + ({ #d121c0bd: 222, #26f32be5: 221 }, + { #0b680f7d: { #c1127ea9: 221 }, #c3687459: 223 })>, + <#19e1ef85: + ({ #d121c0bd: 117, #26f32be5: 221 }, + { #0b680f7d: { #c1127ea9: 222 }, #c3687459: 116 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/materialize_temporary.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/materialize_temporary.cpp.exp new file mode 100644 index 000000000..8c6abb084 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/materialize_temporary.cpp.exp @@ -0,0 +1,211 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#11c182d1: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/materialize_temporary.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c68b4ed6: 16 }) + }, + { #c8ff724b: "r", #2cdb06fb: [ "r" ] }, + { #c1127ea9: 8 }, + { + #ccd69858: true, + #dd3d1991: true, + #fe93c404: + <#d0cddcea: + ({ + #d121c0bd: 9, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [ + <#c27b9a39: + ({ + #d121c0bd: 10, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 11, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [ + <#d1b36d29: + ({ + #d121c0bd: 12, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [], + { #30e4876a: { #c1127ea9: 13 } }, + "1")> + ], + { + #30e4876a: { #c1127ea9: 14, #ea1a680e: true } + }, + { #c91e0a14: <#0da6788d>, #fa1a3bd3: [] })> + ], + { + #30e4876a: { #c1127ea9: 14, #ea1a680e: true }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 7, + #c8ff724b: { #c8ff724b: "r", #2cdb06fb: [ "r" ] }, + #30e4876a: { #c1127ea9: 8 } + } + })> + ], + { + #30e4876a: { #c1127ea9: 14, #ea1a680e: true }, + #0e89e422: <#28055b85> + }, + { })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 15, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 16, + { })> + ], + { }, + { + #e870593a: "tests/materialize_temporary.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 17 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 18 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 14 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 13 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 70 })>, + <#2e6cf4ea: ({ #d121c0bd: 71 })>, + <#2e6cf4ea: ({ #d121c0bd: 72 })>, + <#2e6cf4ea: ({ #d121c0bd: 73 })>, + <#22d546dd: ({ #d121c0bd: 74 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 77 }, { #c1127ea9: 17 })>, + <#22d546dd: ({ #d121c0bd: 78 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 80 }, 81)>, + <#d3d219f7: ({ #d121c0bd: 82 }, { #c1127ea9: 14, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 83 }, { #c1127ea9: 19, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 84 }, { #c1127ea9: 19 })>, + <#d80cb60b: ({ #d121c0bd: 85 }, 86)>, + <#da0c5ecf: + ({ #d121c0bd: 87 }, + { #cd26765d: { #c1127ea9: 85 }, #11302019: 24 }, + 1)>, + <#0b08cd60: ({ #d121c0bd: 8 }, { #c1127ea9: 14, #ea1a680e: true })>, + <#0098a8c5: ({ #d121c0bd: 88 }, { #fcd148e8: 74 })>, + <#2e3d736c: ({ #d121c0bd: 89 }, { #c1127ea9: 88 })>, + <#19e1ef85: + ({ #d121c0bd: 90, #26f32be5: 89 }, + { #0b680f7d: { #c1127ea9: 89 }, #c3687459: 91 })>, + <#19e1ef85: + ({ #d121c0bd: 16, #26f32be5: 89 }, + { #0b680f7d: { #c1127ea9: 90 }, #c3687459: 15 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/namespace_decl.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/namespace_decl.cpp.exp new file mode 100644 index 000000000..5d7b8fdc1 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/namespace_decl.cpp.exp @@ -0,0 +1,242 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#da76a085: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/namespace_decl.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + { #c8ff724b: "Q", #2cdb06fb: [ "Q" ] }, + [ + <#da76a085: + ({ + #d121c0bd: 8, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 9, #c68b4ed6: 1 }) + }, + { #c8ff724b: "V", #2cdb06fb: [ "V", "Q" ] }, + [], + { }, + { })>, + <#da76a085: + ({ + #d121c0bd: 9, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "V", #2cdb06fb: [ "V", "Q" ] }, + [], + { }, + { + #caa189ed: { + #c709e154: <#09c0ca7b>, + #ec05e4a8: 8, + #c8ff724b: { #c8ff724b: "V", #2cdb06fb: [ "V", "Q" ] } + } + })>, + <#da76a085: + ({ + #d121c0bd: 10, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 1 }) + }, + { #c8ff724b: "I", #2cdb06fb: [ "I", "Q" ] }, + [ + <#11c182d1: + ({ + #d121c0bd: 11, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "i", #2cdb06fb: [ "i", "Q" ] }, + { #c1127ea9: 12 }, + { #ccd69858: true })> + ], + { }, + { #3e64314e: true })> + ], + { }, + { })>, + <#da76a085: + ({ + #d121c0bd: 13, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 1 }, + { #c7b317f4: 19, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "", + #2cdb06fb: [ "anonymous_namespace_tests/namespace_decl.cpp" ] + }, + [], + { }, + { })>, + <#c7bdbc95: + ({ + #d121c0bd: 14, + #21793419: ({ #c7b317f4: 17, #c68b4ed6: 11 }, { }), + #eb8a1f5a: true + }, + { + #c8ff724b: "", + #2cdb06fb: [ "" ] + }, + { + #309827d0: { #c68b4ed6: 11 }, + #fa5a1379: { }, + #d15fe800: [], + #0781349f: { + #c709e154: <#09c0ca7b>, + #ec05e4a8: 13, + #c8ff724b: { + #c8ff724b: "", + #2cdb06fb: [ "anonymous_namespace_tests/namespace_decl.cpp" ] + } + } + })>, + <#0f3f4d35: + ({ #d121c0bd: 15, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 16, + { })> + ], + { }, + { + #e870593a: "tests/namespace_decl.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 17 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 18 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 12 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 71 })>, + <#2e6cf4ea: ({ #d121c0bd: 72 })>, + <#2e6cf4ea: ({ #d121c0bd: 73 })>, + <#2e6cf4ea: ({ #d121c0bd: 74 })>, + <#22d546dd: ({ #d121c0bd: 75 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 78 }, { #c1127ea9: 17 })>, + <#22d546dd: ({ #d121c0bd: 79 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 81 }, 82)>, + <#d3d219f7: ({ #d121c0bd: 83 }, { #c1127ea9: 12, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 84 }, { #c1127ea9: 19, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 85 }, { #c1127ea9: 19 })>, + <#d80cb60b: ({ #d121c0bd: 86 }, 87)>, + <#da0c5ecf: + ({ #d121c0bd: 88 }, + { #cd26765d: { #c1127ea9: 86 }, #11302019: 24 }, + 1)>, + <#0098a8c5: ({ #d121c0bd: 89 }, { #fcd148e8: 75 })>, + <#2e3d736c: ({ #d121c0bd: 90 }, { #c1127ea9: 89 })>, + <#19e1ef85: + ({ #d121c0bd: 91, #26f32be5: 90 }, + { #0b680f7d: { #c1127ea9: 90 }, #c3687459: 92 })>, + <#19e1ef85: + ({ #d121c0bd: 16, #26f32be5: 90 }, + { #0b680f7d: { #c1127ea9: 91 }, #c3687459: 15 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/new.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/new.cpp.exp new file mode 100644 index 000000000..cdb3df6a2 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/new.cpp.exp @@ -0,0 +1,3343 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ #c3bbce7c: "tests/new.cpp", #c7b317f4: 7, #c68b4ed6: 1 }, + { #c7b317f4: 9, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "pod", #2cdb06fb: [ "pod" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "pod", #2cdb06fb: [ "pod", "pod" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "a", #2cdb06fb: [ "a", "pod" ] }, + { #c1127ea9: 11 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 12, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "pod", #2cdb06fb: [ "pod", "pod" ] }, + { #c1127ea9: 13 }, + { + #d2e9b40c: "8251339330154476193", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 12, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 14, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 15, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "pod", #2cdb06fb: [ "pod", "pod" ] }, + { #c1127ea9: 16 }, + { + #d2e9b40c: "14628250159452892772", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 17, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 18 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 19, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "pod", #2cdb06fb: [ "pod", "pod" ] }, + { #c1127ea9: 20 }, + { + #d2e9b40c: "3036348191925830672", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 21, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 22 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cfe47fa6: + ({ + #d121c0bd: 23, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~pod", #2cdb06fb: [ "~pod", "pod" ] }, + { #c1127ea9: 13 }, + { + #d2e9b40c: "6606037711693769625", + #f1a45f0e: true, + #3e64314e: true + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { + #f1ae3b70: true, + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 23, + #c8ff724b: { #c8ff724b: "~pod", #2cdb06fb: [ "~pod", "pod" ] }, + #30e4876a: { #c1127ea9: 13 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 24, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, + { #c7b317f4: 17, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "cpplike", #2cdb06fb: [ "cpplike" ] }, + 25, + [ + <#f50d797e: + ({ + #d121c0bd: 26, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "cpplike", #2cdb06fb: [ "cpplike", "cpplike" ] }, + 25, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 27, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "a", #2cdb06fb: [ "a", "cpplike" ] }, + { #c1127ea9: 11 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 28, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "b", #2cdb06fb: [ "b", "cpplike" ] }, + { #c1127ea9: 11 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 29, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "c", #2cdb06fb: [ "c", "cpplike" ] }, + { #c1127ea9: 8 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 30, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 3 }, { #c68b4ed6: 28 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "cpplike", #2cdb06fb: [ "cpplike", "cpplike" ] }, + { #c1127ea9: 31 }, + { + #d2e9b40c: "1107470972604094108", + #f1a45f0e: true, + #ebe3c415: 30, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 32, + #21793419: ({ #c68b4ed6: 27 }, { #c68b4ed6: 28 }) + }, + [])> + }, + { + #ef684b00: [ + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 27, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 11 } + }>, + #21793419: ({ #c68b4ed6: 15 }, { #c68b4ed6: 19 }), + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 17 }, { #c68b4ed6: 17 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + }, + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 28, + #c8ff724b: { + #c8ff724b: "b", + #2cdb06fb: [ "b", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 11 } + }>, + #21793419: ({ #c68b4ed6: 22 }, { #c68b4ed6: 25 }), + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 34, + #21793419: + ({ #c68b4ed6: 24 }, { #c68b4ed6: 24 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + }, + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 29, + #c8ff724b: { + #c8ff724b: "c", + #2cdb06fb: [ "c", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 8 } + }>, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 35, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })> + } + ] + })>, + <#cc498dc1: + ({ + #d121c0bd: 36, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 3 }, { #c68b4ed6: 39 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "cpplike", #2cdb06fb: [ "cpplike", "cpplike" ] }, + { #c1127ea9: 37 }, + { + #d2e9b40c: "4402068687990998056", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 38, + #21793419: ({ #c68b4ed6: 11 }, { #c68b4ed6: 15 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 11 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 39, + #21793419: ({ #c68b4ed6: 18 }, { #c68b4ed6: 22 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 11 }, + { #0370b1b2: 1 })> + ], + #ebe3c415: 36, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 40, + #21793419: ({ #c68b4ed6: 38 }, { #c68b4ed6: 39 }) + }, + [])> + }, + { + #ef684b00: [ + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 27, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 11 } + }>, + #21793419: ({ #c68b4ed6: 27 }, { #c68b4ed6: 30 }), + #fe93c404: + <#c3b129f9: + ({ + #d121c0bd: 41, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 29 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 42, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 29 }) + }, + [], + { + #30e4876a: { #c1127ea9: 11 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 38, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + }, + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 28, + #c8ff724b: { + #c8ff724b: "b", + #2cdb06fb: [ "b", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 11 } + }>, + #21793419: ({ #c68b4ed6: 33 }, { #c68b4ed6: 36 }), + #fe93c404: + <#c3b129f9: + ({ + #d121c0bd: 43, + #21793419: + ({ #c68b4ed6: 35 }, { #c68b4ed6: 35 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 44, + #21793419: + ({ #c68b4ed6: 35 }, { #c68b4ed6: 35 }) + }, + [], + { + #30e4876a: { #c1127ea9: 11 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 39, + #c8ff724b: { + #c8ff724b: "b", + #2cdb06fb: [ "b" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + ], + { #30e4876a: { #c1127ea9: 11 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + }, + { + #298801ac: + <#394a567a: { + #c709e154: <#13c1049a>, + #ec05e4a8: 29, + #c8ff724b: { + #c8ff724b: "c", + #2cdb06fb: [ "c", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 8 } + }>, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 45, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })> + } + ] + })>, + <#cc498dc1: + ({ + #d121c0bd: 46, + #f9005968: 24, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "cpplike", #2cdb06fb: [ "cpplike", "cpplike" ] }, + { #c1127ea9: 47 }, + { + #d2e9b40c: "17856063292060911243", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 48, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 49 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 50, + #f9005968: 24, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "cpplike", #2cdb06fb: [ "cpplike", "cpplike" ] }, + { #c1127ea9: 51 }, + { + #d2e9b40c: "6680359559125245897", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 52, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 53 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cfe47fa6: + ({ + #d121c0bd: 54, + #f9005968: 24, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "~cpplike", + #2cdb06fb: [ "~cpplike", "cpplike" ] + }, + { #c1127ea9: 13 }, + { + #d2e9b40c: "10313252178728731272", + #f1a45f0e: true, + #3e64314e: true + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 24, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 54, + #c8ff724b: { + #c8ff724b: "~cpplike", + #2cdb06fb: [ "~cpplike", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 55, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, + { #c7b317f4: 35, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test", #2cdb06fb: [ "test" ] }, + { #c1127ea9: 31 }, + { + #d2e9b40c: "18241244337164948030", + #f1a45f0e: true, + #ebe3c415: 55, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 56, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 13 }, + { #c7b317f4: 35, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 57, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 3 }, + { #c68b4ed6: 23 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 58, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 22 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 59, + #21793419: + ({ #c68b4ed6: 21 }, { #c68b4ed6: 21 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { #d04948b2: 59 })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 61, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 22 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 62 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 58, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 22 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 59, + #21793419: + ({ #c68b4ed6: 21 }, + { #c68b4ed6: 21 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { #d04948b2: 59 })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 63, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 3 }, + { #c68b4ed6: 26 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 64, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 25 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 65, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 23 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 23 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { #c54bdc44: true, #c4225f4d: 65 })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 68, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 25 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "i_a", #2cdb06fb: [ "i_a" ] }, + { #c1127ea9: 62 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 64, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 25 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 65, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 23 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 23 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { + #c91e0a14: <#2677d46b>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { #c54bdc44: true, #c4225f4d: 65 })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 69, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, + { #c68b4ed6: 20 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 70, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 17 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 71, + #21793419: + ({ #c68b4ed6: 17 }, { #c68b4ed6: 17 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })> + ], + { #30e4876a: { #c1127ea9: 72 } }, + { #d04948b2: 71 })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 17 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "p", #2cdb06fb: [ "p" ] }, + { #c1127ea9: 74 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 70, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 17 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 71, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 17 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })> + ], + { #30e4876a: { #c1127ea9: 72 } }, + { #d04948b2: 71 })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 75, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, + { #c68b4ed6: 26 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 76, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 25 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 77, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 23 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 78, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 23 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })>, + <#e5067ee9: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 80 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })> + ], + { #30e4876a: { #c1127ea9: 72 } }, + { + #c54bdc44: true, + #c4225f4d: 77, + #d04948b2: 79 + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 81, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 25 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "p_a", #2cdb06fb: [ "p_a" ] }, + { #c1127ea9: 74 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 76, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 25 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 77, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 23 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 78, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 23 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { + #c91e0a14: <#2677d46b>, + #fa1a3bd3: [] + })>, + <#e5067ee9: + ({ + #d121c0bd: 79, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 80 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })> + ], + { #30e4876a: { #c1127ea9: 72 } }, + { + #c54bdc44: true, + #c4225f4d: 77, + #d04948b2: 79 + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 82, + #21793419: + ({ #c7b317f4: 26, #c68b4ed6: 3 }, + { #c68b4ed6: 30 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 29 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 17 }, { #c68b4ed6: 29 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 85, + #21793419: + ({ #c68b4ed6: 25 }, + { #c68b4ed6: 25 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 86, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ "cpplike", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { #d04948b2: 84 })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 88, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 29 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "c", #2cdb06fb: [ "c" ] }, + { #c1127ea9: 89 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 29 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 84, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 29 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 85, + #21793419: + ({ #c68b4ed6: 25 }, + { #c68b4ed6: 25 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 86, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", "cpplike" + ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { #d04948b2: 84 })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 90, + #21793419: + ({ #c7b317f4: 27, #c68b4ed6: 3 }, + { #c68b4ed6: 30 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 91, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 29 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 92, + #21793419: + ({ #c68b4ed6: 27 }, { #c68b4ed6: 27 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 93, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })>, + <#e5067ee9: + ({ + #d121c0bd: 94, + #21793419: + ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 95 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 30, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ "cpplike", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 31 } + } + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { + #c54bdc44: true, + #c4225f4d: 92, + #d04948b2: 94 + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 96, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 29 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "c_a", #2cdb06fb: [ "c_a" ] }, + { #c1127ea9: 89 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 91, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 29 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 92, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 93, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "10" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { + #c91e0a14: <#2677d46b>, + #fa1a3bd3: [] + })>, + <#e5067ee9: + ({ + #d121c0bd: 94, + #21793419: + ({ #c68b4ed6: 19 }, + { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 95 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 30, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", "cpplike" + ] + }, + #30e4876a: { #c1127ea9: 31 } + } + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { + #c54bdc44: true, + #c4225f4d: 92, + #d04948b2: 94 + })> + })> + ])>, + <#34bf44e3: + ({ + #d121c0bd: 97, + #21793419: + ({ #c7b317f4: 29, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 98, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 99, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 62 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 61, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { #c1127ea9: 62 } + } + })> + ], + { #30e4876a: { #c1127ea9: 62 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 100 } }, + { #02dcc420: { #c1127ea9: 101 } })>, + <#34bf44e3: + ({ + #d121c0bd: 102, + #21793419: + ({ #c7b317f4: 30, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 103, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 104, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { #c1127ea9: 62 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 68, + #c8ff724b: { + #c8ff724b: "i_a", + #2cdb06fb: [ "i_a" ] + }, + #30e4876a: { #c1127ea9: 62 } + } + })> + ], + { #30e4876a: { #c1127ea9: 62 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 100 } }, + { #c54bdc44: true, #02dcc420: { #c1127ea9: 101 } })>, + <#34bf44e3: + ({ + #d121c0bd: 105, + #21793419: + ({ #c7b317f4: 31, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 106, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 107, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 74 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 73, + #c8ff724b: { + #c8ff724b: "p", + #2cdb06fb: [ "p" ] + }, + #30e4876a: { #c1127ea9: 74 } + } + })> + ], + { #30e4876a: { #c1127ea9: 74 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 100 } }, + { #02dcc420: { #c1127ea9: 108 } })>, + <#34bf44e3: + ({ + #d121c0bd: 109, + #21793419: + ({ #c7b317f4: 32, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 110, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 111, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { #c1127ea9: 74 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 81, + #c8ff724b: { + #c8ff724b: "p_a", + #2cdb06fb: [ "p_a" ] + }, + #30e4876a: { #c1127ea9: 74 } + } + })> + ], + { #30e4876a: { #c1127ea9: 74 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 100 } }, + { #c54bdc44: true, #02dcc420: { #c1127ea9: 108 } })>, + <#34bf44e3: + ({ + #d121c0bd: 112, + #21793419: + ({ #c7b317f4: 33, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 113, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 114, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 89 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 88, + #c8ff724b: { + #c8ff724b: "c", + #2cdb06fb: [ "c" ] + }, + #30e4876a: { #c1127ea9: 89 } + } + })> + ], + { #30e4876a: { #c1127ea9: 89 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 100 } }, + { #02dcc420: { #c1127ea9: 115 } })>, + <#34bf44e3: + ({ + #d121c0bd: 116, + #21793419: + ({ #c7b317f4: 34, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 117, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 118, + #21793419: + ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { + #30e4876a: { #c1127ea9: 89 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 96, + #c8ff724b: { + #c8ff724b: "c_a", + #2cdb06fb: [ "c_a" ] + }, + #30e4876a: { #c1127ea9: 89 } + } + })> + ], + { #30e4876a: { #c1127ea9: 89 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 100 } }, + { #c54bdc44: true, #02dcc420: { #c1127ea9: 115 } })> + ])> + })>, + <#f173dfc2: + ({ + #d121c0bd: 119, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #1771a8d7: [ + <#efb2dc43: + ({ #d121c0bd: 120, #21793419: ({ }, { }) }, <#caf525d3>)> + ] + }, + { #c8ff724b: "operator new", #2cdb06fb: [ "operator new" ] }, + { #c1127ea9: 121 }, + { + #d2e9b40c: "5103882463850428890", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 122, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 67 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 123, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #1771a8d7: [ + <#efb2dc43: + ({ #d121c0bd: 124, #21793419: ({ }, { }) }, <#caf525d3>)> + ] + }, + { #c8ff724b: "operator new[]", #2cdb06fb: [ "operator new[]" ] }, + { #c1127ea9: 121 }, + { + #d2e9b40c: "5124988689061404296", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 125, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 67 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 126, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #1771a8d7: [ + <#efb2dc43: + ({ #d121c0bd: 127, #21793419: ({ }, { }) }, <#caf525d3>)> + ] + }, + { #c8ff724b: "operator delete", #2cdb06fb: [ "operator delete" ] }, + { #c1127ea9: 128 }, + { + #d2e9b40c: "9332647001762808742", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 129, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 130 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 131, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #1771a8d7: [ + <#efb2dc43: + ({ #d121c0bd: 132, #21793419: ({ }, { }) }, <#caf525d3>)> + ] + }, + { + #c8ff724b: "operator delete[]", + #2cdb06fb: [ "operator delete[]" ] + }, + { #c1127ea9: 128 }, + { + #d2e9b40c: "12453587667872411061", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ #d121c0bd: 133, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 130 }, + { #0370b1b2: 0 })> + ] + })>, + <#f173dfc2: + ({ + #d121c0bd: 134, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 1 }, + { #c7b317f4: 43, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test_c11", #2cdb06fb: [ "test_c11" ] }, + { #c1127ea9: 31 }, + { + #d2e9b40c: "6095890702841955930", + #f1a45f0e: true, + #ebe3c415: 134, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 135, + #21793419: + ({ #c7b317f4: 38, #c68b4ed6: 17 }, + { #c7b317f4: 43, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 136, + #21793419: + ({ #c7b317f4: 39, #c68b4ed6: 3 }, + { #c68b4ed6: 32 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 137, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 31 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 138, + #21793419: + ({ #c68b4ed6: 21 }, { #c68b4ed6: 21 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 139, + #21793419: + ({ #c68b4ed6: 21 }, + { #c68b4ed6: 21 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })>, + <#0fdba003: + ({ + #d121c0bd: 140, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 31 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 141, + #21793419: + ({ #c68b4ed6: 24 }, + { #c68b4ed6: 24 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 142, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 143, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + ], + { #30e4876a: { #c1127ea9: 144 } })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { + #c54bdc44: true, + #c4225f4d: 138, + #d04948b2: 140 + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 145, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 31 }) + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 62 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 137, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 31 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 138, + #21793419: + ({ #c68b4ed6: 21 }, + { #c68b4ed6: 21 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 139, + #21793419: + ({ #c68b4ed6: 21 }, + { #c68b4ed6: 21 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { + #c91e0a14: <#2677d46b>, + #fa1a3bd3: [] + })>, + <#0fdba003: + ({ + #d121c0bd: 140, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 31 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 141, + #21793419: + ({ #c68b4ed6: 24 }, + { #c68b4ed6: 24 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 142, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 143, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })> + ], + { #30e4876a: { #c1127ea9: 144 } })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { + #c54bdc44: true, + #c4225f4d: 138, + #d04948b2: 140 + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 146, + #21793419: + ({ #c7b317f4: 40, #c68b4ed6: 3 }, + { #c68b4ed6: 30 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 147, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 29 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 148, + #21793419: + ({ #c68b4ed6: 17 }, { #c68b4ed6: 29 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 149, + #21793419: + ({ #c68b4ed6: 25 }, + { #c68b4ed6: 25 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 150, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ "cpplike", "cpplike" ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { #d04948b2: 148 })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 151, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 29 }) + }, + { #c8ff724b: "c", #2cdb06fb: [ "c" ] }, + { #c1127ea9: 89 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 147, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 29 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 148, + #21793419: + ({ #c68b4ed6: 17 }, + { #c68b4ed6: 29 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 149, + #21793419: + ({ #c68b4ed6: 25 }, + { #c68b4ed6: 25 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 150, + #21793419: + ({ #c68b4ed6: 28 }, + { #c68b4ed6: 28 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", "cpplike" + ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { #d04948b2: 148 })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 152, + #21793419: + ({ #c7b317f4: 41, #c68b4ed6: 3 }, + { #c68b4ed6: 53 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 153, + #21793419: + ({ #c68b4ed6: 15 }, { #c68b4ed6: 52 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 154, + #21793419: + ({ #c68b4ed6: 27 }, { #c68b4ed6: 27 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 155, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })>, + <#0fdba003: + ({ + #d121c0bd: 156, + #21793419: + ({ #c68b4ed6: 29 }, { #c68b4ed6: 52 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 157, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 35 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 158, + #21793419: + ({ #c68b4ed6: 31 }, + { #c68b4ed6: 31 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 159, + #21793419: + ({ #c68b4ed6: 34 }, + { #c68b4ed6: 34 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", "cpplike" + ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })>, + <#e5067ee9: + ({ + #d121c0bd: 160, + #21793419: + ({ #c68b4ed6: 38 }, + { #c68b4ed6: 43 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 161, + #21793419: + ({ #c68b4ed6: 39 }, + { #c68b4ed6: 39 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 162, + #21793419: + ({ #c68b4ed6: 42 }, + { #c68b4ed6: 42 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", "cpplike" + ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })>, + <#e5067ee9: + ({ + #d121c0bd: 163, + #21793419: + ({ #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 164, + #21793419: + ({ #c68b4ed6: 47 }, + { #c68b4ed6: 47 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "5" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 165, + #21793419: + ({ #c68b4ed6: 50 }, + { #c68b4ed6: 50 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "6" + })> + ], + { #30e4876a: { #c1127ea9: 25 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", "cpplike" + ] + }, + #30e4876a: { #c1127ea9: 37 } + } + })> + ], + { #30e4876a: { #c1127ea9: 166 } })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { + #c54bdc44: true, + #c4225f4d: 154, + #d04948b2: 156 + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 167, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 52 }) + }, + { #c8ff724b: "c_a", #2cdb06fb: [ "c_a" ] }, + { #c1127ea9: 89 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 153, + #21793419: + ({ #c68b4ed6: 15 }, + { #c68b4ed6: 52 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 154, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 155, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { #30e4876a: { #c1127ea9: 67 } }, + { + #c91e0a14: <#2677d46b>, + #fa1a3bd3: [] + })>, + <#0fdba003: + ({ + #d121c0bd: 156, + #21793419: + ({ #c68b4ed6: 29 }, + { #c68b4ed6: 52 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 157, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 35 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 158, + #21793419: + ({ + #c68b4ed6: 31 + }, + { + #c68b4ed6: 31 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 159, + #21793419: + ({ + #c68b4ed6: 34 + }, + { + #c68b4ed6: 34 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "2" + })> + ], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", + "cpplike" + ] + }, + #30e4876a: { + #c1127ea9: 37 + } + } + })>, + <#e5067ee9: + ({ + #d121c0bd: 160, + #21793419: + ({ #c68b4ed6: 38 }, + { #c68b4ed6: 43 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 161, + #21793419: + ({ + #c68b4ed6: 39 + }, + { + #c68b4ed6: 39 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "3" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 162, + #21793419: + ({ + #c68b4ed6: 42 + }, + { + #c68b4ed6: 42 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "4" + })> + ], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", + "cpplike" + ] + }, + #30e4876a: { + #c1127ea9: 37 + } + } + })>, + <#e5067ee9: + ({ + #d121c0bd: 163, + #21793419: + ({ #c68b4ed6: 46 }, + { #c68b4ed6: 51 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 164, + #21793419: + ({ + #c68b4ed6: 47 + }, + { + #c68b4ed6: 47 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "5" + })>, + <#0fb8fb71: + ({ + #d121c0bd: 165, + #21793419: + ({ + #c68b4ed6: 50 + }, + { + #c68b4ed6: 50 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + } + }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "6" + })> + ], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 36, + #c8ff724b: { + #c8ff724b: "cpplike", + #2cdb06fb: [ + "cpplike", + "cpplike" + ] + }, + #30e4876a: { + #c1127ea9: 37 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 166 } })> + ], + { #30e4876a: { #c1127ea9: 87 } }, + { + #c54bdc44: true, + #c4225f4d: 154, + #d04948b2: 156 + })> + })> + ])> + ])> + })>, + <#f173dfc2: + ({ + #d121c0bd: 168, + #21793419: + ({ #c7b317f4: 45, #c68b4ed6: 1 }, + { #c7b317f4: 47, #c68b4ed6: 1 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "operator new", #2cdb06fb: [ "operator new" ] }, + { #c1127ea9: 169 }, + { + #d2e9b40c: "13351464032276683690", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 170, + #21793419: + ({ #c7b317f4: 45, #c68b4ed6: 20 }, { #c68b4ed6: 34 }) + }, + { #c8ff724b: "size", #2cdb06fb: [ "size" ] }, + { #c1127ea9: 67 }, + { #0370b1b2: 0 })>, + <#fd75cc45: + ({ + #d121c0bd: 171, + #21793419: ({ #c68b4ed6: 40 }, { #c68b4ed6: 46 }) + }, + { #c8ff724b: "ptr", #2cdb06fb: [ "ptr" ] }, + { #c1127ea9: 130 }, + { #0370b1b2: 1 })>, + <#fd75cc45: + ({ + #d121c0bd: 172, + #21793419: ({ #c68b4ed6: 51 }, { #c68b4ed6: 57 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "ptr2", #2cdb06fb: [ "ptr2" ] }, + { #c1127ea9: 130 }, + { #0370b1b2: 2 })> + ], + #ebe3c415: 168, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 173, + #21793419: + ({ #c68b4ed6: 72 }, { #c7b317f4: 47, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 174, + #21793419: + ({ #c7b317f4: 46, #c68b4ed6: 3 }, + { #c68b4ed6: 10 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 175, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 176, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }) + }, + [], + { + #30e4876a: { #c1127ea9: 130 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 172, + #c8ff724b: { + #c8ff724b: "ptr2", + #2cdb06fb: [ "ptr2" ] + }, + #30e4876a: { #c1127ea9: 130 } + } + })> + ], + { #30e4876a: { #c1127ea9: 130 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + ])> + ])> + })>, + <#21116177: + ({ + #d121c0bd: 177, + #21793419: ({ #c7b317f4: 47, #c68b4ed6: 2 }, { #c68b4ed6: 2 }) + })>, + <#f173dfc2: + ({ + #d121c0bd: 178, + #21793419: + ({ #c7b317f4: 49, #c68b4ed6: 1 }, + { #c7b317f4: 52, #c68b4ed6: 1 }) + }, + { #c8ff724b: "test_placement", #2cdb06fb: [ "test_placement" ] }, + { #c1127ea9: 179 }, + { + #d2e9b40c: "1553186570458038035", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 180, + #21793419: + ({ #c7b317f4: 49, #c68b4ed6: 21 }, { #c68b4ed6: 27 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "ptr", #2cdb06fb: [ "ptr" ] }, + { #c1127ea9: 130 }, + { #0370b1b2: 0 })> + ], + #ebe3c415: 178, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 181, + #21793419: + ({ #c68b4ed6: 32 }, { #c7b317f4: 52, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 182, + #21793419: + ({ #c7b317f4: 50, #c68b4ed6: 3 }, + { #c68b4ed6: 12 }) + }, + [ + <#0fb8fb71: + ({ + #d121c0bd: 183, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 184, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 11 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "i", #2cdb06fb: [ "i" ] }, + { #c1127ea9: 11 }, + { + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 183, + #21793419: + ({ #c68b4ed6: 11 }, + { #c68b4ed6: 11 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })> + })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 185, + #21793419: + ({ #c7b317f4: 51, #c68b4ed6: 3 }, + { #c68b4ed6: 30 }) + }, + [ + <#c00c83f2: + ({ + #d121c0bd: 186, + #21793419: + ({ #c68b4ed6: 13 }, { #c68b4ed6: 27 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 187, + #21793419: + ({ #c68b4ed6: 27 }, { #c68b4ed6: 27 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 188, + #21793419: + ({ #c68b4ed6: 18 }, { #c68b4ed6: 18 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 189, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 18 }) + }, + [], + { + #30e4876a: { #c1127ea9: 130 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 180, + #c8ff724b: { + #c8ff724b: "ptr", + #2cdb06fb: [ "ptr" ] + }, + #30e4876a: { #c1127ea9: 130 } + } + })> + ], + { #30e4876a: { #c1127ea9: 130 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })>, + <#c3b129f9: + ({ + #d121c0bd: 190, + #21793419: + ({ #c68b4ed6: 23 }, { #c68b4ed6: 24 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 191, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 24 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 192, + #21793419: + ({ #c68b4ed6: 24 }, + { #c68b4ed6: 24 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 184, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ "i" ] + }, + #30e4876a: { + #c1127ea9: 11 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 60 } }, + { #c709e154: <#d3b492c8> })> + ], + { #30e4876a: { #c1127ea9: 130 } }, + { #c91e0a14: <#2b10160c>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 72 } }, + { #d04948b2: 187, #cacc0137: [ 188, 190 ] })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 193, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 27 }) + }, + { #c8ff724b: "p", #2cdb06fb: [ "p" ] }, + { #c1127ea9: 74 }, + { + #fe93c404: + <#c00c83f2: + ({ + #d121c0bd: 186, + #21793419: + ({ #c68b4ed6: 13 }, + { #c68b4ed6: 27 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 187, + #21793419: + ({ #c68b4ed6: 27 }, + { #c68b4ed6: 27 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 12, + #c8ff724b: { + #c8ff724b: "pod", + #2cdb06fb: [ "pod", "pod" ] + }, + #30e4876a: { #c1127ea9: 13 } + } + })>, + <#c3b129f9: + ({ + #d121c0bd: 188, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 18 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 189, + #21793419: + ({ #c68b4ed6: 18 }, + { #c68b4ed6: 18 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 130 + }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#334f163b>, + #ec05e4a8: 180, + #c8ff724b: { + #c8ff724b: "ptr", + #2cdb06fb: [ "ptr" ] + }, + #30e4876a: { + #c1127ea9: 130 + } + } + })> + ], + { #30e4876a: { #c1127ea9: 130 } }, + { + #c91e0a14: <#f7495e1f>, + #fa1a3bd3: [] + })>, + <#c3b129f9: + ({ + #d121c0bd: 190, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 24 }) + }, + [ + <#30da4453: + ({ + #d121c0bd: 191, + #21793419: + ({ #c68b4ed6: 23 }, + { #c68b4ed6: 24 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 192, + #21793419: + ({ + #c68b4ed6: 24 + }, + { + #c68b4ed6: 24 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 11 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#004196c7>, + #ec05e4a8: 184, + #c8ff724b: { + #c8ff724b: "i", + #2cdb06fb: [ + "i" + ] + }, + #30e4876a: { + #c1127ea9: 11 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 60 + } + }, + { #c709e154: <#d3b492c8> })> + ], + { #30e4876a: { #c1127ea9: 130 } }, + { + #c91e0a14: <#2b10160c>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 72 } }, + { + #d04948b2: 187, + #cacc0137: [ 188, 190 ] + })> + })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 194, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 195, + { })> + ], + { }, + { + #e870593a: "tests/new.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 100 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 196 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 197 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 198 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 199 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 11 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 200 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 201 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 202 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 203 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 204 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 205 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 206 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 207 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 208 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 209 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 210 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 211 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 212 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 213 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 214 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 215 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 216 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 217 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 218 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 219 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 220 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 221 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 222 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 223 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 224 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 225 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 226 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 227 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 228 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 229 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 230 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 231 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 232 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 233 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 234 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 235 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 236 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 237 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 238 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 239 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 240 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 241 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 242 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 243 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 244 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 245 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 246 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 247 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 248 })>, + <#2e6cf4ea: ({ #d121c0bd: 249 })>, + <#2e6cf4ea: ({ #d121c0bd: 250 })>, + <#2e6cf4ea: ({ #d121c0bd: 251 })>, + <#22d546dd: ({ #d121c0bd: 252 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 253 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 254 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 130 }, { #c1127ea9: 100 })>, + <#22d546dd: ({ #d121c0bd: 255 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 256 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 257 }, 258)>, + <#d3d219f7: ({ #d121c0bd: 259 }, { #c1127ea9: 11, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 260 }, { #c1127ea9: 197, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 261 }, { #c1127ea9: 197 })>, + <#d80cb60b: ({ #d121c0bd: 262 }, 263)>, + <#da0c5ecf: + ({ #d121c0bd: 264 }, + { #cd26765d: { #c1127ea9: 262 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d80cb60b: ({ #d121c0bd: 25 }, 24)>, + <#d3d219f7: ({ #d121c0bd: 87 }, { #c1127ea9: 25 })>, + <#26796f6a: + ({ #d121c0bd: 31 }, { #f9c96be9: { #c1127ea9: 100 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 37 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 11 }, { #c1127ea9: 11 } ] })>, + <#26796f6a: + ({ #d121c0bd: 265 }, { #f9c96be9: { #c1127ea9: 100 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 18 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 266 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 18 } ] })>, + <#26796f6a: + ({ #d121c0bd: 16 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 18 } ] })>, + <#295746e6: ({ #d121c0bd: 22 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 267 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 22 } ] })>, + <#26796f6a: + ({ #d121c0bd: 20 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 22 } ] })>, + <#26796f6a: + ({ #d121c0bd: 13 }, { #f9c96be9: { #c1127ea9: 100 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 268 }, { #c1127ea9: 269 })>, + <#d3d219f7: ({ #d121c0bd: 60 }, { #c1127ea9: 11 })>, + <#26796f6a: + ({ #d121c0bd: 121 }, + { #f9c96be9: { #c1127ea9: 130 } }, + { #08ec7593: [ { #c1127ea9: 67 } ] })>, + <#26796f6a: + ({ #d121c0bd: 179 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 130 } ] })>, + <#26796f6a: + ({ #d121c0bd: 128 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 130 } ] })>, + <#f3f3711a: ({ #d121c0bd: 270 })>, + <#f3f3711a: ({ #d121c0bd: 271 })>, + <#d3d219f7: ({ #d121c0bd: 272 }, { #c1127ea9: 270 })>, + <#d3d219f7: ({ #d121c0bd: 273 }, { #c1127ea9: 271 })>, + <#09e09de9: ({ #d121c0bd: 101, #26f32be5: 11 })>, + <#d3d219f7: ({ #d121c0bd: 62 }, { #c1127ea9: 101 })>, + <#da0c5ecf: + ({ #d121c0bd: 274 }, + { #cd26765d: { #c1127ea9: 11 }, #11302019: 4 }, + 10)>, + <#f3f3711a: ({ #d121c0bd: 275 })>, + <#d3d219f7: ({ #d121c0bd: 276 }, { #c1127ea9: 275 })>, + <#d3d219f7: ({ #d121c0bd: 72 }, { #c1127ea9: 8 })>, + <#f3f3711a: ({ #d121c0bd: 277 })>, + <#d3d219f7: ({ #d121c0bd: 278 }, { #c1127ea9: 277 })>, + <#09e09de9: ({ #d121c0bd: 108, #26f32be5: 8 })>, + <#d3d219f7: ({ #d121c0bd: 74 }, { #c1127ea9: 108 })>, + <#da0c5ecf: + ({ #d121c0bd: 80 }, + { #cd26765d: { #c1127ea9: 8 }, #11302019: 4 }, + 10)>, + <#26796f6a: + ({ #d121c0bd: 279 }, { #f9c96be9: { #c1127ea9: 100 } }, { })>, + <#f3f3711a: ({ #d121c0bd: 280 })>, + <#d3d219f7: ({ #d121c0bd: 281 }, { #c1127ea9: 280 })>, + <#0b08cd60: ({ #d121c0bd: 49 }, { #c1127ea9: 25, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 282 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 49 } ] })>, + <#26796f6a: + ({ #d121c0bd: 47 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 49 } ] })>, + <#295746e6: ({ #d121c0bd: 53 }, { #c1127ea9: 25 })>, + <#26796f6a: + ({ #d121c0bd: 283 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 53 } ] })>, + <#26796f6a: + ({ #d121c0bd: 51 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { #08ec7593: [ { #c1127ea9: 53 } ] })>, + <#f3f3711a: ({ #d121c0bd: 284 })>, + <#d3d219f7: ({ #d121c0bd: 285 }, { #c1127ea9: 284 })>, + <#09e09de9: ({ #d121c0bd: 115, #26f32be5: 25 })>, + <#d3d219f7: ({ #d121c0bd: 89 }, { #c1127ea9: 115 })>, + <#da0c5ecf: + ({ #d121c0bd: 95 }, + { #cd26765d: { #c1127ea9: 25 }, #11302019: 12 }, + 10)>, + <#26796f6a: + ({ #d121c0bd: 286 }, { #f9c96be9: { #c1127ea9: 100 } }, { })>, + <#f3f3711a: ({ #d121c0bd: 287 })>, + <#d3d219f7: ({ #d121c0bd: 288 }, { #c1127ea9: 287 })>, + <#da0c5ecf: + ({ #d121c0bd: 144 }, + { #cd26765d: { #c1127ea9: 11 }, #11302019: 4 }, + 3)>, + <#f3f3711a: ({ #d121c0bd: 289 })>, + <#d3d219f7: ({ #d121c0bd: 290 }, { #c1127ea9: 289 })>, + <#f3f3711a: ({ #d121c0bd: 291 })>, + <#d3d219f7: ({ #d121c0bd: 292 }, { #c1127ea9: 291 })>, + <#da0c5ecf: + ({ #d121c0bd: 166 }, + { #cd26765d: { #c1127ea9: 25 }, #11302019: 12 }, + 4)>, + <#f3f3711a: ({ #d121c0bd: 293 })>, + <#d3d219f7: ({ #d121c0bd: 294 }, { #c1127ea9: 293 })>, + <#26796f6a: + ({ #d121c0bd: 295 }, + { #f9c96be9: { #c1127ea9: 130 } }, + { + #08ec7593: [ + { #c1127ea9: 67 }, + { #c1127ea9: 130 }, + { #c1127ea9: 130 } + ] + })>, + <#26796f6a: + ({ #d121c0bd: 169 }, + { #f9c96be9: { #c1127ea9: 130 } }, + { + #08ec7593: [ + { #c1127ea9: 67 }, + { #c1127ea9: 130 }, + { #c1127ea9: 130 } + ] + })>, + <#26796f6a: + ({ #d121c0bd: 296 }, + { #f9c96be9: { #c1127ea9: 100 } }, + { + #08ec7593: [ + { #c1127ea9: 130 }, + { #c1127ea9: 130 }, + { #c1127ea9: 130 } + ] + })>, + <#f3f3711a: ({ #d121c0bd: 297 })>, + <#d3d219f7: ({ #d121c0bd: 298 }, { #c1127ea9: 297 })>, + <#0098a8c5: ({ #d121c0bd: 299 }, { #fcd148e8: 252 })>, + <#2e3d736c: ({ #d121c0bd: 300 }, { #c1127ea9: 299 })>, + <#19e1ef85: + ({ #d121c0bd: 301, #26f32be5: 300 }, + { #0b680f7d: { #c1127ea9: 300 }, #c3687459: 302 })>, + <#19e1ef85: + ({ #d121c0bd: 195, #26f32be5: 300 }, + { #0b680f7d: { #c1127ea9: 301 }, #c3687459: 194 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/no_except_expr.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/no_except_expr.cpp.exp new file mode 100644 index 000000000..d9d32251d --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/no_except_expr.cpp.exp @@ -0,0 +1,285 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f173dfc2: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/no_except_expr.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c68b4ed6: 27 }), + #d3368c8a: true + }, + { #c8ff724b: "no_throw", #2cdb06fb: [ "no_throw" ] }, + { #c1127ea9: 8 }, + { + #d2e9b40c: "17033017651186285990", + #f1a45f0e: true, + #ebe3c415: 7, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 9, + #21793419: ({ #c68b4ed6: 26 }, { #c68b4ed6: 27 }) + }, + [])> + })>, + <#21116177: + ({ + #d121c0bd: 10, + #21793419: ({ #c68b4ed6: 28 }, { #c68b4ed6: 28 }) + })>, + <#f173dfc2: + ({ + #d121c0bd: 11, + #21793419: ({ #c7b317f4: 9, #c68b4ed6: 1 }, { #c68b4ed6: 43 }) + }, + { #c8ff724b: "main", #2cdb06fb: [ "main" ] }, + { #c1127ea9: 12 }, + { + #f1a45f0e: true, + #ebe3c415: 11, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 43 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 14, + #21793419: ({ #c68b4ed6: 14 }, { #c68b4ed6: 40 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 15, + #21793419: + ({ #c68b4ed6: 21 }, { #c68b4ed6: 40 }) + }, + [ + <#d1cde112: + ({ + #d121c0bd: 16, + #21793419: + ({ #c68b4ed6: 21 }, { #c68b4ed6: 40 }) + }, + [ + <#c59ea513: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 39 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 18, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 30 }, + { #c68b4ed6: 30 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 8 + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#ee046738>, + #ec05e4a8: 7, + #c8ff724b: { + #c8ff724b: + "no_throw", + #2cdb06fb: [ + "no_throw" + ] + }, + #30e4876a: { + #c1127ea9: 8 + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 20 + } + }, + { + #c91e0a14: <#210490b0>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 21 } })> + ], + { #30e4876a: { #c1127ea9: 22 } }, + { #31b87f71: true })> + ], + { #30e4876a: { #c1127ea9: 23 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })> + ])> + ])> + })>, + <#0f3f4d35: + ({ #d121c0bd: 24, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 25, + { })> + ], + { }, + { + #e870593a: "tests/no_except_expr.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 21 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 78 })>, + <#2e6cf4ea: ({ #d121c0bd: 79 })>, + <#2e6cf4ea: ({ #d121c0bd: 80 })>, + <#2e6cf4ea: ({ #d121c0bd: 81 })>, + <#22d546dd: ({ #d121c0bd: 82 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 85 }, { #c1127ea9: 21 })>, + <#22d546dd: ({ #d121c0bd: 86 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 88 }, 89)>, + <#d3d219f7: ({ #d121c0bd: 90 }, { #c1127ea9: 23, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 91 }, { #c1127ea9: 26, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 92 }, { #c1127ea9: 26 })>, + <#d80cb60b: ({ #d121c0bd: 93 }, 94)>, + <#da0c5ecf: + ({ #d121c0bd: 95 }, + { #cd26765d: { #c1127ea9: 93 }, #11302019: 24 }, + 1)>, + <#26796f6a: + ({ #d121c0bd: 96 }, { #f9c96be9: { #c1127ea9: 21 } }, { })>, + <#26796f6a: ({ #d121c0bd: 8 }, { #f9c96be9: { #c1127ea9: 21 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 12 }, { #f9c96be9: { #c1127ea9: 23 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 97 }, { #c1127ea9: 92 })>, + <#d3d219f7: ({ #d121c0bd: 98 }, { #c1127ea9: 96 })>, + <#d3d219f7: ({ #d121c0bd: 20 }, { #c1127ea9: 8 })>, + <#0098a8c5: ({ #d121c0bd: 99 }, { #fcd148e8: 82 })>, + <#2e3d736c: ({ #d121c0bd: 100 }, { #c1127ea9: 99 })>, + <#19e1ef85: + ({ #d121c0bd: 101, #26f32be5: 100 }, + { #0b680f7d: { #c1127ea9: 100 }, #c3687459: 102 })>, + <#19e1ef85: + ({ #d121c0bd: 25, #26f32be5: 100 }, + { #0b680f7d: { #c1127ea9: 101 }, #c3687459: 24 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/objcpp_template_unboxing.mm.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/objcpp_template_unboxing.mm.exp new file mode 100644 index 000000000..35a3cb4ad --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/objcpp_template_unboxing.mm.exp @@ -0,0 +1,193 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "SEL", #2cdb06fb: [ "SEL" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "id", #2cdb06fb: [ "id" ] }, + 6, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 7, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "Class", #2cdb06fb: [ "Class" ] }, + 0, + { })>, + <#18d25297: + ({ + #d121c0bd: 8, + #f9005968: 1, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "Protocol", #2cdb06fb: [ "Protocol" ] }, + [], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 9, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 10, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 11, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#c589b11c: + ({ + #d121c0bd: 12, + #21793419: + ({ + #c3bbce7c: "tests/objcpp_template_unboxing.mm", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 10, #c68b4ed6: 1 }) + }, + { #c8ff724b: "box", #2cdb06fb: [ "box" ] }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 13, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 14, + { })> + ], + { }, + { + #e870593a: "tests/objcpp_template_unboxing.mm", + #e52854e9: <#20cf8e89>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 15 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 16 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 17 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 18 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 70 })>, + <#2e6cf4ea: ({ #d121c0bd: 71 })>, + <#2e6cf4ea: ({ #d121c0bd: 72 })>, + <#2e6cf4ea: ({ #d121c0bd: 73 })>, + <#22d546dd: ({ #d121c0bd: 74 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 77 }, { #c1127ea9: 15 })>, + <#22d546dd: ({ #d121c0bd: 78 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#2fe155d3>)>, + <#d3d219f7: ({ #d121c0bd: 80 }, { #c1127ea9: 76 })>, + <#0098a8c5: ({ #d121c0bd: 81 }, { #fcd148e8: 74 })>, + <#2e3d736c: ({ #d121c0bd: 82 }, { #c1127ea9: 81 })>, + <#0098a8c5: ({ #d121c0bd: 83 }, { #fcd148e8: 75 })>, + <#2e3d736c: ({ #d121c0bd: 84 }, { #c1127ea9: 83 })>, + <#2374f4e7: ({ #d121c0bd: 85 }, 8)>, + <#d80cb60b: ({ #d121c0bd: 86 }, 87)>, + <#d3d219f7: ({ #d121c0bd: 88 }, { #c1127ea9: 20, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 89 }, { #c1127ea9: 17, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 90 }, { #c1127ea9: 17 })>, + <#d80cb60b: ({ #d121c0bd: 91 }, 92)>, + <#da0c5ecf: + ({ #d121c0bd: 93 }, + { #cd26765d: { #c1127ea9: 91 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 94 })>, + <#f3f3711a: ({ #d121c0bd: 95 })>, + <#26796f6a: + ({ #d121c0bd: 96 }, + { #f9c96be9: { #c1127ea9: 77 } }, + { #08ec7593: [ { #c1127ea9: 94 } ] })>, + <#26796f6a: + ({ #d121c0bd: 97 }, + { #f9c96be9: { #c1127ea9: 77 } }, + { #08ec7593: [ { #c1127ea9: 95 } ] })>, + <#19e1ef85: + ({ #d121c0bd: 6, #26f32be5: 82 }, + { #0b680f7d: { #c1127ea9: 82 }, #c3687459: 5 })>, + <#19e1ef85: + ({ #d121c0bd: 14, #26f32be5: 82 }, + { #0b680f7d: { #c1127ea9: 6 }, #c3687459: 13 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/optional.m.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/optional.m.exp new file mode 100644 index 000000000..2494946e3 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/optional.m.exp @@ -0,0 +1,876 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "SEL", #2cdb06fb: [ "SEL" ] }, + 5, + { })>, + <#0f3f4d35: + ({ + #d121c0bd: 6, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #d3368c8a: true + }, + { #c8ff724b: "id", #2cdb06fb: [ "id" ] }, + 7, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 8, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "Class", #2cdb06fb: [ "Class" ] }, + 0, + { })>, + <#18d25297: + ({ + #d121c0bd: 9, + #f9005968: 1, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "Protocol", #2cdb06fb: [ "Protocol" ] }, + [], + { }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 10, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 11, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 12, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#18d25297: + ({ + #d121c0bd: 13, + #f9005968: 1, + #21793419: + ({ #c3bbce7c: "tests/optional.m", #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 9, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [], + { }, + { })>, + <#e1b0618e: + ({ + #d121c0bd: 14, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, + { #c7b317f4: 12, #c68b4ed6: 2 }) + }, + { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] }, + [], + { }, + { })>, + <#e1b0618e: + ({ + #d121c0bd: 15, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 1 }, + { #c7b317f4: 17, #c68b4ed6: 2 }) + }, + { #c8ff724b: "BarDelegate", #2cdb06fb: [ "BarDelegate" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 16, + #f9005968: 15, + #21793419: + ({ #c7b317f4: 16, #c68b4ed6: 1 }, { #c68b4ed6: 25 }) + }, + { + #c8ff724b: "optionalFunction", + #2cdb06fb: [ "optionalFunction", "BarDelegate" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 17 }, + #22b27dd5: true, + #d2e9b40c: "-[BarDelegate optionalFunction]" + })> + ], + { }, + { + #d688371b: [ + { + #c709e154: <#cd511304>, + #ec05e4a8: 14, + #c8ff724b: { + #c8ff724b: "NSObject", + #2cdb06fb: [ "NSObject" ] + } + } + ] + })>, + <#18d25297: + ({ + #d121c0bd: 18, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 1 }, + { #c7b317f4: 21, #c68b4ed6: 2 }) + }, + { #c8ff724b: "Bar", #2cdb06fb: [ "Bar" ] }, + [ + <#c5b2960b: + ({ + #d121c0bd: 19, + #f9005968: 18, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 1 }, { #c68b4ed6: 46 }) + }, + { #c8ff724b: "delegate", #2cdb06fb: [ "delegate", "Bar" ] }, + { + #30e4876a: { #c1127ea9: 20 }, + #3106f0d5: { + #c709e154: <#e655f08d>, + #ec05e4a8: 21, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "Bar" ] + } + }, + #f60cd2e1: { + #c709e154: <#e655f08d>, + #ec05e4a8: 22, + #c8ff724b: { + #c8ff724b: "setDelegate:", + #2cdb06fb: [ "setDelegate:", "Bar" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "_delegate", + #2cdb06fb: [ "_delegate", "Bar" ] + }, + #30e4876a: { #c1127ea9: 20 } + }, + #e42793c1: [ + <#009aba4f>, <#2fe629a9>, <#cd718b98>, <#374fb956> + ] + })>, + <#3ccd3797: + ({ + #d121c0bd: 21, + #f9005968: 18, + #21793419: ({ #c68b4ed6: 46 }, { #c68b4ed6: 46 }), + #eb8a1f5a: true + }, + { #c8ff724b: "delegate", #2cdb06fb: [ "delegate", "Bar" ] }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 20 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "Bar" ] + } + }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 24, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 25, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 26, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[Bar delegate]" + })>, + <#3ccd3797: + ({ + #d121c0bd: 22, + #f9005968: 18, + #21793419: ({ #c68b4ed6: 46 }, { #c68b4ed6: 46 }), + #eb8a1f5a: true + }, + { + #c8ff724b: "setDelegate:", + #2cdb06fb: [ "setDelegate:", "Bar" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 17 }, + #001e675c: true, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "Bar" ] + } + }, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 27, + #21793419: ({ #c68b4ed6: 46 }, { #c68b4ed6: 46 }) + }, + { #c8ff724b: "delegate", #2cdb06fb: [ "delegate" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ], + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 28, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 25, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 29, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #d2e9b40c: "-[Bar setDelegate:]" + })> + ], + { }, + { + #04c0017b: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 13, + #c8ff724b: { #c8ff724b: "NSObject", #2cdb06fb: [ "NSObject" ] } + }, + #d32dd232: { + #c709e154: <#c37c57de>, + #ec05e4a8: 30, + #c8ff724b: { #c8ff724b: "Bar", #2cdb06fb: [ "Bar" ] } + } + })>, + <#0e281b68: + ({ + #d121c0bd: 30, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, + { #c7b317f4: 28, #c68b4ed6: 1 }) + }, + { #c8ff724b: "Bar", #2cdb06fb: [ "Bar" ] }, + [ + <#3ccd3797: + ({ + #d121c0bd: 31, + #f9005968: 30, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 1 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "unsafeAction", + #2cdb06fb: [ "unsafeAction", "Bar" ] + }, + { + #3ba2c7f6: true, + #137b649c: { #c1127ea9: 17 }, + #28dcb2c4: [ + <#d0d84992: + ({ + #d121c0bd: 32, + #21793419: ({ }, { }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "self", #2cdb06fb: [ "self" ] }, + { #c1127ea9: 25, #ea1a680e: true }, + { })>, + <#d0d84992: + ({ + #d121c0bd: 33, + #21793419: ({ }, { }), + #eb8a1f5a: true + }, + { #c8ff724b: "_cmd", #2cdb06fb: [ "_cmd" ] }, + { #c1127ea9: 5 }, + { })> + ], + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 34, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 22 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + [ + <#d0cddcea: + ({ + #d121c0bd: 35, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 3 }, + { #c68b4ed6: 34 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 36, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 34 }) + }, + [ + <#26afa8d2: + ({ + #d121c0bd: 37, + #21793419: + ({ #c68b4ed6: 4 }, + { #c68b4ed6: 9 }) + }, + [ + <#e9c8dd27: + ({ + #d121c0bd: 38, + #21793419: + ({ #c68b4ed6: 4 }, + { #c68b4ed6: 9 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 39, + #21793419: + ({ #c68b4ed6: 4 }, + { #c68b4ed6: 4 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 40, + #21793419: + ({ + #c68b4ed6: + 4 + }, + { + #c68b4ed6: + 4 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 41, + #21793419: + ( + { + #c68b4ed6: + 4 + }, + { + #c68b4ed6: + 4 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 32, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: 42 + }, + #0e89e422: <#28055b85>, + #d61caa14: <#f9260501> + }, + { + #c709e154: + <#fac503de: { + #c709e154: <#f9260501>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: + "delegate", + #2cdb06fb: [ + "delegate", "Bar" + ] + } + }>, + #2827bd9b: true + })>, + <#0d679c05: + ({ + #d121c0bd: 39, + #21793419: + ({ #c68b4ed6: 4 }, + { #c68b4ed6: 4 }) + }, + [], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: 40, + #21793419: + ({ #c68b4ed6: 4 }, + { #c68b4ed6: 4 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 41, + #21793419: + ({ + #c68b4ed6: + 4 + }, + { + #c68b4ed6: + 4 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 32, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: [] + })> + })>, + <#c3b129f9: + ({ + #d121c0bd: 43, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 9 }) + }, + [ + <#f104c570: + ({ + #d121c0bd: 44, + #21793419: + ({ #c68b4ed6: 9 }, + { #c68b4ed6: 9 }) + }, + [ + <#0d679c05: + ({ + #d121c0bd: 39, + #21793419: + ({ + #c68b4ed6: + 4 + }, + { + #c68b4ed6: + 4 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: 25 + } + }, + { + #12076e59: + <#c3b129f9: + ({ + #d121c0bd: + 40, + #21793419: + ( + { + #c68b4ed6: + 4 + }, + { + #c68b4ed6: + 4 + }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: + 41, + #21793419: + ( + { + #c68b4ed6: + 4 + }, + { + #c68b4ed6: + 4 + }) + }, + [], + { + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + }, + #0e89e422: + <#28055b85> + }, + { + #c369ebbe: { + #c709e154: + <#c6dba908>, + #ec05e4a8: + 32, + #c8ff724b: { + #c8ff724b: + "self", + #2cdb06fb: [ + "self" + ] + }, + #30e4876a: { + #c1127ea9: + 25, + #ea1a680e: + true + } + } + })> + ], + { + #30e4876a: { + #c1127ea9: + 25 + } + }, + { + #c91e0a14: + <#f7495e1f>, + #fa1a3bd3: + [] + })> + })> + ], + { + #30e4876a: { + #c1127ea9: 20 + } + }, + { + #316d331f: "delegate", + #ec05e4a8: 21 + })> + ], + { + #30e4876a: { + #c1127ea9: 20 + } + }, + { + #c91e0a14: <#e02d4a65>, + #fa1a3bd3: [] + })> + ], + { #30e4876a: { #c1127ea9: 20 } })> + ], + { #30e4876a: { #c1127ea9: 17 } }, + { + #316d331f: "optionalFunction", + #ec05e4a8: 16 + })> + ], + { #30e4876a: { #c1127ea9: 17 } }, + { })> + ])>, + #d2e9b40c: "-[Bar unsafeAction]" + })>, + <#070ee654: + ({ + #d121c0bd: 23, + #f9005968: 30, + #21793419: + ({ #c7b317f4: 20, #c68b4ed6: 46 }, { #c68b4ed6: 46 }) + }, + { #c8ff724b: "_delegate", #2cdb06fb: [ "_delegate", "Bar" ] }, + { #c1127ea9: 20 }, + { }, + { #015a971f: true, #f9049e82: <#d6c054e3> })>, + <#c1a9158b: + ({ #d121c0bd: 45, #21793419: ({ }, { #c68b4ed6: 46 }) }, + { + #d32dd232: <#009015ca>, + #2c8fcfd4: { + #c709e154: <#f9260501>, + #ec05e4a8: 19, + #c8ff724b: { + #c8ff724b: "delegate", + #2cdb06fb: [ "delegate", "Bar" ] + } + }, + #2e0d396b: { + #c709e154: <#38103cca>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "_delegate", + #2cdb06fb: [ "_delegate", "Bar" ] + }, + #30e4876a: { #c1127ea9: 20 } + } + })> + ], + { }, + { + #2ec29bb2: { + #c709e154: <#3cf18b8d>, + #ec05e4a8: 18, + #c8ff724b: { #c8ff724b: "Bar", #2cdb06fb: [ "Bar" ] } + } + })>, + <#0f3f4d35: + ({ #d121c0bd: 46, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 47, + { })> + ], + { }, + { + #e870593a: "tests/optional.m", + #e52854e9: <#3ff69d49>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 17 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 99 })>, + <#2e6cf4ea: ({ #d121c0bd: 100 })>, + <#2e6cf4ea: ({ #d121c0bd: 101 })>, + <#2e6cf4ea: ({ #d121c0bd: 102 })>, + <#22d546dd: ({ #d121c0bd: 103 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 106 }, { #c1127ea9: 17 })>, + <#22d546dd: ({ #d121c0bd: 107 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#2fe155d3>)>, + <#d3d219f7: ({ #d121c0bd: 109 }, { #c1127ea9: 105 })>, + <#0098a8c5: ({ #d121c0bd: 110 }, { #fcd148e8: 103 })>, + <#2e3d736c: ({ #d121c0bd: 111 }, { #c1127ea9: 110 })>, + <#0098a8c5: ({ #d121c0bd: 112 }, { #fcd148e8: 104 })>, + <#2e3d736c: ({ #d121c0bd: 113 }, { #c1127ea9: 112 })>, + <#2374f4e7: ({ #d121c0bd: 114 }, 9)>, + <#d80cb60b: ({ #d121c0bd: 115 }, 116)>, + <#d3d219f7: ({ #d121c0bd: 117 }, { #c1127ea9: 52, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 118 }, { #c1127ea9: 49, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 119 }, { #c1127ea9: 49 })>, + <#d80cb60b: ({ #d121c0bd: 120 }, 121)>, + <#da0c5ecf: + ({ #d121c0bd: 122 }, + { #cd26765d: { #c1127ea9: 120 }, #11302019: 24 }, + 1)>, + <#2374f4e7: ({ #d121c0bd: 123 }, 13)>, + <#19e1ef85: + ({ #d121c0bd: 7, #26f32be5: 111 }, + { #0b680f7d: { #c1127ea9: 111 }, #c3687459: 6 })>, + <#19e1ef85: + ({ #d121c0bd: 47, #26f32be5: 111 }, + { #0b680f7d: { #c1127ea9: 7 }, #c3687459: 46 })>, + <#2374f4e7: ({ #d121c0bd: 124 }, 18)>, + <#0098a8c5: + ({ #d121c0bd: 125 }, { #fcd148e8: 103, #0b037c51: [ 15 ] })>, + <#2e3d736c: ({ #d121c0bd: 20 }, { #c1127ea9: 125 })>, + <#2e3d736c: ({ #d121c0bd: 25 }, { #c1127ea9: 124 })>, + <#19e1ef85: + ({ #d121c0bd: 5, #26f32be5: 109 }, + { #0b680f7d: { #c1127ea9: 109 }, #c3687459: 4 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/sizeof_static_evaluation.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/sizeof_static_evaluation.cpp.exp new file mode 100644 index 000000000..22601de88 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/sizeof_static_evaluation.cpp.exp @@ -0,0 +1,314 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#37b901fc: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/sizeof_static_evaluation.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 8, #c68b4ed6: 7 }) + }, + { #c8ff724b: "__foo", #2cdb06fb: [ "__foo" ] }, + { })>, + <#2339e324: + ({ + #d121c0bd: 8, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 10, #c68b4ed6: 1 }, + { #c7b317f4: 16, #c68b4ed6: 1 }) + }, + { + #c8ff724b: "__foo", + #2cdb06fb: [ "__foo" ] + }, + 9, + [ + <#f50d797e: + ({ + #d121c0bd: 10, + #f9005968: 8, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "__foo", + #2cdb06fb: [ "__foo", "__foo" ] + }, + 9, + [], + { }, + <#01fae064>, + { #33244202: 0, #fd16bc2f: true }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 11, + #f9005968: 8, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, { #c68b4ed6: 19 }), + #0b0695a4: <#d6c054e3> + }, + { + #c8ff724b: "x", + #2cdb06fb: [ "x", "__foo" ] + }, + { #c1127ea9: 12 }, + { + #fe93c404: + <#c3b129f9: + ({ + #d121c0bd: 13, + #21793419: ({ #c68b4ed6: 11 }, { #c68b4ed6: 19 }) + }, + [ + <#ea792ce2: + ({ + #d121c0bd: 14, + #21793419: + ({ #c68b4ed6: 11 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #c709e154: <#f5a2cc58>, + #30e4876a: { #c1127ea9: 16 } + })> + ], + { #30e4876a: { #c1127ea9: 12 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })> + })>, + <#1cd5be29: + ({ + #d121c0bd: 17, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 2 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + })>, + <#cc498dc1: + ({ + #d121c0bd: 18, + #f9005968: 8, + #21793419: + ({ #c7b317f4: 15, #c68b4ed6: 3 }, { #c68b4ed6: 11 }), + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "__foo", + #2cdb06fb: [ + "__foo", + "__foo" + ] + }, + { #c1127ea9: 19 }, + { + #d2e9b40c: "800005863435481739", + #f1a45f0e: true, + #ebe3c415: 18, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 20, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 11 }) + }, + [])> + }, + { })> + ], + { }, + <#01fae064>, + { #33244202: 8, #1a9a7e84: true, #fd16bc2f: true }, + { }, + "2204753185921246810", + { + #e43971cf: 7, + #0de52551: [ <#37e21eda: { #c1127ea9: 21 }>, <#fae5d38c: "1"> ] + })>, + <#11c182d1: + ({ + #d121c0bd: 22, + #21793419: ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 20 }) + }, + { #c8ff724b: "y", #2cdb06fb: [ "y" ] }, + { #c1127ea9: 12 }, + { + #ccd69858: true, + #fe93c404: + <#c3b129f9: + ({ + #d121c0bd: 23, + #21793419: ({ #c68b4ed6: 9 }, { #c68b4ed6: 20 }) + }, + [ + <#ea792ce2: + ({ + #d121c0bd: 24, + #21793419: ({ #c68b4ed6: 9 }, { #c68b4ed6: 20 }) + }, + [], + { #30e4876a: { #c1127ea9: 15 } }, + { + #c709e154: <#c2fc5e5f: 1>, + #30e4876a: { #c1127ea9: 25 } + })> + ], + { #30e4876a: { #c1127ea9: 12 } }, + { #c91e0a14: <#2677d46b>, #fa1a3bd3: [] })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 26, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 27, + { })> + ], + { }, + { + #e870593a: "tests/sizeof_static_evaluation.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 28 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 12 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 15 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 80 })>, + <#2e6cf4ea: ({ #d121c0bd: 81 })>, + <#2e6cf4ea: ({ #d121c0bd: 82 })>, + <#2e6cf4ea: ({ #d121c0bd: 83 })>, + <#22d546dd: ({ #d121c0bd: 84 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 87 }, { #c1127ea9: 28 })>, + <#22d546dd: ({ #d121c0bd: 88 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 90 }, 91)>, + <#d3d219f7: ({ #d121c0bd: 92 }, { #c1127ea9: 12, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 93 }, { #c1127ea9: 25, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 94 }, { #c1127ea9: 25 })>, + <#d80cb60b: ({ #d121c0bd: 95 }, 96)>, + <#da0c5ecf: + ({ #d121c0bd: 97 }, + { #cd26765d: { #c1127ea9: 95 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 21 })>, + <#f3f3711a: ({ #d121c0bd: 98 })>, + <#ece2635f: ({ #d121c0bd: 99 })>, + <#ece2635f: ({ #d121c0bd: 100 })>, + <#d49f978d: ({ #d121c0bd: 101 })>, + <#f3f3711a: ({ #d121c0bd: 16 })>, + <#ece2635f: ({ #d121c0bd: 102 })>, + <#ece2635f: ({ #d121c0bd: 103 })>, + <#d49f978d: ({ #d121c0bd: 9 })>, + <#ece2635f: ({ #d121c0bd: 104 })>, + <#d3d219f7: ({ #d121c0bd: 105 }, { #c1127ea9: 9 })>, + <#26796f6a: + ({ #d121c0bd: 19 }, { #f9c96be9: { #c1127ea9: 28 } }, { })>, + <#0098a8c5: ({ #d121c0bd: 106 }, { #fcd148e8: 84 })>, + <#2e3d736c: ({ #d121c0bd: 107 }, { #c1127ea9: 106 })>, + <#19e1ef85: + ({ #d121c0bd: 108, #26f32be5: 107 }, + { #0b680f7d: { #c1127ea9: 107 }, #c3687459: 109 })>, + <#19e1ef85: + ({ #d121c0bd: 27, #26f32be5: 107 }, + { #0b680f7d: { #c1127ea9: 108 }, #c3687459: 26 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/struct.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/struct.cpp.exp new file mode 100644 index 000000000..ef6ffb3bc --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/struct.cpp.exp @@ -0,0 +1,608 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ #c3bbce7c: "tests/struct.cpp", #c7b317f4: 7, #c68b4ed6: 1 }, + { #c7b317f4: 9, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "Point", #2cdb06fb: [ "Point" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Point", #2cdb06fb: [ "Point", "Point" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, { #c68b4ed6: 10 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "x", #2cdb06fb: [ "x", "Point" ] }, + { #c1127ea9: 11 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 12, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 13 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "y", #2cdb06fb: [ "y", "Point" ] }, + { #c1127ea9: 11 }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { #f1ae3b70: true })>, + <#f173dfc2: + ({ + #d121c0bd: 13, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 1 }) + }, + { #c8ff724b: "fun", #2cdb06fb: [ "fun" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "4651010030435487712", + #f1a45f0e: true, + #ebe3c415: 13, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 15, + #21793419: + ({ #c7b317f4: 11, #c68b4ed6: 12 }, + { #c7b317f4: 14, #c68b4ed6: 1 }) + }, + [ + <#152ea3f2: + ({ + #d121c0bd: 16, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 3 }, + { #c68b4ed6: 14 }) + }, + [], + [ + <#f50d797e: + ({ + #d121c0bd: 17, + #f9005968: 13, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 13 }), + #d3368c8a: true + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "fun" ] }, + 18, + [ + <#f50d797e: + ({ + #d121c0bd: 19, + #f9005968: 17, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 10 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X", "fun" ] + }, + 18, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 20, + #f9005968: 17, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X", "fun" ] + }, + { #c1127ea9: 21 }, + { + #d2e9b40c: "4417717915555375243", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 20, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 22, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 23, + #f9005968: 17, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X", "fun" ] + }, + { #c1127ea9: 24 }, + { + #d2e9b40c: "4190573168950999278", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 25, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + { + #c8ff724b: "", + #2cdb06fb: [ "" ] + }, + { #c1127ea9: 26 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 27, + #f9005968: 17, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 10 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X", "fun" ] + }, + { #c1127ea9: 28 }, + { + #d2e9b40c: "12437859369676964978", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 29, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 10 }) + }, + { + #c8ff724b: "", + #2cdb06fb: [ "" ] + }, + { #c1127ea9: 30 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 17, #1a9a7e84: true }, + { #f1ae3b70: true })> + ])>, + <#152ea3f2: + ({ + #d121c0bd: 31, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, + { #c68b4ed6: 6 }) + }, + [ + <#e5067ee9: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { #30e4876a: { #c1127ea9: 18 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 20, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X", "fun" ] + }, + #30e4876a: { #c1127ea9: 21 } + } + })> + ], + [ + <#11c182d1: + ({ + #d121c0bd: 33, + #21793419: + ({ #c68b4ed6: 3 }, { #c68b4ed6: 5 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 18 }, + { + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 32, + #21793419: + ({ #c68b4ed6: 5 }, { #c68b4ed6: 5 }) + }, + [], + { #30e4876a: { #c1127ea9: 18 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 20, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X", "fun" ] + }, + #30e4876a: { #c1127ea9: 21 } + } + })> + })> + ])> + ])> + })>, + <#11c182d1: + ({ + #d121c0bd: 34, + #21793419: ({ #c7b317f4: 16, #c68b4ed6: 1 }, { #c68b4ed6: 24 }) + }, + { #c8ff724b: "blank", #2cdb06fb: [ "blank" ] }, + { #c1127ea9: 8 }, + { + #ccd69858: true, + #fe93c404: + <#0fdba003: + ({ + #d121c0bd: 35, + #21793419: ({ #c68b4ed6: 15 }, { #c68b4ed6: 24 }) + }, + [ + <#d1b36d29: + ({ + #d121c0bd: 36, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + "3")>, + <#d1b36d29: + ({ + #d121c0bd: 37, + #21793419: ({ #c68b4ed6: 21 }, { #c68b4ed6: 21 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + "4")> + ], + { #30e4876a: { #c1127ea9: 8 } })> + })>, + <#f50d797e: + ({ + #d121c0bd: 38, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, + { #c7b317f4: 20, #c68b4ed6: 1 }) + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + 39, + [ + <#f50d797e: + ({ + #d121c0bd: 40, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + 39, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#11c182d1: + ({ + #d121c0bd: 41, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 3 }, { #c68b4ed6: 14 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "a", #2cdb06fb: [ "a", "A" ] }, + { #c1127ea9: 42 }, + { #ccd69858: true, #2b2043a3: true, #f3597133: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 38, #1a9a7e84: true }, + { #f1ae3b70: true })>, + <#11c182d1: + ({ + #d121c0bd: 43, + #f9005968: 38, + #21793419: ({ #c7b317f4: 22, #c68b4ed6: 1 }, { #c68b4ed6: 12 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "a", #2cdb06fb: [ "a", "A" ] }, + { #c1127ea9: 42 }, + { + #ccd69858: true, + #f3597133: true, + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 44, + #21793419: ({ #c68b4ed6: 12 }, { #c68b4ed6: 12 }) + }, + [], + { #30e4876a: { #c1127ea9: 42 } }, + { #d9aa98d1: true, #1f65f619: 32, #31b87f71: "32" })> + })>, + <#f50d797e: + ({ + #d121c0bd: 45, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 1 }, + { #c7b317f4: 26, #c68b4ed6: 1 }) + }, + { #c8ff724b: "B", #2cdb06fb: [ "B" ] }, + 46, + [ + <#f50d797e: + ({ + #d121c0bd: 47, + #f9005968: 45, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + 46, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#11c182d1: + ({ + #d121c0bd: 48, + #21793419: + ({ #c7b317f4: 25, #c68b4ed6: 3 }, { #c68b4ed6: 24 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "b", #2cdb06fb: [ "b", "B" ] }, + { #c1127ea9: 42, #ea1a680e: true }, + { + #ccd69858: true, + #2b2043a3: true, + #f3597133: true, + #dd3d1991: true, + #fe93c404: + <#0fb8fb71: + ({ + #d121c0bd: 49, + #21793419: ({ #c68b4ed6: 24 }, { #c68b4ed6: 24 }) + }, + [], + { #30e4876a: { #c1127ea9: 42 } }, + { #d9aa98d1: true, #1f65f619: 32, #31b87f71: "52" })> + })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 45, #1a9a7e84: true }, + { #f1ae3b70: true })>, + <#0f3f4d35: + ({ #d121c0bd: 50, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 51, + { })> + ], + { }, + { + #e870593a: "tests/struct.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 52 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 11 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 100 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 103 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 105 })>, + <#2e6cf4ea: ({ #d121c0bd: 106 })>, + <#2e6cf4ea: ({ #d121c0bd: 107 })>, + <#2e6cf4ea: ({ #d121c0bd: 108 })>, + <#22d546dd: ({ #d121c0bd: 109 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 110 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 111 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 112 }, { #c1127ea9: 52 })>, + <#22d546dd: ({ #d121c0bd: 113 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 115 }, 116)>, + <#d3d219f7: ({ #d121c0bd: 117 }, { #c1127ea9: 42, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 118 }, { #c1127ea9: 54, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 119 }, { #c1127ea9: 54 })>, + <#d80cb60b: ({ #d121c0bd: 120 }, 121)>, + <#da0c5ecf: + ({ #d121c0bd: 122 }, + { #cd26765d: { #c1127ea9: 120 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#26796f6a: + ({ #d121c0bd: 14 }, { #f9c96be9: { #c1127ea9: 52 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 18 }, 17)>, + <#26796f6a: + ({ #d121c0bd: 123 }, { #f9c96be9: { #c1127ea9: 52 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 26 }, { #c1127ea9: 18, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 124 }, + { #f9c96be9: { #c1127ea9: 52 } }, + { #08ec7593: [ { #c1127ea9: 26 } ] })>, + <#26796f6a: + ({ #d121c0bd: 24 }, + { #f9c96be9: { #c1127ea9: 52 } }, + { #08ec7593: [ { #c1127ea9: 26 } ] })>, + <#295746e6: ({ #d121c0bd: 30 }, { #c1127ea9: 18 })>, + <#26796f6a: + ({ #d121c0bd: 125 }, + { #f9c96be9: { #c1127ea9: 52 } }, + { #08ec7593: [ { #c1127ea9: 30 } ] })>, + <#26796f6a: + ({ #d121c0bd: 28 }, + { #f9c96be9: { #c1127ea9: 52 } }, + { #08ec7593: [ { #c1127ea9: 30 } ] })>, + <#26796f6a: + ({ #d121c0bd: 21 }, { #f9c96be9: { #c1127ea9: 52 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 39 }, 38)>, + <#d80cb60b: ({ #d121c0bd: 46 }, 45)>, + <#0098a8c5: ({ #d121c0bd: 126 }, { #fcd148e8: 109 })>, + <#2e3d736c: ({ #d121c0bd: 127 }, { #c1127ea9: 126 })>, + <#19e1ef85: + ({ #d121c0bd: 128, #26f32be5: 127 }, + { #0b680f7d: { #c1127ea9: 127 }, #c3687459: 129 })>, + <#19e1ef85: + ({ #d121c0bd: 51, #26f32be5: 127 }, + { #0b680f7d: { #c1127ea9: 128 }, #c3687459: 50 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/template_instantiations.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/template_instantiations.cpp.exp new file mode 100644 index 000000000..600204da8 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/template_instantiations.cpp.exp @@ -0,0 +1,2128 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#37b901fc: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/template_instantiations.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 8, #c68b4ed6: 15 }) + }, + { #c8ff724b: "Tuple", #2cdb06fb: [ "Tuple" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 8, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, + { #c7b317f4: 8, #c68b4ed6: 15 }) + }, + { #c8ff724b: "Tuple", #2cdb06fb: [ "Tuple" ] }, + 9, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { }, + "2296961816144140105", + { + #e43971cf: 7, + #0de52551: [ + <#352b02f9: [ <#37e21eda: { #c1127ea9: 10 }> ]> + ] + })>, + <#e0b96727: + ({ + #d121c0bd: 11, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, + { #c7b317f4: 8, #c68b4ed6: 15 }) + }, + { #c8ff724b: "Tuple", #2cdb06fb: [ "Tuple >" ] }, + 12, + [ + <#f50d797e: + ({ + #d121c0bd: 13, + #f9005968: 11, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "Tuple", + #2cdb06fb: [ "Tuple", "Tuple >" ] + }, + 12, + [], + { }, + <#c5b1f8a9>, + { #33244202: 11 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 14, + #f9005968: 11, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "Tuple", + #2cdb06fb: [ "Tuple", "Tuple >" ] + }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "16263929779680628849", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 14, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 16, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 17, + #f9005968: 11, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "Tuple", + #2cdb06fb: [ "Tuple", "Tuple >" ] + }, + { #c1127ea9: 18 }, + { + #d2e9b40c: "11014497521477142187", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 21, + #f9005968: 11, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "Tuple", + #2cdb06fb: [ "Tuple", "Tuple >" ] + }, + { #c1127ea9: 22 }, + { + #d2e9b40c: "15031955784438883279", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 23, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 24 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 11, #1a9a7e84: true }, + { #f1ae3b70: true }, + "8342447397680512296", + { + #e43971cf: 7, + #0de52551: [ + <#352b02f9: [ <#37e21eda: { #c1127ea9: 9 }> ]> + ] + })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 25, + #21793419: ({ #c7b317f4: 10, #c68b4ed6: 1 }, { #c68b4ed6: 19 }) + }, + { #c8ff724b: "x", #2cdb06fb: [ "x" ] }, + { #c1127ea9: 26 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 27, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 26 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 14, + #c8ff724b: { + #c8ff724b: "Tuple", + #2cdb06fb: [ "Tuple", "Tuple >" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#0f3f4d35: + ({ + #d121c0bd: 28, + #21793419: ({ #c7b317f4: 12, #c68b4ed6: 1 }, { #c68b4ed6: 27 }), + #d3368c8a: true + }, + { #c8ff724b: "nullptr_t", #2cdb06fb: [ "nullptr_t" ] }, + 29, + { })>, + <#37b901fc: + ({ + #d121c0bd: 30, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 25 }) + }, + { #c8ff724b: "NullPtrTemplate", #2cdb06fb: [ "NullPtrTemplate" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 31, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 14, #c68b4ed6: 25 }) + }, + { + #c8ff724b: "NullPtrTemplate", + #2cdb06fb: [ "NullPtrTemplate" ] + }, + 32, + [ + <#f50d797e: + ({ + #d121c0bd: 33, + #f9005968: 31, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "NullPtrTemplate", + #2cdb06fb: [ + "NullPtrTemplate", "NullPtrTemplate" + ] + }, + 32, + [], + { }, + <#c5b1f8a9>, + { #33244202: 31 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 34, + #f9005968: 31, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "NullPtrTemplate", + #2cdb06fb: [ + "NullPtrTemplate", "NullPtrTemplate" + ] + }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "10023818314310534501", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 34, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 35, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 36, + #f9005968: 31, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "NullPtrTemplate", + #2cdb06fb: [ + "NullPtrTemplate", "NullPtrTemplate" + ] + }, + { #c1127ea9: 37 }, + { + #d2e9b40c: "11471169980769644070", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 38, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 39 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 40, + #f9005968: 31, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "NullPtrTemplate", + #2cdb06fb: [ + "NullPtrTemplate", "NullPtrTemplate" + ] + }, + { #c1127ea9: 41 }, + { + #d2e9b40c: "11154857410366551354", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 42, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 43 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 31, #1a9a7e84: true }, + { #f1ae3b70: true }, + "11141543725649308068", + { #e43971cf: 30, #0de52551: [ <#ea323187> ] })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 44, + #21793419: ({ #c7b317f4: 16, #c68b4ed6: 1 }, { #c68b4ed6: 26 }) + }, + { #c8ff724b: "x1", #2cdb06fb: [ "x1" ] }, + { #c1127ea9: 45 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 46, + #21793419: ({ #c68b4ed6: 26 }, { #c68b4ed6: 26 }) + }, + [], + { #30e4876a: { #c1127ea9: 45 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 34, + #c8ff724b: { + #c8ff724b: "NullPtrTemplate", + #2cdb06fb: [ + "NullPtrTemplate", "NullPtrTemplate" + ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#37b901fc: + ({ + #d121c0bd: 47, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, + { #c7b317f4: 19, #c68b4ed6: 21 }) + }, + { #c8ff724b: "IntTemplate", #2cdb06fb: [ "IntTemplate" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 48, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 1 }, + { #c7b317f4: 19, #c68b4ed6: 21 }) + }, + { + #c8ff724b: "IntTemplate", + #2cdb06fb: [ "IntTemplate<0>" ] + }, + 49, + [ + <#f50d797e: + ({ + #d121c0bd: 50, + #f9005968: 48, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "IntTemplate", + #2cdb06fb: [ "IntTemplate", "IntTemplate<0>" ] + }, + 49, + [], + { }, + <#c5b1f8a9>, + { #33244202: 48 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 51, + #f9005968: 48, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "IntTemplate", + #2cdb06fb: [ "IntTemplate", "IntTemplate<0>" ] + }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "1478228132453016226", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 51, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 52, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 53, + #f9005968: 48, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "IntTemplate", + #2cdb06fb: [ "IntTemplate", "IntTemplate<0>" ] + }, + { #c1127ea9: 54 }, + { + #d2e9b40c: "11043804702208708385", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 55, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 56 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 57, + #f9005968: 48, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "IntTemplate", + #2cdb06fb: [ "IntTemplate", "IntTemplate<0>" ] + }, + { #c1127ea9: 58 }, + { + #d2e9b40c: "5185260157533638819", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 59, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 60 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 48, #1a9a7e84: true }, + { #f1ae3b70: true }, + "18441911275316219119", + { #e43971cf: 47, #0de52551: [ <#fae5d38c: "0"> ] })> + ] + })>, + <#37b901fc: + ({ + #d121c0bd: 61, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, + { #c7b317f4: 22, #c68b4ed6: 22 }) + }, + { #c8ff724b: "CharTemplate", #2cdb06fb: [ "CharTemplate" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 62, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 21, #c68b4ed6: 1 }, + { #c7b317f4: 22, #c68b4ed6: 22 }) + }, + { + #c8ff724b: "CharTemplate", + #2cdb06fb: [ "CharTemplate<'c'>" ] + }, + 63, + [ + <#f50d797e: + ({ + #d121c0bd: 64, + #f9005968: 62, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "CharTemplate", + #2cdb06fb: [ "CharTemplate", "CharTemplate<'c'>" ] + }, + 63, + [], + { }, + <#c5b1f8a9>, + { #33244202: 62 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 65, + #f9005968: 62, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "CharTemplate", + #2cdb06fb: [ "CharTemplate", "CharTemplate<'c'>" ] + }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "16225353893069217924", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 65, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 66, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 67, + #f9005968: 62, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "CharTemplate", + #2cdb06fb: [ "CharTemplate", "CharTemplate<'c'>" ] + }, + { #c1127ea9: 68 }, + { + #d2e9b40c: "16636418989297388895", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 69, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 70 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 71, + #f9005968: 62, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "CharTemplate", + #2cdb06fb: [ "CharTemplate", "CharTemplate<'c'>" ] + }, + { #c1127ea9: 72 }, + { + #d2e9b40c: "2774670671732909065", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 73, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 74 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 62, #1a9a7e84: true }, + { #f1ae3b70: true }, + "7893038887469539829", + { #e43971cf: 61, #0de52551: [ <#fae5d38c: "99"> ] })> + ] + })>, + <#37b901fc: + ({ + #d121c0bd: 75, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, + { #c7b317f4: 24, #c68b4ed6: 22 }) + }, + { #c8ff724b: "LongTemplate", #2cdb06fb: [ "LongTemplate" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 76, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 1 }, + { #c7b317f4: 24, #c68b4ed6: 22 }) + }, + { + #c8ff724b: "LongTemplate", + #2cdb06fb: [ "LongTemplate<78187493520>" ] + }, + 77, + [ + <#f50d797e: + ({ + #d121c0bd: 78, + #f9005968: 76, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "LongTemplate", + #2cdb06fb: [ + "LongTemplate", "LongTemplate<78187493520>" + ] + }, + 77, + [], + { }, + <#c5b1f8a9>, + { #33244202: 76 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 79, + #f9005968: 76, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "LongTemplate", + #2cdb06fb: [ + "LongTemplate", "LongTemplate<78187493520>" + ] + }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "16125716847522929195", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 79, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 80, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 81, + #f9005968: 76, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "LongTemplate", + #2cdb06fb: [ + "LongTemplate", "LongTemplate<78187493520>" + ] + }, + { #c1127ea9: 82 }, + { + #d2e9b40c: "5156418638880841616", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 83, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 84 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 85, + #f9005968: 76, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { + #c8ff724b: "LongTemplate", + #2cdb06fb: [ + "LongTemplate", "LongTemplate<78187493520>" + ] + }, + { #c1127ea9: 86 }, + { + #d2e9b40c: "18073023600850944380", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 87, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 88 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 76, #1a9a7e84: true }, + { #f1ae3b70: true }, + "6282617124311682814", + { + #e43971cf: 75, + #0de52551: [ <#fae5d38c: "78187493520"> ] + })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 89, + #21793419: ({ #c7b317f4: 26, #c68b4ed6: 1 }, { #c68b4ed6: 16 }) + }, + { #c8ff724b: "x2", #2cdb06fb: [ "x2" ] }, + { #c1127ea9: 90 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 91, + #21793419: ({ #c68b4ed6: 16 }, { #c68b4ed6: 16 }) + }, + [], + { #30e4876a: { #c1127ea9: 90 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 51, + #c8ff724b: { + #c8ff724b: "IntTemplate", + #2cdb06fb: [ "IntTemplate", "IntTemplate<0>" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#11c182d1: + ({ + #d121c0bd: 92, + #21793419: ({ #c7b317f4: 27, #c68b4ed6: 1 }, { #c68b4ed6: 19 }) + }, + { #c8ff724b: "x3", #2cdb06fb: [ "x3" ] }, + { #c1127ea9: 93 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 94, + #21793419: ({ #c68b4ed6: 19 }, { #c68b4ed6: 19 }) + }, + [], + { #30e4876a: { #c1127ea9: 93 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 65, + #c8ff724b: { + #c8ff724b: "CharTemplate", + #2cdb06fb: [ "CharTemplate", "CharTemplate<'c'>" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#11c182d1: + ({ + #d121c0bd: 95, + #21793419: ({ #c7b317f4: 28, #c68b4ed6: 1 }, { #c68b4ed6: 29 }) + }, + { #c8ff724b: "x4", #2cdb06fb: [ "x4" ] }, + { #c1127ea9: 96 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 97, + #21793419: ({ #c68b4ed6: 29 }, { #c68b4ed6: 29 }) + }, + [], + { #30e4876a: { #c1127ea9: 96 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 79, + #c8ff724b: { + #c8ff724b: "LongTemplate", + #2cdb06fb: [ + "LongTemplate", "LongTemplate<78187493520>" + ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#37b901fc: + ({ + #d121c0bd: 98, + #21793419: + ({ #c7b317f4: 30, #c68b4ed6: 1 }, + { #c7b317f4: 31, #c68b4ed6: 11 }) + }, + { #c8ff724b: "X", #2cdb06fb: [ "X" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 99, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 30, #c68b4ed6: 1 }, + { #c7b317f4: 31, #c68b4ed6: 11 }) + }, + { #c8ff724b: "X", #2cdb06fb: [ "X<&x5>" ] }, + 100, + [ + <#f50d797e: + ({ + #d121c0bd: 101, + #f9005968: 99, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X<&x5>" ] }, + 100, + [], + { }, + <#c5b1f8a9>, + { #33244202: 99 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 102, + #f9005968: 99, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X<&x5>" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "8438636393447290261", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 102, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 103, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 104, + #f9005968: 99, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X<&x5>" ] }, + { #c1127ea9: 105 }, + { + #d2e9b40c: "304459608885830774", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 106, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 107 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 108, + #f9005968: 99, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X<&x5>" ] }, + { #c1127ea9: 109 }, + { + #d2e9b40c: "5555169503117312650", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 110, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 111 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 99, #1a9a7e84: true }, + { #f1ae3b70: true }, + "92945586264616176", + { #e43971cf: 98, #0de52551: [ <#ca45bcda: 112> ] })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 112, + #21793419: ({ #c7b317f4: 32, #c68b4ed6: 1 }, { #c68b4ed6: 10 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "x5", #2cdb06fb: [ "x5" ] }, + { #c1127ea9: 113 }, + { #ccd69858: true })>, + <#f50d797e: + ({ + #d121c0bd: 114, + #f9005968: 1, + #21793419: ({ #c7b317f4: 34, #c68b4ed6: 1 }, { #c68b4ed6: 11 }), + #d3368c8a: true + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y" ] }, + 115, + [ + <#f50d797e: + ({ + #d121c0bd: 116, + #f9005968: 114, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + 115, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 117, + #f9005968: 114, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "14898916407379161639", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 117, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 118, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 119, + #f9005968: 114, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 120 }, + { + #d2e9b40c: "7125450473324676530", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 121, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 122 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 123, + #f9005968: 114, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + { #c1127ea9: 124 }, + { + #d2e9b40c: "3069361207223136310", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 125, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 126 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 114, #1a9a7e84: true }, + { #f1ae3b70: true })>, + <#37b901fc: + ({ + #d121c0bd: 127, + #21793419: + ({ #c7b317f4: 35, #c68b4ed6: 1 }, + { #c7b317f4: 36, #c68b4ed6: 11 }) + }, + { #c8ff724b: "Z", #2cdb06fb: [ "Z" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 128, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 35, #c68b4ed6: 1 }, + { #c7b317f4: 36, #c68b4ed6: 11 }) + }, + { #c8ff724b: "Z", #2cdb06fb: [ "Z<&y>" ] }, + 129, + [ + <#f50d797e: + ({ + #d121c0bd: 130, + #f9005968: 128, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Z", #2cdb06fb: [ "Z", "Z<&y>" ] }, + 129, + [], + { }, + <#c5b1f8a9>, + { #33244202: 128 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 131, + #f9005968: 128, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Z", #2cdb06fb: [ "Z", "Z<&y>" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "2247315131692507250", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 131, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 132, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 133, + #f9005968: 128, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Z", #2cdb06fb: [ "Z", "Z<&y>" ] }, + { #c1127ea9: 134 }, + { + #d2e9b40c: "7738251501016099665", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 135, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 136 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 137, + #f9005968: 128, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "Z", #2cdb06fb: [ "Z", "Z<&y>" ] }, + { #c1127ea9: 138 }, + { + #d2e9b40c: "15832834678910379731", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 139, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 140 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 128, #1a9a7e84: true }, + { #f1ae3b70: true }, + "4282980438553401163", + { #e43971cf: 127, #0de52551: [ <#ca45bcda: 141> ] })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 141, + #21793419: ({ #c7b317f4: 37, #c68b4ed6: 1 }, { #c68b4ed6: 3 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "y", #2cdb06fb: [ "y" ] }, + { #c1127ea9: 115 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 142, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 115 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 117, + #c8ff724b: { #c8ff724b: "Y", #2cdb06fb: [ "Y", "Y" ] }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#37b901fc: + ({ + #d121c0bd: 143, + #21793419: + ({ #c7b317f4: 39, #c68b4ed6: 1 }, + { #c7b317f4: 40, #c68b4ed6: 11 }) + }, + { #c8ff724b: "W", #2cdb06fb: [ "W" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 144, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 39, #c68b4ed6: 1 }, + { #c7b317f4: 40, #c68b4ed6: 11 }) + }, + { #c8ff724b: "W", #2cdb06fb: [ "W<&b>" ] }, + 145, + [ + <#f50d797e: + ({ + #d121c0bd: 146, + #f9005968: 144, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "W", #2cdb06fb: [ "W", "W<&b>" ] }, + 145, + [], + { }, + <#c5b1f8a9>, + { #33244202: 144 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 147, + #f9005968: 144, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "W", #2cdb06fb: [ "W", "W<&b>" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "7772438286950717212", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 147, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 148, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 149, + #f9005968: 144, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "W", #2cdb06fb: [ "W", "W<&b>" ] }, + { #c1127ea9: 150 }, + { + #d2e9b40c: "10597356402107300951", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 151, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 152 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 153, + #f9005968: 144, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "W", #2cdb06fb: [ "W", "W<&b>" ] }, + { #c1127ea9: 154 }, + { + #d2e9b40c: "9048930144420503889", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 155, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 156 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 144, #1a9a7e84: true }, + { #f1ae3b70: true }, + "632323835311287041", + { #e43971cf: 143, #0de52551: [ <#ca45bcda: 157> ] })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 157, + #21793419: ({ #c7b317f4: 41, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 158 }, + { #ccd69858: true })>, + <#f173dfc2: + ({ + #d121c0bd: 159, + #21793419: ({ #c7b317f4: 43, #c68b4ed6: 1 }, { #c68b4ed6: 11 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "f", #2cdb06fb: [ "f" ] }, + { #c1127ea9: 160 }, + { + #d2e9b40c: "4928047469659938654", + #f1a45f0e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 161, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 10 }, + { #0370b1b2: 0 })> + ] + })>, + <#37b901fc: + ({ + #d121c0bd: 162, + #21793419: + ({ #c7b317f4: 44, #c68b4ed6: 1 }, + { #c7b317f4: 45, #c68b4ed6: 11 }) + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + { + #dfe08e08: [ + <#e0b96727: + ({ + #d121c0bd: 163, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 44, #c68b4ed6: 1 }, + { #c7b317f4: 45, #c68b4ed6: 11 }) + }, + { #c8ff724b: "A", #2cdb06fb: [ "A<&f>" ] }, + 164, + [ + <#f50d797e: + ({ + #d121c0bd: 165, + #f9005968: 163, + #21793419: ({ #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A<&f>" ] }, + 164, + [], + { }, + <#c5b1f8a9>, + { #33244202: 163 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 166, + #f9005968: 163, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A<&f>" ] }, + { #c1127ea9: 15 }, + { + #d2e9b40c: "3658993291457928989", + #f1a45f0e: true, + #3e64314e: true, + #ebe3c415: 166, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 167, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 168, + #f9005968: 163, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A<&f>" ] }, + { #c1127ea9: 169 }, + { + #d2e9b40c: "18252192508176638302", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 170, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 171 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cc498dc1: + ({ + #d121c0bd: 172, + #f9005968: 163, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A<&f>" ] }, + { #c1127ea9: 173 }, + { + #d2e9b40c: "9481628931273708930", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 174, + #21793419: + ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 175 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 163, #1a9a7e84: true }, + { #f1ae3b70: true }, + "6648620333758562824", + { #e43971cf: 162, #0de52551: [ <#ca45bcda: 159> ] })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 176, + #21793419: ({ #c7b317f4: 47, #c68b4ed6: 1 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "xi", #2cdb06fb: [ "xi" ] }, + { #c1127ea9: 177 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 178, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + [], + { #30e4876a: { #c1127ea9: 177 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 102, + #c8ff724b: { + #c8ff724b: "X", + #2cdb06fb: [ "X", "X<&x5>" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#11c182d1: + ({ + #d121c0bd: 179, + #21793419: ({ #c7b317f4: 48, #c68b4ed6: 1 }, { #c68b4ed6: 6 }) + }, + { #c8ff724b: "z", #2cdb06fb: [ "z" ] }, + { #c1127ea9: 180 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 181, + #21793419: ({ #c68b4ed6: 6 }, { #c68b4ed6: 6 }) + }, + [], + { #30e4876a: { #c1127ea9: 180 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 131, + #c8ff724b: { + #c8ff724b: "Z", + #2cdb06fb: [ "Z", "Z<&y>" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#11c182d1: + ({ + #d121c0bd: 182, + #21793419: ({ #c7b317f4: 49, #c68b4ed6: 1 }, { #c68b4ed6: 6 }) + }, + { #c8ff724b: "w", #2cdb06fb: [ "w" ] }, + { #c1127ea9: 183 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 184, + #21793419: ({ #c68b4ed6: 6 }, { #c68b4ed6: 6 }) + }, + [], + { #30e4876a: { #c1127ea9: 183 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 147, + #c8ff724b: { + #c8ff724b: "W", + #2cdb06fb: [ "W", "W<&b>" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#11c182d1: + ({ + #d121c0bd: 185, + #21793419: ({ #c7b317f4: 50, #c68b4ed6: 1 }, { #c68b4ed6: 7 }) + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 186 }, + { + #ccd69858: true, + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 187, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 7 }) + }, + [], + { #30e4876a: { #c1127ea9: 186 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 166, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A<&f>" ] + }, + #30e4876a: { #c1127ea9: 15 } + } + })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 188, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 189, + { })> + ], + { }, + { + #e870593a: "tests/template_instantiations.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 190 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 191 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 192 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 193 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 194 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 10 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 195 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 196 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 197 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 198 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 199 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 200 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 201 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 202 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 203 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 204 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 205 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 206 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 207 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 208 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 209 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 210 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 211 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 212 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 213 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 214 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 215 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 216 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 217 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 218 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 219 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 220 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 221 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 222 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 223 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 224 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 225 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 226 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 227 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 228 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 229 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 230 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 231 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 232 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 233 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 234 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 235 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 236 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 237 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 238 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 239 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 240 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 241 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 242 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 243 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 244 })>, + <#2e6cf4ea: ({ #d121c0bd: 245 })>, + <#2e6cf4ea: ({ #d121c0bd: 246 })>, + <#2e6cf4ea: ({ #d121c0bd: 247 })>, + <#22d546dd: ({ #d121c0bd: 248 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 249 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 250 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 251 }, { #c1127ea9: 190 })>, + <#22d546dd: ({ #d121c0bd: 252 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 253 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 254 }, 255)>, + <#d3d219f7: ({ #d121c0bd: 256 }, { #c1127ea9: 10, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 257 }, { #c1127ea9: 192, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 258 }, { #c1127ea9: 192 })>, + <#d80cb60b: ({ #d121c0bd: 259 }, 260)>, + <#da0c5ecf: + ({ #d121c0bd: 261 }, + { #cd26765d: { #c1127ea9: 259 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 262 })>, + <#f3f3711a: ({ #d121c0bd: 263 })>, + <#109a76a0: ({ #d121c0bd: 264 })>, + <#109a76a0: ({ #d121c0bd: 265 })>, + <#ece2635f: ({ #d121c0bd: 266 })>, + <#ece2635f: ({ #d121c0bd: 267 })>, + <#d49f978d: ({ #d121c0bd: 268 })>, + <#d80cb60b: ({ #d121c0bd: 9 }, 8)>, + <#ece2635f: ({ #d121c0bd: 269, #26f32be5: 9 })>, + <#d80cb60b: ({ #d121c0bd: 12 }, 11)>, + <#ece2635f: ({ #d121c0bd: 26, #26f32be5: 12 })>, + <#26796f6a: + ({ #d121c0bd: 270 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 271 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 20 }, { #c1127ea9: 12, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 272 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 18 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#295746e6: ({ #d121c0bd: 24 }, { #c1127ea9: 12 })>, + <#26796f6a: + ({ #d121c0bd: 273 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 24 } ] })>, + <#26796f6a: + ({ #d121c0bd: 22 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 24 } ] })>, + <#26796f6a: + ({ #d121c0bd: 15 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#e3120d1e: ({ #d121c0bd: 274, #26f32be5: 252 }, { #c1127ea9: 252 })>, + <#19e1ef85: + ({ #d121c0bd: 29, #26f32be5: 252 }, + { #0b680f7d: { #c1127ea9: 274 }, #c3687459: 28 })>, + <#ece2635f: ({ #d121c0bd: 275 })>, + <#ece2635f: ({ #d121c0bd: 276 })>, + <#d49f978d: ({ #d121c0bd: 277 })>, + <#d80cb60b: ({ #d121c0bd: 32 }, 31)>, + <#ece2635f: ({ #d121c0bd: 45, #26f32be5: 32 })>, + <#26796f6a: + ({ #d121c0bd: 278 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 39 }, { #c1127ea9: 32, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 279 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 39 } ] })>, + <#26796f6a: + ({ #d121c0bd: 37 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 39 } ] })>, + <#295746e6: ({ #d121c0bd: 43 }, { #c1127ea9: 32 })>, + <#26796f6a: + ({ #d121c0bd: 280 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 43 } ] })>, + <#26796f6a: + ({ #d121c0bd: 41 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 43 } ] })>, + <#ece2635f: ({ #d121c0bd: 281 })>, + <#ece2635f: ({ #d121c0bd: 282 })>, + <#d49f978d: ({ #d121c0bd: 283 })>, + <#ece2635f: ({ #d121c0bd: 284 })>, + <#ece2635f: ({ #d121c0bd: 285 })>, + <#d49f978d: ({ #d121c0bd: 286 })>, + <#ece2635f: ({ #d121c0bd: 287 })>, + <#ece2635f: ({ #d121c0bd: 288 })>, + <#d49f978d: ({ #d121c0bd: 289 })>, + <#d80cb60b: ({ #d121c0bd: 49 }, 48)>, + <#ece2635f: ({ #d121c0bd: 90, #26f32be5: 49 })>, + <#26796f6a: + ({ #d121c0bd: 290 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 56 }, { #c1127ea9: 49, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 291 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 56 } ] })>, + <#26796f6a: + ({ #d121c0bd: 54 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 56 } ] })>, + <#295746e6: ({ #d121c0bd: 60 }, { #c1127ea9: 49 })>, + <#26796f6a: + ({ #d121c0bd: 292 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 60 } ] })>, + <#26796f6a: + ({ #d121c0bd: 58 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 60 } ] })>, + <#d80cb60b: ({ #d121c0bd: 63 }, 62)>, + <#ece2635f: ({ #d121c0bd: 93, #26f32be5: 63 })>, + <#26796f6a: + ({ #d121c0bd: 293 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 70 }, { #c1127ea9: 63, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 294 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 70 } ] })>, + <#26796f6a: + ({ #d121c0bd: 68 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 70 } ] })>, + <#295746e6: ({ #d121c0bd: 74 }, { #c1127ea9: 63 })>, + <#26796f6a: + ({ #d121c0bd: 295 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 74 } ] })>, + <#26796f6a: + ({ #d121c0bd: 72 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 74 } ] })>, + <#d80cb60b: ({ #d121c0bd: 77 }, 76)>, + <#ece2635f: ({ #d121c0bd: 96, #26f32be5: 77 })>, + <#26796f6a: + ({ #d121c0bd: 296 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 84 }, { #c1127ea9: 77, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 297 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 84 } ] })>, + <#26796f6a: + ({ #d121c0bd: 82 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 84 } ] })>, + <#295746e6: ({ #d121c0bd: 88 }, { #c1127ea9: 77 })>, + <#26796f6a: + ({ #d121c0bd: 298 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 88 } ] })>, + <#26796f6a: + ({ #d121c0bd: 86 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 88 } ] })>, + <#ece2635f: ({ #d121c0bd: 299 })>, + <#ece2635f: ({ #d121c0bd: 300 })>, + <#d49f978d: ({ #d121c0bd: 301 })>, + <#da0c5ecf: + ({ #d121c0bd: 113 }, + { #cd26765d: { #c1127ea9: 10 }, #11302019: 4 }, + 42)>, + <#d80cb60b: ({ #d121c0bd: 115 }, 114)>, + <#0b08cd60: ({ #d121c0bd: 122 }, { #c1127ea9: 115, #ea1a680e: true })>, + <#ece2635f: ({ #d121c0bd: 302 })>, + <#ece2635f: ({ #d121c0bd: 303 })>, + <#d49f978d: ({ #d121c0bd: 304 })>, + <#26796f6a: + ({ #d121c0bd: 305 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 306 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 122 } ] })>, + <#26796f6a: + ({ #d121c0bd: 120 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 122 } ] })>, + <#295746e6: ({ #d121c0bd: 126 }, { #c1127ea9: 115 })>, + <#26796f6a: + ({ #d121c0bd: 307 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 126 } ] })>, + <#26796f6a: + ({ #d121c0bd: 124 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 126 } ] })>, + <#da0c5ecf: + ({ #d121c0bd: 158 }, + { #cd26765d: { #c1127ea9: 10 }, #11302019: 4 }, + 5)>, + <#0c1e4fc4: ({ #d121c0bd: 308, #26f32be5: 158 }, { #c1127ea9: 158 })>, + <#0b08cd60: ({ #d121c0bd: 309 }, { #c1127ea9: 158 })>, + <#0b08cd60: ({ #d121c0bd: 310 }, { #c1127ea9: 308 })>, + <#ece2635f: ({ #d121c0bd: 311 })>, + <#ece2635f: ({ #d121c0bd: 312 })>, + <#d49f978d: ({ #d121c0bd: 313 })>, + <#26796f6a: + ({ #d121c0bd: 160 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 10 } ] })>, + <#0c1e4fc4: ({ #d121c0bd: 314, #26f32be5: 160 }, { #c1127ea9: 160 })>, + <#d3d219f7: ({ #d121c0bd: 315 }, { #c1127ea9: 160 })>, + <#d3d219f7: ({ #d121c0bd: 316 }, { #c1127ea9: 314 })>, + <#ece2635f: ({ #d121c0bd: 317 })>, + <#ece2635f: ({ #d121c0bd: 318 })>, + <#d49f978d: ({ #d121c0bd: 319 })>, + <#d3d219f7: ({ #d121c0bd: 320 }, { #c1127ea9: 10 })>, + <#d80cb60b: ({ #d121c0bd: 100 }, 99)>, + <#ece2635f: ({ #d121c0bd: 177, #26f32be5: 100 })>, + <#26796f6a: + ({ #d121c0bd: 321 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 107 }, { #c1127ea9: 100, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 322 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 107 } ] })>, + <#26796f6a: + ({ #d121c0bd: 105 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 107 } ] })>, + <#295746e6: ({ #d121c0bd: 111 }, { #c1127ea9: 100 })>, + <#26796f6a: + ({ #d121c0bd: 323 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 111 } ] })>, + <#26796f6a: + ({ #d121c0bd: 109 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 111 } ] })>, + <#d80cb60b: ({ #d121c0bd: 129 }, 128)>, + <#ece2635f: ({ #d121c0bd: 180, #26f32be5: 129 })>, + <#26796f6a: + ({ #d121c0bd: 324 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 136 }, { #c1127ea9: 129, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 325 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 136 } ] })>, + <#26796f6a: + ({ #d121c0bd: 134 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 136 } ] })>, + <#295746e6: ({ #d121c0bd: 140 }, { #c1127ea9: 129 })>, + <#26796f6a: + ({ #d121c0bd: 326 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 140 } ] })>, + <#26796f6a: + ({ #d121c0bd: 138 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 140 } ] })>, + <#d80cb60b: ({ #d121c0bd: 145 }, 144)>, + <#ece2635f: ({ #d121c0bd: 183, #26f32be5: 145 })>, + <#26796f6a: + ({ #d121c0bd: 327 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 152 }, { #c1127ea9: 145, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 328 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 152 } ] })>, + <#26796f6a: + ({ #d121c0bd: 150 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 152 } ] })>, + <#295746e6: ({ #d121c0bd: 156 }, { #c1127ea9: 145 })>, + <#26796f6a: + ({ #d121c0bd: 329 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 156 } ] })>, + <#26796f6a: + ({ #d121c0bd: 154 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 156 } ] })>, + <#d80cb60b: ({ #d121c0bd: 164 }, 163)>, + <#ece2635f: ({ #d121c0bd: 186, #26f32be5: 164 })>, + <#26796f6a: + ({ #d121c0bd: 330 }, { #f9c96be9: { #c1127ea9: 190 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 171 }, { #c1127ea9: 164, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 331 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 171 } ] })>, + <#26796f6a: + ({ #d121c0bd: 169 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 171 } ] })>, + <#295746e6: ({ #d121c0bd: 175 }, { #c1127ea9: 164 })>, + <#26796f6a: + ({ #d121c0bd: 332 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 175 } ] })>, + <#26796f6a: + ({ #d121c0bd: 173 }, + { #f9c96be9: { #c1127ea9: 190 } }, + { #08ec7593: [ { #c1127ea9: 175 } ] })>, + <#0098a8c5: ({ #d121c0bd: 333 }, { #fcd148e8: 248 })>, + <#2e3d736c: ({ #d121c0bd: 334 }, { #c1127ea9: 333 })>, + <#19e1ef85: + ({ #d121c0bd: 335, #26f32be5: 334 }, + { #0b680f7d: { #c1127ea9: 334 }, #c3687459: 336 })>, + <#19e1ef85: + ({ #d121c0bd: 189, #26f32be5: 334 }, + { #0b680f7d: { #c1127ea9: 335 }, #c3687459: 188 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/this.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/this.cpp.exp new file mode 100644 index 000000000..c226a8c63 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/this.cpp.exp @@ -0,0 +1,276 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ #c3bbce7c: "tests/this.cpp", #c7b317f4: 7, #c68b4ed6: 1 }, + { #c7b317f4: 10, #c68b4ed6: 1 }) + }, + { #c8ff724b: "T", #2cdb06fb: [ "T" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 7 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "T", #2cdb06fb: [ "T", "T" ] }, + 8, + [], + { }, + <#01fae064>, + { #33244202: 0 }, + { })>, + <#fb87d624: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #d3368c8a: true, + #0b0695a4: <#d6c054e3> + }, + { #c8ff724b: "age", #2cdb06fb: [ "age", "T" ] }, + { #c1127ea9: 11 }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 12, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 31 }), + #0b0695a4: <#d6c054e3> + }, + { #c8ff724b: "foo", #2cdb06fb: [ "foo", "T" ] }, + { #c1127ea9: 13 }, + { + #d2e9b40c: "8720790958451117971", + #f1a45f0e: true, + #ebe3c415: 12, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 14, + #21793419: ({ #c68b4ed6: 14 }, { #c68b4ed6: 31 }) + }, + [ + <#d49390e5: + ({ + #d121c0bd: 15, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 28 }) + }, + [ + <#090744cf: + ({ + #d121c0bd: 16, + #21793419: + ({ #c68b4ed6: 16 }, { #c68b4ed6: 22 }) + }, + [ + <#e095d1d6: + ({ + #d121c0bd: 17, + #21793419: + ({ #c68b4ed6: 16 }, + { #c68b4ed6: 16 }) + }, + [], + { #30e4876a: { #c1127ea9: 18 } })> + ], + { + #30e4876a: { #c1127ea9: 11 }, + #0e89e422: <#28055b85> + }, + { + #c54be874: true, + #f708701b: true, + #c8ff724b: { + #c8ff724b: "age", + #2cdb06fb: [ "age", "T" ] + }, + #c369ebbe: { + #c709e154: <#13c1049a>, + #ec05e4a8: 10, + #c8ff724b: { + #c8ff724b: "age", + #2cdb06fb: [ "age", "T" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })>, + <#0fb8fb71: + ({ + #d121c0bd: 19, + #21793419: + ({ #c68b4ed6: 28 }, { #c68b4ed6: 28 }) + }, + [], + { #30e4876a: { #c1127ea9: 11 } }, + { + #d9aa98d1: true, + #1f65f619: 32, + #31b87f71: "1" + })> + ], + { + #30e4876a: { #c1127ea9: 11 }, + #0e89e422: <#28055b85> + }, + { #c709e154: <#009aba4f> })> + ])> + }, + { })> + ], + { }, + <#01fae064>, + { #33244202: 7, #1a9a7e84: true }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 20, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 21, + { })> + ], + { }, + { + #e870593a: "tests/this.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 22 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 11 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 76 })>, + <#2e6cf4ea: ({ #d121c0bd: 77 })>, + <#2e6cf4ea: ({ #d121c0bd: 78 })>, + <#2e6cf4ea: ({ #d121c0bd: 79 })>, + <#22d546dd: ({ #d121c0bd: 80 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 83 }, { #c1127ea9: 22 })>, + <#22d546dd: ({ #d121c0bd: 84 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 86 }, 87)>, + <#d3d219f7: ({ #d121c0bd: 88 }, { #c1127ea9: 11, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 89 }, { #c1127ea9: 24, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 90 }, { #c1127ea9: 24 })>, + <#d80cb60b: ({ #d121c0bd: 91 }, 92)>, + <#da0c5ecf: + ({ #d121c0bd: 93 }, + { #cd26765d: { #c1127ea9: 91 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 18 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 13 }, { #f9c96be9: { #c1127ea9: 22 } }, { })>, + <#0098a8c5: ({ #d121c0bd: 94 }, { #fcd148e8: 80 })>, + <#2e3d736c: ({ #d121c0bd: 95 }, { #c1127ea9: 94 })>, + <#19e1ef85: + ({ #d121c0bd: 96, #26f32be5: 95 }, + { #0b680f7d: { #c1127ea9: 95 }, #c3687459: 97 })>, + <#19e1ef85: + ({ #d121c0bd: 21, #26f32be5: 95 }, + { #0b680f7d: { #c1127ea9: 96 }, #c3687459: 20 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/type_trait.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/type_trait.cpp.exp new file mode 100644 index 000000000..0d8fda0f2 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/type_trait.cpp.exp @@ -0,0 +1,534 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/type_trait.cpp", + #c7b317f4: 8, + #c68b4ed6: 1 + }, + { #c7b317f4: 10, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "X", #2cdb06fb: [ "X" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "X", #2cdb06fb: [ "X", "X" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 21 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "f", #2cdb06fb: [ "f", "X" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "3303503544906841191", + #f1a45f0e: true, + #ebe3c415: 10, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 12, + #21793419: ({ #c68b4ed6: 20 }, { #c68b4ed6: 21 }) + }, + [])> + }, + { #f1c74d76: true })>, + <#29ca61ce: + ({ + #d121c0bd: 13, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "X" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "3547081667308014059", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 15, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 16 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 17, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "X" ] }, + { #c1127ea9: 18 }, + { + #d2e9b40c: "13578800157532850793", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 19, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 20 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#cfe47fa6: + ({ + #d121c0bd: 21, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~X", #2cdb06fb: [ "~X", "X" ] }, + { #c1127ea9: 22 }, + { + #d2e9b40c: "9850251229546392500", + #f1a45f0e: true, + #3e64314e: true + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 21, + #c8ff724b: { #c8ff724b: "~X", #2cdb06fb: [ "~X", "X" ] }, + #30e4876a: { #c1127ea9: 22 } + } + })>, + <#c589b11c: + ({ + #d121c0bd: 23, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + { #c8ff724b: "is_pod", #2cdb06fb: [ "is_pod" ] }, + { + #dfe08e08: [ + <#f173dfc2: + ({ + #d121c0bd: 24, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 15, #c68b4ed6: 1 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "is_pod", #2cdb06fb: [ "is_pod" ] }, + { #c1127ea9: 25 }, + { + #d2e9b40c: "6359398518495646991", + #f1a45f0e: true, + #ebe3c415: 24, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 26, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 15 }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 27, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c68b4ed6: 20 }) + }, + [ + <#1a8ed1e9: + ({ + #d121c0bd: 28, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 20 }) + }, + [], + { #30e4876a: { #c1127ea9: 29 } }, + { #31b87f71: true })> + ])> + ])>, + #f3c2adb0: { + #e43971cf: 23, + #0de52551: [ <#37e21eda: { #c1127ea9: 30 }> ] + } + })>, + <#f173dfc2: + ({ + #d121c0bd: 31, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 1 }, + { #c7b317f4: 15, #c68b4ed6: 1 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "is_pod", #2cdb06fb: [ "is_pod" ] }, + { #c1127ea9: 25 }, + { + #d2e9b40c: "6727385578282590887", + #f1a45f0e: true, + #ebe3c415: 31, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 32, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 15 }, + { #c7b317f4: 15, #c68b4ed6: 1 }) + }, + [ + <#df3bdb38: + ({ + #d121c0bd: 33, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, + { #c68b4ed6: 20 }) + }, + [ + <#1a8ed1e9: + ({ + #d121c0bd: 34, + #21793419: + ({ #c68b4ed6: 10 }, + { #c68b4ed6: 20 }) + }, + [], + { #30e4876a: { #c1127ea9: 29 } }, + { })> + ])> + ])>, + #f3c2adb0: { + #e43971cf: 23, + #0de52551: [ <#37e21eda: { #c1127ea9: 8 }> ] + } + })> + ] + })>, + <#11c182d1: + ({ + #d121c0bd: 35, + #21793419: ({ #c7b317f4: 17, #c68b4ed6: 1 }, { #c68b4ed6: 22 }) + }, + { #c8ff724b: "a", #2cdb06fb: [ "a" ] }, + { #c1127ea9: 29 }, + { + #ccd69858: true, + #fe93c404: + <#c59ea513: + ({ + #d121c0bd: 36, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 22 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 37, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 20 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 38, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 20 }) + }, + [], + { + #30e4876a: { #c1127ea9: 25 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 24, + #c8ff724b: { + #c8ff724b: "is_pod", + #2cdb06fb: [ "is_pod" ] + }, + #30e4876a: { #c1127ea9: 25 } + }, + #e3ab889b: { + #c709e154: <#de0c0392>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "is_pod", + #2cdb06fb: [ "is_pod" ] + } + } + })> + ], + { #30e4876a: { #c1127ea9: 39 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 29 } })> + })>, + <#11c182d1: + ({ + #d121c0bd: 40, + #21793419: ({ #c7b317f4: 18, #c68b4ed6: 1 }, { #c68b4ed6: 20 }) + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 29 }, + { + #ccd69858: true, + #fe93c404: + <#c59ea513: + ({ + #d121c0bd: 41, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 20 }) + }, + [ + <#c3b129f9: + ({ + #d121c0bd: 42, + #21793419: ({ #c68b4ed6: 10 }, { #c68b4ed6: 18 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 43, + #21793419: + ({ #c68b4ed6: 10 }, { #c68b4ed6: 18 }) + }, + [], + { + #30e4876a: { #c1127ea9: 25 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#ee046738>, + #ec05e4a8: 31, + #c8ff724b: { + #c8ff724b: "is_pod", + #2cdb06fb: [ "is_pod" ] + }, + #30e4876a: { #c1127ea9: 25 } + }, + #e3ab889b: { + #c709e154: <#de0c0392>, + #ec05e4a8: 23, + #c8ff724b: { + #c8ff724b: "is_pod", + #2cdb06fb: [ "is_pod" ] + } + } + })> + ], + { #30e4876a: { #c1127ea9: 39 } }, + { #c91e0a14: <#210490b0>, #fa1a3bd3: [] })> + ], + { #30e4876a: { #c1127ea9: 29 } })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 44, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 45, + { })> + ], + { }, + { + #e870593a: "tests/type_trait.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 46 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 99 })>, + <#2e6cf4ea: ({ #d121c0bd: 100 })>, + <#2e6cf4ea: ({ #d121c0bd: 101 })>, + <#2e6cf4ea: ({ #d121c0bd: 102 })>, + <#22d546dd: ({ #d121c0bd: 103 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 106 }, { #c1127ea9: 46 })>, + <#22d546dd: ({ #d121c0bd: 107 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 109 }, 110)>, + <#d3d219f7: ({ #d121c0bd: 111 }, { #c1127ea9: 30, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 112 }, { #c1127ea9: 47, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 113 }, { #c1127ea9: 47 })>, + <#d80cb60b: ({ #d121c0bd: 114 }, 115)>, + <#da0c5ecf: + ({ #d121c0bd: 116 }, + { #cd26765d: { #c1127ea9: 114 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 117 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 11 }, { #f9c96be9: { #c1127ea9: 46 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 118 }, { #c1127ea9: 8 })>, + <#0b08cd60: ({ #d121c0bd: 16 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 119 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#26796f6a: + ({ #d121c0bd: 14 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 16 } ] })>, + <#295746e6: ({ #d121c0bd: 20 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 120 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 18 }, + { #f9c96be9: { #c1127ea9: 118 } }, + { #08ec7593: [ { #c1127ea9: 20 } ] })>, + <#26796f6a: + ({ #d121c0bd: 22 }, { #f9c96be9: { #c1127ea9: 46 } }, { })>, + <#f3f3711a: ({ #d121c0bd: 121 })>, + <#f3f3711a: ({ #d121c0bd: 122 })>, + <#26796f6a: + ({ #d121c0bd: 25 }, { #f9c96be9: { #c1127ea9: 29 } }, { })>, + <#d3d219f7: ({ #d121c0bd: 39 }, { #c1127ea9: 25 })>, + <#dd64b59b: ({ #d121c0bd: 123, #26f32be5: 30 })>, + <#dd64b59b: ({ #d121c0bd: 124, #26f32be5: 8 })>, + <#0098a8c5: ({ #d121c0bd: 125 }, { #fcd148e8: 103 })>, + <#2e3d736c: ({ #d121c0bd: 126 }, { #c1127ea9: 125 })>, + <#19e1ef85: + ({ #d121c0bd: 127, #26f32be5: 126 }, + { #0b680f7d: { #c1127ea9: 126 }, #c3687459: 128 })>, + <#19e1ef85: + ({ #d121c0bd: 45, #26f32be5: 126 }, + { #0b680f7d: { #c1127ea9: 127 }, #c3687459: 44 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/unresolved_lookup.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/unresolved_lookup.cpp.exp new file mode 100644 index 000000000..a2b9b9941 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/unresolved_lookup.cpp.exp @@ -0,0 +1,172 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#37b901fc: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/unresolved_lookup.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 12, #c68b4ed6: 1 }) + }, + { #c8ff724b: "S", #2cdb06fb: [ "S" ] }, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 8, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 9, + { })> + ], + { }, + { + #e870593a: "tests/unresolved_lookup.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 10 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 11 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 12 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 13 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 14 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 15 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 16 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 17 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 18 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 65 })>, + <#2e6cf4ea: ({ #d121c0bd: 66 })>, + <#2e6cf4ea: ({ #d121c0bd: 67 })>, + <#2e6cf4ea: ({ #d121c0bd: 68 })>, + <#22d546dd: ({ #d121c0bd: 69 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 72 }, { #c1127ea9: 10 })>, + <#22d546dd: ({ #d121c0bd: 73 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 75 }, 76)>, + <#d3d219f7: ({ #d121c0bd: 77 }, { #c1127ea9: 15, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 78 }, { #c1127ea9: 12, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 79 }, { #c1127ea9: 12 })>, + <#d80cb60b: ({ #d121c0bd: 80 }, 81)>, + <#da0c5ecf: + ({ #d121c0bd: 82 }, + { #cd26765d: { #c1127ea9: 80 }, #11302019: 24 }, + 1)>, + <#f3f3711a: ({ #d121c0bd: 83 })>, + <#f3f3711a: ({ #d121c0bd: 84 })>, + <#ece2635f: ({ #d121c0bd: 85 })>, + <#ece2635f: ({ #d121c0bd: 86 })>, + <#d49f978d: ({ #d121c0bd: 87 })>, + <#f3f3711a: ({ #d121c0bd: 88 })>, + <#f3f3711a: ({ #d121c0bd: 89 })>, + <#d3d219f7: ({ #d121c0bd: 90 }, { #c1127ea9: 88 })>, + <#d3d219f7: ({ #d121c0bd: 91 }, { #c1127ea9: 89 })>, + <#d3d219f7: ({ #d121c0bd: 92 }, { #c1127ea9: 87 })>, + <#26796f6a: + ({ #d121c0bd: 93 }, + { #f9c96be9: { #c1127ea9: 15 } }, + { #08ec7593: [ { #c1127ea9: 90 } ] })>, + <#26796f6a: + ({ #d121c0bd: 94 }, + { #f9c96be9: { #c1127ea9: 15 } }, + { #08ec7593: [ { #c1127ea9: 91 } ] })>, + <#ece2635f: ({ #d121c0bd: 95, #26f32be5: 87 })>, + <#0098a8c5: ({ #d121c0bd: 96 }, { #fcd148e8: 69 })>, + <#2e3d736c: ({ #d121c0bd: 97 }, { #c1127ea9: 96 })>, + <#19e1ef85: + ({ #d121c0bd: 98, #26f32be5: 97 }, + { #0b680f7d: { #c1127ea9: 97 }, #c3687459: 99 })>, + <#19e1ef85: + ({ #d121c0bd: 9, #26f32be5: 97 }, + { #0b680f7d: { #c1127ea9: 98 }, #c3687459: 8 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/using_directive.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/using_directive.cpp.exp new file mode 100644 index 000000000..d67d3e43b --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/using_directive.cpp.exp @@ -0,0 +1,273 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#da76a085: + ({ + #d121c0bd: 7, + #21793419: + ({ + #c3bbce7c: "tests/using_directive.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 11, #c68b4ed6: 1 }) + }, + { #c8ff724b: "nsa", #2cdb06fb: [ "nsa" ] }, + [ + <#da76a085: + ({ + #d121c0bd: 8, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 1 }, + { #c7b317f4: 10, #c68b4ed6: 1 }) + }, + { #c8ff724b: "nsb", #2cdb06fb: [ "nsb", "nsa" ] }, + [ + <#11c182d1: + ({ + #d121c0bd: 9, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 1 }, { #c68b4ed6: 5 }), + #0a16e1f2: true, + #d3368c8a: true + }, + { #c8ff724b: "a", #2cdb06fb: [ "a", "nsb", "nsa" ] }, + { #c1127ea9: 10 }, + { #ccd69858: true })> + ], + { }, + { })> + ], + { }, + { })>, + <#c7bdbc95: + ({ + #d121c0bd: 11, + #21793419: ({ #c7b317f4: 12, #c68b4ed6: 1 }, { #c68b4ed6: 22 }) + }, + { + #c8ff724b: "", + #2cdb06fb: [ "" ] + }, + { + #309827d0: { #c68b4ed6: 1 }, + #fa5a1379: { #c68b4ed6: 7 }, + #d15fe800: [ + { + #c709e154: <#09c0ca7b>, + #0056d953: { + #c709e154: <#09c0ca7b>, + #ec05e4a8: 7, + #c8ff724b: { #c8ff724b: "nsa", #2cdb06fb: [ "nsa" ] } + } + } + ], + #0781349f: { + #c709e154: <#09c0ca7b>, + #ec05e4a8: 8, + #c8ff724b: { #c8ff724b: "nsb", #2cdb06fb: [ "nsb", "nsa" ] } + } + })>, + <#d071441f: + ({ + #d121c0bd: 12, + #21793419: ({ #c7b317f4: 13, #c68b4ed6: 1 }, { #c68b4ed6: 20 }) + }, + { #c8ff724b: "B", #2cdb06fb: [ "B" ] }, + { + #24646d9c: { #c68b4ed6: 1 }, + #db4e1f3a: { #c68b4ed6: 20 }, + #d15fe800: [ + { + #c709e154: <#09c0ca7b>, + #0056d953: { + #c709e154: <#09c0ca7b>, + #ec05e4a8: 7, + #c8ff724b: { #c8ff724b: "nsa", #2cdb06fb: [ "nsa" ] } + } + } + ], + #e7edea9b: { + #c709e154: <#09c0ca7b>, + #ec05e4a8: 8, + #c8ff724b: { #c8ff724b: "nsb", #2cdb06fb: [ "nsb", "nsa" ] } + } + })>, + <#11c182d1: + ({ + #d121c0bd: 13, + #21793419: ({ #c7b317f4: 14, #c68b4ed6: 1 }, { #c68b4ed6: 9 }) + }, + { #c8ff724b: "b", #2cdb06fb: [ "b" ] }, + { #c1127ea9: 10 }, + { + #ccd69858: true, + #fe93c404: + <#c3b129f9: + ({ + #d121c0bd: 14, + #21793419: ({ #c68b4ed6: 9 }, { #c68b4ed6: 9 }) + }, + [ + <#e9db58be: + ({ + #d121c0bd: 15, + #21793419: ({ #c68b4ed6: 9 }, { #c68b4ed6: 9 }) + }, + [], + { + #30e4876a: { #c1127ea9: 10 }, + #0e89e422: <#28055b85> + }, + { + #c369ebbe: { + #c709e154: <#004196c7>, + #ec05e4a8: 9, + #c8ff724b: { + #c8ff724b: "a", + #2cdb06fb: [ "a", "nsb", "nsa" ] + }, + #30e4876a: { #c1127ea9: 10 } + } + })> + ], + { #30e4876a: { #c1127ea9: 10 } }, + { #c91e0a14: <#f7495e1f>, #fa1a3bd3: [] })> + })>, + <#0f3f4d35: + ({ #d121c0bd: 16, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 17, + { })> + ], + { }, + { + #e870593a: "tests/using_directive.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 18 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 19 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 20 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 21 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 22 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 10 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 23 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 24 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 25 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 26 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 27 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 28 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 29 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 30 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 31 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 32 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 33 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 34 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 35 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 36 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 37 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 38 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 39 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 40 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 41 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 42 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 43 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 44 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 45 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 46 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 47 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 48 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 49 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 50 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 51 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 52 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 53 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 54 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 55 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 56 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 57 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 58 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 59 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 60 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 61 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 62 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 63 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 64 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 65 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 66 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 67 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 68 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 69 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 70 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 71 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 72 })>, + <#2e6cf4ea: ({ #d121c0bd: 73 })>, + <#2e6cf4ea: ({ #d121c0bd: 74 })>, + <#2e6cf4ea: ({ #d121c0bd: 75 })>, + <#22d546dd: ({ #d121c0bd: 76 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 79 }, { #c1127ea9: 18 })>, + <#22d546dd: ({ #d121c0bd: 80 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 82 }, 83)>, + <#d3d219f7: ({ #d121c0bd: 84 }, { #c1127ea9: 10, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 85 }, { #c1127ea9: 20, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 86 }, { #c1127ea9: 20 })>, + <#d80cb60b: ({ #d121c0bd: 87 }, 88)>, + <#da0c5ecf: + ({ #d121c0bd: 89 }, + { #cd26765d: { #c1127ea9: 87 }, #11302019: 24 }, + 1)>, + <#0098a8c5: ({ #d121c0bd: 90 }, { #fcd148e8: 76 })>, + <#2e3d736c: ({ #d121c0bd: 91 }, { #c1127ea9: 90 })>, + <#19e1ef85: + ({ #d121c0bd: 92, #26f32be5: 91 }, + { #0b680f7d: { #c1127ea9: 91 }, #c3687459: 93 })>, + <#19e1ef85: + ({ #d121c0bd: 17, #26f32be5: 91 }, + { #0b680f7d: { #c1127ea9: 92 }, #c3687459: 16 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/virtual_bases.cpp.exp b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/virtual_bases.cpp.exp new file mode 100644 index 000000000..d26001b80 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/BiniouASTExporter/virtual_bases.cpp.exp @@ -0,0 +1,910 @@ +<#032016ff: + ({ #d121c0bd: 1, #21793419: ({ }, { }) }, + [ + <#0f3f4d35: + ({ #d121c0bd: 2, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__int128_t", #2cdb06fb: [ "__int128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 3, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "__uint128_t", #2cdb06fb: [ "__uint128_t" ] }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 4, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__NSConstantString", + #2cdb06fb: [ "__NSConstantString" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 5, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_ms_va_list", + #2cdb06fb: [ "__builtin_ms_va_list" ] + }, + 0, + { })>, + <#0f3f4d35: + ({ #d121c0bd: 6, #21793419: ({ }, { }), #eb8a1f5a: true }, + { + #c8ff724b: "__builtin_va_list", + #2cdb06fb: [ "__builtin_va_list" ] + }, + 0, + { })>, + <#f50d797e: + ({ + #d121c0bd: 7, + #f9005968: 1, + #21793419: + ({ + #c3bbce7c: "tests/virtual_bases.cpp", + #c7b317f4: 7, + #c68b4ed6: 1 + }, + { #c7b317f4: 10, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "A", #2cdb06fb: [ "A" ] }, + 8, + [ + <#f50d797e: + ({ + #d121c0bd: 9, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + 8, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 10, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 8, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "14779025497907219583", + #f1a45f0e: true, + #ebe3c415: 10, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 12, + #21793419: ({ #c68b4ed6: 6 }, { #c68b4ed6: 7 }) + }, + [])> + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 13, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 9, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~A", #2cdb06fb: [ "~A", "A" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "5328378654181921475", + #f1a45f0e: true, + #ebe3c415: 13, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 15, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 16, + #f9005968: 7, + #21793419: + ({ #c7b317f4: 7, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "A", #2cdb06fb: [ "A", "A" ] }, + { #c1127ea9: 17 }, + { + #d2e9b40c: "3430056695640597274", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 18, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 19 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 20, + #f9005968: 7, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "A" ] }, + { #c1127ea9: 21 }, + { + #d2e9b40c: "4916027756641681778", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 22, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 19 }, + { #0370b1b2: 0 })> + ] + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 7, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 13, + #c8ff724b: { #c8ff724b: "~A", #2cdb06fb: [ "~A", "A" ] }, + #30e4876a: { #c1127ea9: 14 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 23, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, + { #c7b317f4: 15, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "B", #2cdb06fb: [ "B" ] }, + 24, + [ + <#f50d797e: + ({ + #d121c0bd: 25, + #f9005968: 23, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + 24, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 26, + #f9005968: 23, + #21793419: + ({ #c7b317f4: 13, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "10798876524598897542", + #f1a45f0e: true, + #ebe3c415: 26, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 27, + #21793419: ({ #c68b4ed6: 6 }, { #c68b4ed6: 7 }) + }, + [])> + }, + { + #ef684b00: [ + { + #298801ac: <#fa100247: (8, true)>, + #21793419: ({ }, { }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 28, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 10, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + } + ] + })>, + <#cfe47fa6: + ({ + #d121c0bd: 29, + #f9005968: 23, + #21793419: + ({ #c7b317f4: 14, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~B", #2cdb06fb: [ "~B", "B" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "7876366742276079110", + #f1a45f0e: true, + #ebe3c415: 29, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 30, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 31, + #f9005968: 23, + #21793419: + ({ #c7b317f4: 12, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "B", #2cdb06fb: [ "B", "B" ] }, + { #c1127ea9: 32 }, + { + #d2e9b40c: "7710293714478488613", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 33, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 34 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 35, + #f9005968: 23, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "B" ] }, + { #c1127ea9: 36 }, + { + #d2e9b40c: "12683202677887858481", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 37, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 34 }, + { #0370b1b2: 0 })> + ] + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 23, #1a9a7e84: true }, + { + #dbd6bb0c: [ 8 ], + #ca8a27a6: [ 8 ], + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 29, + #c8ff724b: { #c8ff724b: "~B", #2cdb06fb: [ "~B", "B" ] }, + #30e4876a: { #c1127ea9: 14 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 38, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 1 }, + { #c7b317f4: 20, #c68b4ed6: 1 }), + #d3368c8a: true + }, + { #c8ff724b: "C", #2cdb06fb: [ "C" ] }, + 39, + [ + <#f50d797e: + ({ + #d121c0bd: 40, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "C", #2cdb06fb: [ "C", "C" ] }, + 39, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 41, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 18, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "C", #2cdb06fb: [ "C", "C" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "5740611327153041165", + #f1a45f0e: true, + #ebe3c415: 41, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 42, + #21793419: ({ #c68b4ed6: 6 }, { #c68b4ed6: 7 }) + }, + [])> + }, + { })>, + <#cfe47fa6: + ({ + #d121c0bd: 43, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 19, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0a16e1f2: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~C", #2cdb06fb: [ "~C", "C" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "8663121109475859597", + #f1a45f0e: true, + #ebe3c415: 43, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 44, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 45, + #f9005968: 38, + #21793419: + ({ #c7b317f4: 17, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "C", #2cdb06fb: [ "C", "C" ] }, + { #c1127ea9: 46 }, + { + #d2e9b40c: "13331393607183256536", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 47, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 48 }, + { #0370b1b2: 0 })> + ] + }, + { #fe288443: true })>, + <#29ca61ce: + ({ + #d121c0bd: 49, + #f9005968: 38, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "C" ] }, + { #c1127ea9: 50 }, + { + #d2e9b40c: "2982129361942595904", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 51, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 48 }, + { #0370b1b2: 0 })> + ] + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 38, #1a9a7e84: true }, + { + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 43, + #c8ff724b: { #c8ff724b: "~C", #2cdb06fb: [ "~C", "C" ] }, + #30e4876a: { #c1127ea9: 14 } + } + })>, + <#f50d797e: + ({ + #d121c0bd: 52, + #f9005968: 1, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, + { #c7b317f4: 25, #c68b4ed6: 1 }) + }, + { #c8ff724b: "E", #2cdb06fb: [ "E" ] }, + 53, + [ + <#f50d797e: + ({ + #d121c0bd: 54, + #f9005968: 52, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 1 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #d3368c8a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "E", #2cdb06fb: [ "E", "E" ] }, + 53, + [], + { }, + <#c5b1f8a9>, + { #33244202: 0 }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 55, + #f9005968: 52, + #21793419: + ({ #c7b317f4: 23, #c68b4ed6: 3 }, { #c68b4ed6: 7 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "E", #2cdb06fb: [ "E", "E" ] }, + { #c1127ea9: 11 }, + { + #d2e9b40c: "7886195349376518403", + #f1a45f0e: true, + #ebe3c415: 55, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 56, + #21793419: ({ #c68b4ed6: 6 }, { #c68b4ed6: 7 }) + }, + [])> + }, + { + #ef684b00: [ + { + #298801ac: <#fa100247: (8, true)>, + #21793419: ({ }, { }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 57, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 8 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 10, + #c8ff724b: { + #c8ff724b: "A", + #2cdb06fb: [ "A", "A" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + }, + { + #298801ac: <#fa100247: (39, true)>, + #21793419: ({ }, { }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 58, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 39 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 41, + #c8ff724b: { + #c8ff724b: "C", + #2cdb06fb: [ "C", "C" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + }, + { + #298801ac: <#fa100247: (24, false)>, + #21793419: ({ }, { }), + #fe93c404: + <#e5067ee9: + ({ + #d121c0bd: 59, + #21793419: ({ #c68b4ed6: 3 }, { #c68b4ed6: 3 }) + }, + [], + { #30e4876a: { #c1127ea9: 24 } }, + { + #c369ebbe: { + #c709e154: <#034d69b7>, + #ec05e4a8: 26, + #c8ff724b: { + #c8ff724b: "B", + #2cdb06fb: [ "B", "B" ] + }, + #30e4876a: { #c1127ea9: 11 } + } + })> + } + ] + })>, + <#cfe47fa6: + ({ + #d121c0bd: 60, + #f9005968: 52, + #21793419: + ({ #c7b317f4: 24, #c68b4ed6: 3 }, { #c68b4ed6: 8 }), + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "~E", #2cdb06fb: [ "~E", "E" ] }, + { #c1127ea9: 14 }, + { + #d2e9b40c: "2987579715549688623", + #f1a45f0e: true, + #ebe3c415: 60, + #c11b7aa2: + <#d394bb73: + ({ + #d121c0bd: 61, + #21793419: ({ #c68b4ed6: 7 }, { #c68b4ed6: 8 }) + }, + [])> + }, + { })>, + <#cc498dc1: + ({ + #d121c0bd: 62, + #f9005968: 52, + #21793419: + ({ #c7b317f4: 22, #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "E", #2cdb06fb: [ "E", "E" ] }, + { #c1127ea9: 63 }, + { + #d2e9b40c: "13411848558695892246", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 64, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 65 }, + { #0370b1b2: 0 })> + ] + }, + { })>, + <#29ca61ce: + ({ + #d121c0bd: 66, + #f9005968: 52, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }), + #eb8a1f5a: true, + #0b0695a4: <#1b87f4c9> + }, + { #c8ff724b: "operator=", #2cdb06fb: [ "operator=", "E" ] }, + { #c1127ea9: 67 }, + { + #d2e9b40c: "14000323037812966926", + #f1a45f0e: true, + #3e64314e: true, + #d17ebeaa: [ + <#fd75cc45: + ({ + #d121c0bd: 68, + #21793419: ({ #c68b4ed6: 8 }, { #c68b4ed6: 8 }) + }, + { #c8ff724b: "", #2cdb06fb: [ "" ] }, + { #c1127ea9: 65 }, + { #0370b1b2: 0 })> + ] + }, + { })> + ], + { }, + <#c5b1f8a9>, + { #33244202: 52, #1a9a7e84: true }, + { + #2dba2742: [ 24 ], + #dbd6bb0c: [ 39 ], + #ca8a27a6: [ 8, 39 ], + #1411db39: { + #c709e154: <#3266451c>, + #ec05e4a8: 60, + #c8ff724b: { #c8ff724b: "~E", #2cdb06fb: [ "~E", "E" ] }, + #30e4876a: { #c1127ea9: 14 } + } + })>, + <#0f3f4d35: + ({ #d121c0bd: 69, #21793419: ({ }, { }), #eb8a1f5a: true }, + { #c8ff724b: "instancetype", #2cdb06fb: [ "instancetype" ] }, + 70, + { })> + ], + { }, + { + #e870593a: "tests/virtual_bases.cpp", + #e52854e9: <#1e1941e6>, + #f81dea91: { + #26452803: 8, + #c674c89d: 16, + #3569bf4a: 32, + #d7cd079d: 64, + #048ad2a1: 64 + }, + #1acb7079: [ + <#22d546dd: ({ #d121c0bd: 71 }, <#392cef74>)>, + <#22d546dd: ({ #d121c0bd: 72 }, <#2bf4b04a>)>, + <#22d546dd: ({ #d121c0bd: 73 }, <#ec0a078a>)>, + <#22d546dd: ({ #d121c0bd: 74 }, <#f6dab0c9>)>, + <#22d546dd: ({ #d121c0bd: 75 }, <#0f54f45c>)>, + <#22d546dd: ({ #d121c0bd: 76 }, <#0037c4cf>)>, + <#22d546dd: ({ #d121c0bd: 77 }, <#3290d19c>)>, + <#22d546dd: ({ #d121c0bd: 78 }, <#fee0a138>)>, + <#22d546dd: ({ #d121c0bd: 79 }, <#1da7d9cb>)>, + <#22d546dd: ({ #d121c0bd: 80 }, <#0baa9fe7>)>, + <#22d546dd: ({ #d121c0bd: 81 }, <#3866e79a>)>, + <#22d546dd: ({ #d121c0bd: 82 }, <#23a02071>)>, + <#22d546dd: ({ #d121c0bd: 83 }, <#09087e8d>)>, + <#22d546dd: ({ #d121c0bd: 84 }, <#15c4357c>)>, + <#22d546dd: ({ #d121c0bd: 85 }, <#e75f9f31>)>, + <#22d546dd: ({ #d121c0bd: 86 }, <#c2f78dcd>)>, + <#22d546dd: ({ #d121c0bd: 87 }, <#3726ba3b>)>, + <#22d546dd: ({ #d121c0bd: 88 }, <#3759b761>)>, + <#22d546dd: ({ #d121c0bd: 89 }, <#ebd317dd>)>, + <#22d546dd: ({ #d121c0bd: 90 }, <#2ec759b9>)>, + <#22d546dd: ({ #d121c0bd: 91 }, <#284d329d>)>, + <#22d546dd: ({ #d121c0bd: 92 }, <#35acb472>)>, + <#22d546dd: ({ #d121c0bd: 93 }, <#2b1d0544>)>, + <#22d546dd: ({ #d121c0bd: 94 }, <#0106ffa8>)>, + <#22d546dd: ({ #d121c0bd: 95 }, <#d6bc9d8a>)>, + <#22d546dd: ({ #d121c0bd: 96 }, <#19b0df66>)>, + <#22d546dd: ({ #d121c0bd: 97 }, <#1336b84a>)>, + <#22d546dd: ({ #d121c0bd: 98 }, <#20963a1f>)>, + <#22d546dd: ({ #d121c0bd: 99 }, <#16068af1>)>, + <#22d546dd: ({ #d121c0bd: 100 }, <#ebf08555>)>, + <#22d546dd: ({ #d121c0bd: 101 }, <#d78ceb63>)>, + <#22d546dd: ({ #d121c0bd: 102 }, <#dd2a33f3>)>, + <#22d546dd: ({ #d121c0bd: 103 }, <#ef62b1d7>)>, + <#22d546dd: ({ #d121c0bd: 104 }, <#0c8bf62c>)>, + <#22d546dd: ({ #d121c0bd: 105 }, <#13391dca>)>, + <#22d546dd: ({ #d121c0bd: 106 }, <#ecc0d32e>)>, + <#22d546dd: ({ #d121c0bd: 107 }, <#c2767110>)>, + <#22d546dd: ({ #d121c0bd: 108 }, <#c813b9a0>)>, + <#22d546dd: ({ #d121c0bd: 109 }, <#da4c3784>)>, + <#22d546dd: ({ #d121c0bd: 110 }, <#f7757bd9>)>, + <#22d546dd: ({ #d121c0bd: 111 }, <#fe22a377>)>, + <#22d546dd: ({ #d121c0bd: 112 }, <#d7aa58db>)>, + <#22d546dd: ({ #d121c0bd: 113 }, <#d2f340c8>)>, + <#22d546dd: ({ #d121c0bd: 114 }, <#2193aedd>)>, + <#22d546dd: ({ #d121c0bd: 115 }, <#0dd56321>)>, + <#22d546dd: ({ #d121c0bd: 116 }, <#d8e10c82>)>, + <#22d546dd: ({ #d121c0bd: 117 }, <#ec09df5b>)>, + <#22d546dd: ({ #d121c0bd: 118 }, <#ec09e115>)>, + <#22d546dd: ({ #d121c0bd: 119 }, <#c4f079df>)>, + <#22d546dd: ({ #d121c0bd: 120 }, <#1ee7219a>)>, + <#22d546dd: ({ #d121c0bd: 121 }, <#0d506118>)>, + <#22d546dd: ({ #d121c0bd: 122 }, <#dec9bcfd>)>, + <#22d546dd: ({ #d121c0bd: 123 }, <#f1f6e5a2>)>, + <#22d546dd: ({ #d121c0bd: 124 }, <#d935d0cf>)>, + <#22d546dd: ({ #d121c0bd: 125 }, <#d35a4eab>)>, + <#2e6cf4ea: ({ #d121c0bd: 126 })>, + <#2e6cf4ea: ({ #d121c0bd: 127 })>, + <#2e6cf4ea: ({ #d121c0bd: 128 })>, + <#2e6cf4ea: ({ #d121c0bd: 129 })>, + <#22d546dd: ({ #d121c0bd: 130 }, <#c9ba0f87>)>, + <#22d546dd: ({ #d121c0bd: 131 }, <#db21580c>)>, + <#22d546dd: ({ #d121c0bd: 132 }, <#391b1e6e>)>, + <#d3d219f7: ({ #d121c0bd: 133 }, { #c1127ea9: 71 })>, + <#22d546dd: ({ #d121c0bd: 134 }, <#ea323187>)>, + <#22d546dd: ({ #d121c0bd: 135 }, <#2fe155d3>)>, + <#d80cb60b: ({ #d121c0bd: 136 }, 137)>, + <#d3d219f7: ({ #d121c0bd: 138 }, { #c1127ea9: 76, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 139 }, { #c1127ea9: 73, #ea1a680e: true })>, + <#d3d219f7: ({ #d121c0bd: 140 }, { #c1127ea9: 73 })>, + <#d80cb60b: ({ #d121c0bd: 141 }, 142)>, + <#da0c5ecf: + ({ #d121c0bd: 143 }, + { #cd26765d: { #c1127ea9: 141 }, #11302019: 24 }, + 1)>, + <#d80cb60b: ({ #d121c0bd: 8 }, 7)>, + <#d3d219f7: ({ #d121c0bd: 144 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 11 }, { #f9c96be9: { #c1127ea9: 71 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 145 }, { #f9c96be9: { #c1127ea9: 71 } }, { })>, + <#26796f6a: + ({ #d121c0bd: 14 }, { #f9c96be9: { #c1127ea9: 71 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 24 }, 23)>, + <#d3d219f7: ({ #d121c0bd: 146 }, { #c1127ea9: 24 })>, + <#26796f6a: + ({ #d121c0bd: 147 }, { #f9c96be9: { #c1127ea9: 71 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 34 }, { #c1127ea9: 24, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 148 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#26796f6a: + ({ #d121c0bd: 32 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#0b08cd60: ({ #d121c0bd: 19 }, { #c1127ea9: 8, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 149 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 19 } ] })>, + <#26796f6a: + ({ #d121c0bd: 17 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 19 } ] })>, + <#0b08cd60: ({ #d121c0bd: 150 }, { #c1127ea9: 24 })>, + <#26796f6a: + ({ #d121c0bd: 151 }, + { #f9c96be9: { #c1127ea9: 150 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#26796f6a: + ({ #d121c0bd: 36 }, + { #f9c96be9: { #c1127ea9: 150 } }, + { #08ec7593: [ { #c1127ea9: 34 } ] })>, + <#0b08cd60: ({ #d121c0bd: 152 }, { #c1127ea9: 8 })>, + <#26796f6a: + ({ #d121c0bd: 153 }, + { #f9c96be9: { #c1127ea9: 152 } }, + { #08ec7593: [ { #c1127ea9: 19 } ] })>, + <#26796f6a: + ({ #d121c0bd: 21 }, + { #f9c96be9: { #c1127ea9: 152 } }, + { #08ec7593: [ { #c1127ea9: 19 } ] })>, + <#d80cb60b: ({ #d121c0bd: 39 }, 38)>, + <#d3d219f7: ({ #d121c0bd: 154 }, { #c1127ea9: 39 })>, + <#26796f6a: + ({ #d121c0bd: 155 }, { #f9c96be9: { #c1127ea9: 71 } }, { })>, + <#d80cb60b: ({ #d121c0bd: 53 }, 52)>, + <#d3d219f7: ({ #d121c0bd: 156 }, { #c1127ea9: 53 })>, + <#26796f6a: + ({ #d121c0bd: 157 }, { #f9c96be9: { #c1127ea9: 71 } }, { })>, + <#0b08cd60: ({ #d121c0bd: 65 }, { #c1127ea9: 53, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 158 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 65 } ] })>, + <#26796f6a: + ({ #d121c0bd: 63 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 65 } ] })>, + <#0b08cd60: ({ #d121c0bd: 48 }, { #c1127ea9: 39, #ea1a680e: true })>, + <#26796f6a: + ({ #d121c0bd: 159 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 48 } ] })>, + <#26796f6a: + ({ #d121c0bd: 46 }, + { #f9c96be9: { #c1127ea9: 71 } }, + { #08ec7593: [ { #c1127ea9: 48 } ] })>, + <#0b08cd60: ({ #d121c0bd: 160 }, { #c1127ea9: 53 })>, + <#26796f6a: + ({ #d121c0bd: 161 }, + { #f9c96be9: { #c1127ea9: 160 } }, + { #08ec7593: [ { #c1127ea9: 65 } ] })>, + <#26796f6a: + ({ #d121c0bd: 67 }, + { #f9c96be9: { #c1127ea9: 160 } }, + { #08ec7593: [ { #c1127ea9: 65 } ] })>, + <#0b08cd60: ({ #d121c0bd: 162 }, { #c1127ea9: 39 })>, + <#26796f6a: + ({ #d121c0bd: 163 }, + { #f9c96be9: { #c1127ea9: 162 } }, + { #08ec7593: [ { #c1127ea9: 48 } ] })>, + <#26796f6a: + ({ #d121c0bd: 50 }, + { #f9c96be9: { #c1127ea9: 162 } }, + { #08ec7593: [ { #c1127ea9: 48 } ] })>, + <#0098a8c5: ({ #d121c0bd: 164 }, { #fcd148e8: 130 })>, + <#2e3d736c: ({ #d121c0bd: 165 }, { #c1127ea9: 164 })>, + <#19e1ef85: + ({ #d121c0bd: 166, #26f32be5: 165 }, + { #0b680f7d: { #c1127ea9: 165 }, #c3687459: 167 })>, + <#19e1ef85: + ({ #d121c0bd: 70, #26f32be5: 165 }, + { #0b680f7d: { #c1127ea9: 166 }, #c3687459: 69 })>, + <#cfc9a9b2: ({ #d121c0bd: 0 })> + ] + })> diff --git a/facebook-clang-plugins/libtooling/tests/FoundationStub.h b/facebook-clang-plugins/libtooling/tests/FoundationStub.h new file mode 100644 index 000000000..a074fa7eb --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/FoundationStub.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2013-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. + */ + +typedef int BOOL; +typedef unsigned int NSUInteger; + +#define YES 1 +#define NO 0 +#define NULL ((void *)0) +#define nil ((id)0) + +@interface NSObject + ++ (instancetype)alloc; ++ (instancetype)new; +- (instancetype)autorelease; +- (instancetype)init; +- (Class)class; + +- (BOOL)respondsToSelector:(SEL)s; +- (BOOL)conformsToProtocol:(Protocol *)p; + +@end + +@interface NSNumber : NSObject ++ (instancetype)numberWithInt:(int)x; +@end + +@interface NSString : NSObject +- (NSUInteger)length; +@end + +@interface NSDictionary : NSObject ++ (instancetype)dictionaryWithObjects:(const id[])objects + forKeys:(const id[])keys + count:(NSUInteger)count; +- (id)objectForKeyedSubscript:(id)key; +@end + +@interface NSArray : NSObject ++ (instancetype)arrayWithObjects:(id *)objs count:(unsigned)cnt; +- (id)objectAtIndexedSubscript:(NSUInteger)index; +@end + +@interface NSException : NSObject +@end + +extern void NSLog(NSString *, ...); diff --git a/facebook-clang-plugins/libtooling/tests/Hello.m b/facebook-clang-plugins/libtooling/tests/Hello.m new file mode 100644 index 000000000..f5893701a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/Hello.m @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2013-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. + */ + +#include "FoundationStub.h" + +@interface Hello : NSObject +- (void)say:(int)i; +@end + +@implementation Hello +- (void)say:(int)i { + if (i > 0) { + NSLog(@"Hello, world! (%d)", i); + } +} +@end + +int main(int argc, char *argv[]) { + for (int i = 0; i < 3; i++) { + @autoreleasepool { + [[Hello new] say:i]; + } + } + return 0; +} diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/Hello.m.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/Hello.m.exp new file mode 100644 index 000000000..e5df30bc4 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/Hello.m.exp @@ -0,0 +1,3463 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 9, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 1, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 14, + "source_range" : [ + { + "file" : "tests/FoundationStub.h", + "line" : 8, + "column" : 1 + }, + { + "column" : 13 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "BOOL", + "qual_name" : [ + "BOOL" + ] + }, + 15, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 16, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "column" : 22 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "NSUInteger", + "qual_name" : [ + "NSUInteger" + ] + }, + 17, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "line" : 27, + "column" : 2 + } + ] + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 22 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 20, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "alloc", + "qual_name" : [ + "alloc", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject alloc]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "column" : 20 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 23, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "new", + "qual_name" : [ + "new", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject new]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 20, + "column" : 1 + }, + { + "column" : 28 + } + ] + }, + { + "name" : "autorelease", + "qual_name" : [ + "autorelease", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject autorelease]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 25, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "column" : 21 + } + ], + "attributes" : [ + ["NSConsumesSelfAttr" , [ + { + "pointer" : 26, + "source_range" : [ + { + }, + { + } + ] + } + ]], + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 27, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "init", + "qual_name" : [ + "init", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject init]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "column" : 15 + } + ] + }, + { + "name" : "class", + "qual_name" : [ + "class", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 9 + }, + "mangled_name" : "-[NSObject class]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 29, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 24, + "column" : 1 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "respondsToSelector:", + "qual_name" : [ + "respondsToSelector:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 33 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 5 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSObject respondsToSelector:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 25, + "column" : 1 + }, + { + "column" : 41 + } + ] + }, + { + "name" : "conformsToProtocol:", + "qual_name" : [ + "conformsToProtocol:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 40 + } + ] + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 33 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSObject conformsToProtocol:]" + } + ]] + ], + { + }, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 29, + "column" : 1 + }, + { + "line" : 31, + "column" : 2 + } + ] + }, + { + "name" : "NSNumber", + "qual_name" : [ + "NSNumber" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 35, + "parent_pointer" : 34, + "source_range" : [ + { + "line" : 30, + "column" : 1 + }, + { + "column" : 37 + } + ] + }, + { + "name" : "numberWithInt:", + "qual_name" : [ + "numberWithInt:", + "NSNumber" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 32 + }, + { + "column" : 36 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "+[NSNumber numberWithInt:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 33, + "column" : 1 + }, + { + "line" : 35, + "column" : 2 + } + ] + }, + { + "name" : "NSString", + "qual_name" : [ + "NSString" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 39, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 34, + "column" : 1 + }, + { + "column" : 21 + } + ] + }, + { + "name" : "length", + "qual_name" : [ + "length", + "NSString" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "mangled_name" : "-[NSString length]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 37, + "column" : 1 + }, + { + "line" : 42, + "column" : 2 + } + ] + }, + { + "name" : "NSDictionary", + "qual_name" : [ + "NSDictionary" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 41, + "parent_pointer" : 40, + "source_range" : [ + { + "line" : 38, + "column" : 1 + }, + { + "line" : 40, + "column" : 56 + } + ] + }, + { + "name" : "dictionaryWithObjects:forKeys:count:", + "qual_name" : [ + "dictionaryWithObjects:forKeys:count:", + "NSDictionary" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 42, + "source_range" : [ + { + "line" : 38, + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "objects", + "qual_name" : [ + "objects" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 44, + "source_range" : [ + { + "line" : 39, + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "keys", + "qual_name" : [ + "keys" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 1 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 45, + "source_range" : [ + { + "line" : 40, + "column" : 40 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "count", + "qual_name" : [ + "count" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 2 + } + ]] + ], + "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 46, + "parent_pointer" : 40, + "source_range" : [ + { + "line" : 41, + "column" : 1 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "objectForKeyedSubscript:", + "qual_name" : [ + "objectForKeyedSubscript:", + "NSDictionary" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 32 + }, + { + "column" : 35 + } + ] + }, + { + "name" : "key", + "qual_name" : [ + "key" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 44, + "column" : 1 + }, + { + "line" : 47, + "column" : 2 + } + ] + }, + { + "name" : "NSArray", + "qual_name" : [ + "NSArray" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 49, + "parent_pointer" : 48, + "source_range" : [ + { + "line" : 45, + "column" : 1 + }, + { + "column" : 64 + } + ] + }, + { + "name" : "arrayWithObjects:count:", + "qual_name" : [ + "arrayWithObjects:count:", + "NSArray" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 40 + } + ] + }, + { + "name" : "objs", + "qual_name" : [ + "objs" + ] + }, + { + "type_ptr" : 51 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 52 + }, + { + "column" : 61 + } + ] + }, + { + "name" : "cnt", + "qual_name" : [ + "cnt" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 1 + } + ]] + ], + "mangled_name" : "+[NSArray arrayWithObjects:count:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 54, + "parent_pointer" : 48, + "source_range" : [ + { + "line" : 46, + "column" : 1 + }, + { + "column" : 49 + } + ] + }, + { + "name" : "objectAtIndexedSubscript:", + "qual_name" : [ + "objectAtIndexedSubscript:", + "NSArray" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 44 + } + ] + }, + { + "name" : "index", + "qual_name" : [ + "index" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 56, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 49, + "column" : 1 + }, + { + "line" : 50, + "column" : 2 + } + ] + }, + { + "name" : "NSException", + "qual_name" : [ + "NSException" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 57, + "source_range" : [ + { + "line" : 52, + "column" : 13 + }, + { + "column" : 13 + } + ], + "is_implicit" : true, + "is_used" : true, + "attributes" : [ + ["FormatAttr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + } + ]] + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 60, + "source_range" : [ + { + }, + { + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 34 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + ["FormatAttr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + } + ]] + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 28 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 65, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/Hello.m", + "line" : 10, + "column" : 1 + }, + { + "line" : 12, + "column" : 2 + } + ] + }, + { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 66, + "parent_pointer" : 65, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "column" : 19 + } + ] + }, + { + "name" : "say:", + "qual_name" : [ + "say:", + "Hello" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 67 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 68, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 18 + } + ] + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[Hello say:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : "ObjCImplementation", + "decl_pointer" : 69, + "name" : { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + } + } + } + ]], + ["ObjCImplementationDecl" , [ + { + "pointer" : 69, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "line" : 20, + "column" : 1 + } + ] + }, + { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 70, + "parent_pointer" : 69, + "source_range" : [ + { + "line" : 15, + "column" : 1 + }, + { + "line" : 19, + "column" : 1 + } + ] + }, + { + "name" : "say:", + "qual_name" : [ + "say:", + "Hello" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 67 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 71, + "source_range" : [ + { + "line" : 15, + "column" : 14 + }, + { + "column" : 18 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 72, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 73, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 74, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 20 + }, + { + "line" : 19, + "column" : 1 + } + ] + }, + [ + ["IfStmt" , [ + { + "pointer" : 76, + "source_range" : [ + { + "line" : 16, + "column" : 3 + }, + { + "line" : 18, + "column" : 3 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 77, + "source_range" : [ + { + "line" : 16, + "column" : 7 + }, + { + "column" : 11 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 71, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 80, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : "GT" + } + ]], + ["CompoundStmt" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 14 + }, + { + "line" : 18, + "column" : 3 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 82, + "source_range" : [ + { + "line" : 17, + "column" : 5 + }, + { + "column" : 35 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 85 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 89 + }, + "value_kind" : "LValue" + }, + [ + "Hello, world! (%d)" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 71, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + } + ]] + ] + ]] + ], + { + "cond" : 77, + "then" : 81 + } + ]] + ] + ]], + "mangled_name" : "-[Hello say:]" + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 65, + "name" : { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 92, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "line" : 29, + "column" : 1 + } + ] + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 93 + }, + { + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 94, + "source_range" : [ + { + "line" : 22, + "column" : 10 + }, + { + "column" : 14 + } + ] + }, + { + "name" : "argc", + "qual_name" : [ + "argc" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 95, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 31 + } + ] + }, + { + "name" : "argv", + "qual_name" : [ + "argv" + ] + }, + { + "type_ptr" : 96 + }, + { + "parm_index_in_function" : 1 + } + ]] + ], + "decl_ptr_with_body" : 92, + "body" : ["CompoundStmt" , [ + { + "pointer" : 97, + "source_range" : [ + { + "column" : 34 + }, + { + "line" : 29, + "column" : 1 + } + ] + }, + [ + ["ForStmt" , [ + { + "pointer" : 98, + "source_range" : [ + { + "line" : 23, + "column" : 3 + }, + { + "line" : 27, + "column" : 3 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 99, + "source_range" : [ + { + "line" : 23, + "column" : 8 + }, + { + "column" : 17 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 100, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 101, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 16 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 37 + }, + { + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 100, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]] + ] + ]], + ["NullStmt" , [ + { + "pointer" : 102, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ] + ]], + ["BinaryOperator" , [ + { + "pointer" : 103, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 23 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 104, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 105, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 101, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : "LT" + } + ]], + ["UnaryOperator" , [ + { + "pointer" : 107, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 27 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 108, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 101, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : "PostInc", + "is_postfix" : true + } + ]], + ["CompoundStmt" , [ + { + "pointer" : 109, + "source_range" : [ + { + "column" : 31 + }, + { + "line" : 27, + "column" : 3 + } + ] + }, + [ + ["ObjCAutoreleasePoolStmt" , [ + { + "pointer" : 110, + "source_range" : [ + { + "line" : 24, + "column" : 5 + }, + { + "line" : 26, + "column" : 5 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 111, + "source_range" : [ + { + "line" : 24, + "column" : 22 + }, + { + "line" : 26, + "column" : 5 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 112, + "source_range" : [ + { + "line" : 25, + "column" : 7 + }, + { + "column" : 25 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 113, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 25 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 114, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 18 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 115, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "selector" : "new", + "decl_pointer" : 22, + "receiver_kind" : ["Class" , { + "type_ptr" : 116 + }] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "cast_kind" : "ARCConsumeObject", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 117, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 118, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 101, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "selector" : "say:", + "is_definition_found" : true, + "decl_pointer" : 70 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + } + ]] + ] + ]] + ] + ]] + ] + ]] + ] + ]], + ["ReturnStmt" , [ + { + "pointer" : 119, + "source_range" : [ + { + "line" : 28, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 120, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 121, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/Hello.m", + "input_kind" : "IK_ObjC", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 139 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 140 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 141 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 142 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 143 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 144 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 145 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 146 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 149 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 150 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 151 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 152 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 153 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 154 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 155 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 156 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 157 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 158 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 159 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 160 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 161 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 162 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 163 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 164 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 165 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 166 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 167 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 168 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 169 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 170 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 171 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 172 + } + ]], + ["ComplexType" , [ + { + "pointer" : 173 + } + ]], + ["ComplexType" , [ + { + "pointer" : 174 + } + ]], + ["ComplexType" , [ + { + "pointer" : 175 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 176 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 177 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 178 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 179 + }, + { + "type_ptr" : 67 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 180 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 181 + }, + "Half" + ]], + ["PointerType" , [ + { + "pointer" : 182 + }, + { + "type_ptr" : 178 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 183 + }, + { + "base_type" : 176 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 184 + }, + { + "type_ptr" : 183 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 185 + }, + { + "base_type" : 177 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 186 + }, + { + "type_ptr" : 185 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 187 + }, + 10 + ]], + ["RecordType" , [ + { + "pointer" : 188 + }, + 189 + ]], + ["PointerType" , [ + { + "pointer" : 190 + }, + { + "type_ptr" : 37, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 191 + }, + { + "type_ptr" : 123, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 192 + }, + { + "type_ptr" : 123 + } + ]], + ["RecordType" , [ + { + "pointer" : 193 + }, + 194 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 195 + }, + { + "element_type" : { + "type_ptr" : 193 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 196 + }, + 18 + ]], + ["TypedefType" , [ + { + "pointer" : 7, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 184 + }, + "decl_ptr" : 6 + } + ]], + ["TypedefType" , [ + { + "pointer" : 21, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 121 + } + ]], + ["TypedefType" , [ + { + "pointer" : 9, + "desugared_type" : 186 + }, + { + "child_type" : { + "type_ptr" : 186 + }, + "decl_ptr" : 8 + } + ]], + ["TypedefType" , [ + { + "pointer" : 15, + "desugared_type" : 37 + }, + { + "child_type" : { + "type_ptr" : 37 + }, + "decl_ptr" : 14 + } + ]], + ["TypedefType" , [ + { + "pointer" : 5, + "desugared_type" : 182 + }, + { + "child_type" : { + "type_ptr" : 182 + }, + "decl_ptr" : 4 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 33 + }, + { + "type_ptr" : 187 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 197 + }, + 34 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 198 + }, + 38 + ]], + ["TypedefType" , [ + { + "pointer" : 17, + "desugared_type" : 53 + }, + { + "child_type" : { + "type_ptr" : 53 + }, + "decl_ptr" : 16 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 199 + }, + 40 + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 200 + }, + { + "element_type" : { + "type_ptr" : 184 + }, + "stride" : 8 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 201 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 202 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 203 + }, + { + "type_ptr" : 184, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 204 + }, + { + "type_ptr" : 7, + "is_const" : true + } + ]], + ["DecayedType" , [ + { + "pointer" : 43, + "desugared_type" : 204 + }, + { + "type_ptr" : 204 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 205 + }, + 48 + ]], + ["PointerType" , [ + { + "pointer" : 206 + }, + { + "type_ptr" : 184 + } + ]], + ["PointerType" , [ + { + "pointer" : 51 + }, + { + "type_ptr" : 7 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 207 + }, + 56 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 64 + }, + { + "type_ptr" : 198 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 208 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 209 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 210 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 184 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 59 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 7 + } + ] + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 116 + }, + 65 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 73 + }, + { + "type_ptr" : 116 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 89 + }, + { + "element_type" : { + "type_ptr" : 123 + }, + "stride" : 1 + }, + 19 + ]], + ["PointerType" , [ + { + "pointer" : 211 + }, + { + "type_ptr" : 210 + } + ]], + ["PointerType" , [ + { + "pointer" : 85 + }, + { + "type_ptr" : 59 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 212 + }, + { + "element_type" : { + "type_ptr" : 192 + }, + "stride" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 213 + }, + { + "type_ptr" : 192 + } + ]], + ["DecayedType" , [ + { + "pointer" : 96, + "desugared_type" : 213 + }, + { + "type_ptr" : 213 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 214 + }, + { + "return_type" : { + "type_ptr" : 37 + } + }, + { + "params_type" : [ + { + "type_ptr" : 37 + }, + { + "type_ptr" : 213 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 93 + }, + { + "return_type" : { + "type_ptr" : 37 + } + }, + { + "params_type" : [ + { + "type_ptr" : 37 + }, + { + "type_ptr" : 96 + } + ] + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCBridgeTransferTest.m.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCBridgeTransferTest.m.exp new file mode 100644 index 000000000..6b60882d3 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCBridgeTransferTest.m.exp @@ -0,0 +1,2840 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 9, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 1, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 14, + "source_range" : [ + { + "file" : "tests/FoundationStub.h", + "line" : 8, + "column" : 1 + }, + { + "column" : 13 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "BOOL", + "qual_name" : [ + "BOOL" + ] + }, + 15, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 16, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "column" : 22 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "NSUInteger", + "qual_name" : [ + "NSUInteger" + ] + }, + 17, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "line" : 27, + "column" : 2 + } + ] + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 22 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 20, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "alloc", + "qual_name" : [ + "alloc", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject alloc]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "column" : 20 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 23, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "new", + "qual_name" : [ + "new", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject new]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 20, + "column" : 1 + }, + { + "column" : 28 + } + ] + }, + { + "name" : "autorelease", + "qual_name" : [ + "autorelease", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject autorelease]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 25, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "column" : 21 + } + ], + "attributes" : [ + ["NSConsumesSelfAttr" , [ + { + "pointer" : 26, + "source_range" : [ + { + }, + { + } + ] + } + ]], + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 27, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "init", + "qual_name" : [ + "init", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject init]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "column" : 15 + } + ] + }, + { + "name" : "class", + "qual_name" : [ + "class", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 9 + }, + "mangled_name" : "-[NSObject class]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 29, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 24, + "column" : 1 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "respondsToSelector:", + "qual_name" : [ + "respondsToSelector:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 33 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 5 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSObject respondsToSelector:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 25, + "column" : 1 + }, + { + "column" : 41 + } + ] + }, + { + "name" : "conformsToProtocol:", + "qual_name" : [ + "conformsToProtocol:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 40 + } + ] + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 33 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSObject conformsToProtocol:]" + } + ]] + ], + { + }, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 29, + "column" : 1 + }, + { + "line" : 31, + "column" : 2 + } + ] + }, + { + "name" : "NSNumber", + "qual_name" : [ + "NSNumber" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 35, + "parent_pointer" : 34, + "source_range" : [ + { + "line" : 30, + "column" : 1 + }, + { + "column" : 37 + } + ] + }, + { + "name" : "numberWithInt:", + "qual_name" : [ + "numberWithInt:", + "NSNumber" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 32 + }, + { + "column" : 36 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "+[NSNumber numberWithInt:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 33, + "column" : 1 + }, + { + "line" : 35, + "column" : 2 + } + ] + }, + { + "name" : "NSString", + "qual_name" : [ + "NSString" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 39, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 34, + "column" : 1 + }, + { + "column" : 21 + } + ] + }, + { + "name" : "length", + "qual_name" : [ + "length", + "NSString" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "mangled_name" : "-[NSString length]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 37, + "column" : 1 + }, + { + "line" : 42, + "column" : 2 + } + ] + }, + { + "name" : "NSDictionary", + "qual_name" : [ + "NSDictionary" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 41, + "parent_pointer" : 40, + "source_range" : [ + { + "line" : 38, + "column" : 1 + }, + { + "line" : 40, + "column" : 56 + } + ] + }, + { + "name" : "dictionaryWithObjects:forKeys:count:", + "qual_name" : [ + "dictionaryWithObjects:forKeys:count:", + "NSDictionary" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 42, + "source_range" : [ + { + "line" : 38, + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "objects", + "qual_name" : [ + "objects" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 44, + "source_range" : [ + { + "line" : 39, + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "keys", + "qual_name" : [ + "keys" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 1 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 45, + "source_range" : [ + { + "line" : 40, + "column" : 40 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "count", + "qual_name" : [ + "count" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 2 + } + ]] + ], + "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 46, + "parent_pointer" : 40, + "source_range" : [ + { + "line" : 41, + "column" : 1 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "objectForKeyedSubscript:", + "qual_name" : [ + "objectForKeyedSubscript:", + "NSDictionary" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 32 + }, + { + "column" : 35 + } + ] + }, + { + "name" : "key", + "qual_name" : [ + "key" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 44, + "column" : 1 + }, + { + "line" : 47, + "column" : 2 + } + ] + }, + { + "name" : "NSArray", + "qual_name" : [ + "NSArray" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 49, + "parent_pointer" : 48, + "source_range" : [ + { + "line" : 45, + "column" : 1 + }, + { + "column" : 64 + } + ] + }, + { + "name" : "arrayWithObjects:count:", + "qual_name" : [ + "arrayWithObjects:count:", + "NSArray" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 40 + } + ] + }, + { + "name" : "objs", + "qual_name" : [ + "objs" + ] + }, + { + "type_ptr" : 51 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 52 + }, + { + "column" : 61 + } + ] + }, + { + "name" : "cnt", + "qual_name" : [ + "cnt" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 1 + } + ]] + ], + "mangled_name" : "+[NSArray arrayWithObjects:count:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 54, + "parent_pointer" : 48, + "source_range" : [ + { + "line" : 46, + "column" : 1 + }, + { + "column" : 49 + } + ] + }, + { + "name" : "objectAtIndexedSubscript:", + "qual_name" : [ + "objectAtIndexedSubscript:", + "NSArray" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 44 + } + ] + }, + { + "name" : "index", + "qual_name" : [ + "index" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 56, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 49, + "column" : 1 + }, + { + "line" : 50, + "column" : 2 + } + ] + }, + { + "name" : "NSException", + "qual_name" : [ + "NSException" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 57, + "source_range" : [ + { + "line" : 52, + "column" : 13 + }, + { + "column" : 13 + } + ], + "is_implicit" : true, + "attributes" : [ + ["FormatAttr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + } + ]] + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 60, + "source_range" : [ + { + }, + { + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 34 + } + ], + "attributes" : [ + ["FormatAttr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + } + ]] + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 28 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["RecordDecl" , [ + { + "pointer" : 65, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/ObjCBridgeTransferTest.m", + "line" : 10, + "column" : 9 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "ABFDataRef", + "qual_name" : [ + "ABFDataRef" + ] + }, + 66, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 65, + "is_complete_definition" : true + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 67, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "line" : 11, + "column" : 3 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "ABFDataRef", + "qual_name" : [ + "ABFDataRef" + ] + }, + 68, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 69, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 14, + "column" : 2 + } + ] + }, + { + "name" : "ABFData", + "qual_name" : [ + "ABFData" + ] + }, + [ + ], + { + }, + { + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 70, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "column" : 27 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ABFDataCreate", + "qual_name" : [ + "ABFDataCreate" + ] + }, + { + "type_ptr" : 71 + }, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 72, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "line" : 19, + "column" : 2 + } + ] + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : "ObjCImplementation", + "decl_pointer" : 73, + "name" : { + "name" : "A", + "qual_name" : [ + "A" + ] + } + } + } + ]], + ["ObjCImplementationDecl" , [ + { + "pointer" : 73, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ] + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 74, + "parent_pointer" : 73, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "line" : 25, + "column" : 1 + } + ] + }, + { + "name" : "bridge_transfer_example", + "qual_name" : [ + "bridge_transfer_example", + "A" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 75 + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 76, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 77, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 78, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 79, + "source_range" : [ + { + "line" : 23, + "column" : 33 + }, + { + "line" : 25, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 80, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 66 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 65 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 82, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 65 + } + ] + }, + [ + ["ObjCBridgedCastExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 65 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 65 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 51 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 51 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 70, + "name" : { + "name" : "ABFDataCreate", + "qual_name" : [ + "ABFDataCreate" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 88 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : "CPointerToObjCPointerCast", + "base_path" : [ + ] + }, + { + "type_ptr" : 89 + }, + { + "cast_kind" : "OBC_BridgeTransfer" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : "ARCConsumeObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 65 + } + ] + }, + { + "name" : "someData", + "qual_name" : [ + "someData" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 65 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 82, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 65 + } + ] + }, + [ + ["ObjCBridgedCastExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 65 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 65 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 51 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 51 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 70, + "name" : { + "name" : "ABFDataCreate", + "qual_name" : [ + "ABFDataCreate" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 88 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : "CPointerToObjCPointerCast", + "base_path" : [ + ] + }, + { + "type_ptr" : 89 + }, + { + "cast_kind" : "OBC_BridgeTransfer" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : "ARCConsumeObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + } + ]] + } + ]] + ] + ]] + ] + ]], + "mangled_name" : "-[A bridge_transfer_example]" + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 72, + "name" : { + "name" : "A", + "qual_name" : [ + "A" + ] + } + } + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 91, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/ObjCBridgeTransferTest.m", + "input_kind" : "IK_ObjC", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 101 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 102 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 106 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 109 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 110 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 112 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 116 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 139 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 140 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 141 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 142 + } + ]], + ["ComplexType" , [ + { + "pointer" : 143 + } + ]], + ["ComplexType" , [ + { + "pointer" : 144 + } + ]], + ["ComplexType" , [ + { + "pointer" : 145 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 146 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 149 + }, + { + "type_ptr" : 75 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 150 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 151 + }, + "Half" + ]], + ["PointerType" , [ + { + "pointer" : 152 + }, + { + "type_ptr" : 148 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 153 + }, + { + "base_type" : 146 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 154 + }, + { + "type_ptr" : 153 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 155 + }, + { + "base_type" : 147 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 156 + }, + { + "type_ptr" : 155 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 157 + }, + 10 + ]], + ["RecordType" , [ + { + "pointer" : 158 + }, + 159 + ]], + ["PointerType" , [ + { + "pointer" : 160 + }, + { + "type_ptr" : 37, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 161 + }, + { + "type_ptr" : 93, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 162 + }, + { + "type_ptr" : 93 + } + ]], + ["RecordType" , [ + { + "pointer" : 163 + }, + 164 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 165 + }, + { + "element_type" : { + "type_ptr" : 163 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 166 + }, + 18 + ]], + ["TypedefType" , [ + { + "pointer" : 7, + "desugared_type" : 154 + }, + { + "child_type" : { + "type_ptr" : 154 + }, + "decl_ptr" : 6 + } + ]], + ["TypedefType" , [ + { + "pointer" : 21, + "desugared_type" : 154 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 91 + } + ]], + ["TypedefType" , [ + { + "pointer" : 9, + "desugared_type" : 156 + }, + { + "child_type" : { + "type_ptr" : 156 + }, + "decl_ptr" : 8 + } + ]], + ["TypedefType" , [ + { + "pointer" : 15, + "desugared_type" : 37 + }, + { + "child_type" : { + "type_ptr" : 37 + }, + "decl_ptr" : 14 + } + ]], + ["TypedefType" , [ + { + "pointer" : 5, + "desugared_type" : 152 + }, + { + "child_type" : { + "type_ptr" : 152 + }, + "decl_ptr" : 4 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 33 + }, + { + "type_ptr" : 157 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 167 + }, + 34 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 168 + }, + 38 + ]], + ["TypedefType" , [ + { + "pointer" : 17, + "desugared_type" : 53 + }, + { + "child_type" : { + "type_ptr" : 53 + }, + "decl_ptr" : 16 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 169 + }, + 40 + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 170 + }, + { + "element_type" : { + "type_ptr" : 154 + }, + "stride" : 8 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 171 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 172 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 173 + }, + { + "type_ptr" : 154, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 174 + }, + { + "type_ptr" : 7, + "is_const" : true + } + ]], + ["DecayedType" , [ + { + "pointer" : 43, + "desugared_type" : 174 + }, + { + "type_ptr" : 174 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 175 + }, + 48 + ]], + ["PointerType" , [ + { + "pointer" : 176 + }, + { + "type_ptr" : 154 + } + ]], + ["PointerType" , [ + { + "pointer" : 51 + }, + { + "type_ptr" : 7 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 177 + }, + 56 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 64 + }, + { + "type_ptr" : 168 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 178 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 179 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 180 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 154 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 59 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 7 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 66 + }, + 65 + ]], + ["ElaboratedType" , [ + { + "pointer" : 181, + "desugared_type" : 66 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 182 + }, + 69 + ]], + ["TypedefType" , [ + { + "pointer" : 68, + "desugared_type" : 66 + }, + { + "child_type" : { + "type_ptr" : 181 + }, + "decl_ptr" : 67 + } + ]], + ["PointerType" , [ + { + "pointer" : 183 + }, + { + "type_ptr" : 66 + } + ]], + ["PointerType" , [ + { + "pointer" : 88 + }, + { + "type_ptr" : 68 + } + ]], + ["FunctionNoProtoType" , [ + { + "pointer" : 184 + }, + { + "return_type" : { + "type_ptr" : 183 + } + } + ]], + ["FunctionNoProtoType" , [ + { + "pointer" : 71 + }, + { + "return_type" : { + "type_ptr" : 88 + } + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 185 + }, + 72 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 77 + }, + { + "type_ptr" : 185 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 89 + }, + { + "type_ptr" : 182 + } + ]], + ["PointerType" , [ + { + "pointer" : 186 + }, + { + "type_ptr" : 184 + } + ]], + ["PointerType" , [ + { + "pointer" : 87 + }, + { + "type_ptr" : 71 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCTest.m.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCTest.m.exp new file mode 100644 index 000000000..803c256ea --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/ObjCTest.m.exp @@ -0,0 +1,13483 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 9, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 1, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 14, + "source_range" : [ + { + "file" : "tests/FoundationStub.h", + "line" : 8, + "column" : 1 + }, + { + "column" : 13 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "BOOL", + "qual_name" : [ + "BOOL" + ] + }, + 15, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 16, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "column" : 22 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "NSUInteger", + "qual_name" : [ + "NSUInteger" + ] + }, + 17, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "line" : 27, + "column" : 2 + } + ] + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 22 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 20, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "alloc", + "qual_name" : [ + "alloc", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject alloc]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "column" : 20 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 23, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "new", + "qual_name" : [ + "new", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject new]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 20, + "column" : 1 + }, + { + "column" : 28 + } + ] + }, + { + "name" : "autorelease", + "qual_name" : [ + "autorelease", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject autorelease]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 25, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "column" : 21 + } + ], + "attributes" : [ + ["NSConsumesSelfAttr" , [ + { + "pointer" : 26, + "source_range" : [ + { + }, + { + } + ] + } + ]], + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 27, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "init", + "qual_name" : [ + "init", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject init]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "column" : 15 + } + ] + }, + { + "name" : "class", + "qual_name" : [ + "class", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 9 + }, + "mangled_name" : "-[NSObject class]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 29, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 24, + "column" : 1 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "respondsToSelector:", + "qual_name" : [ + "respondsToSelector:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 33 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 5 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSObject respondsToSelector:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 25, + "column" : 1 + }, + { + "column" : 41 + } + ] + }, + { + "name" : "conformsToProtocol:", + "qual_name" : [ + "conformsToProtocol:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 40 + } + ] + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 33 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSObject conformsToProtocol:]" + } + ]] + ], + { + }, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 29, + "column" : 1 + }, + { + "line" : 31, + "column" : 2 + } + ] + }, + { + "name" : "NSNumber", + "qual_name" : [ + "NSNumber" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 35, + "parent_pointer" : 34, + "source_range" : [ + { + "line" : 30, + "column" : 1 + }, + { + "column" : 37 + } + ] + }, + { + "name" : "numberWithInt:", + "qual_name" : [ + "numberWithInt:", + "NSNumber" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 32 + }, + { + "column" : 36 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "+[NSNumber numberWithInt:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 33, + "column" : 1 + }, + { + "line" : 35, + "column" : 2 + } + ] + }, + { + "name" : "NSString", + "qual_name" : [ + "NSString" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 39, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 34, + "column" : 1 + }, + { + "column" : 21 + } + ] + }, + { + "name" : "length", + "qual_name" : [ + "length", + "NSString" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "mangled_name" : "-[NSString length]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 37, + "column" : 1 + }, + { + "line" : 42, + "column" : 2 + } + ] + }, + { + "name" : "NSDictionary", + "qual_name" : [ + "NSDictionary" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 41, + "parent_pointer" : 40, + "source_range" : [ + { + "line" : 38, + "column" : 1 + }, + { + "line" : 40, + "column" : 56 + } + ] + }, + { + "name" : "dictionaryWithObjects:forKeys:count:", + "qual_name" : [ + "dictionaryWithObjects:forKeys:count:", + "NSDictionary" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 42, + "source_range" : [ + { + "line" : 38, + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "objects", + "qual_name" : [ + "objects" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 44, + "source_range" : [ + { + "line" : 39, + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "keys", + "qual_name" : [ + "keys" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 1 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 45, + "source_range" : [ + { + "line" : 40, + "column" : 40 + }, + { + "column" : 51 + } + ] + }, + { + "name" : "count", + "qual_name" : [ + "count" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 2 + } + ]] + ], + "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 46, + "parent_pointer" : 40, + "source_range" : [ + { + "line" : 41, + "column" : 1 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "objectForKeyedSubscript:", + "qual_name" : [ + "objectForKeyedSubscript:", + "NSDictionary" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 32 + }, + { + "column" : 35 + } + ] + }, + { + "name" : "key", + "qual_name" : [ + "key" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 44, + "column" : 1 + }, + { + "line" : 47, + "column" : 2 + } + ] + }, + { + "name" : "NSArray", + "qual_name" : [ + "NSArray" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 49, + "parent_pointer" : 48, + "source_range" : [ + { + "line" : 45, + "column" : 1 + }, + { + "column" : 64 + } + ] + }, + { + "name" : "arrayWithObjects:count:", + "qual_name" : [ + "arrayWithObjects:count:", + "NSArray" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 40 + } + ] + }, + { + "name" : "objs", + "qual_name" : [ + "objs" + ] + }, + { + "type_ptr" : 51 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 52 + }, + { + "column" : 61 + } + ] + }, + { + "name" : "cnt", + "qual_name" : [ + "cnt" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 1 + } + ]] + ], + "mangled_name" : "+[NSArray arrayWithObjects:count:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 54, + "parent_pointer" : 48, + "source_range" : [ + { + "line" : 46, + "column" : 1 + }, + { + "column" : 49 + } + ] + }, + { + "name" : "objectAtIndexedSubscript:", + "qual_name" : [ + "objectAtIndexedSubscript:", + "NSArray" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 44 + } + ] + }, + { + "name" : "index", + "qual_name" : [ + "index" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 56, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 49, + "column" : 1 + }, + { + "line" : 50, + "column" : 2 + } + ] + }, + { + "name" : "NSException", + "qual_name" : [ + "NSException" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 57, + "source_range" : [ + { + "line" : 52, + "column" : 13 + }, + { + "column" : 13 + } + ], + "is_implicit" : true, + "is_used" : true, + "attributes" : [ + ["FormatAttr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + } + ]] + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 60, + "source_range" : [ + { + }, + { + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 34 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + ["FormatAttr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + } + ]] + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 28 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["ObjCProtocolDecl" , [ + { + "pointer" : 65, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/ObjCTest.m", + "line" : 10, + "column" : 1 + }, + { + "line" : 12, + "column" : 2 + } + ] + }, + { + "name" : "MyProtocol", + "qual_name" : [ + "MyProtocol" + ] + }, + [ + ["ObjCPropertyDecl" , [ + { + "pointer" : 66, + "parent_pointer" : 65, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + }, + { + "qual_type" : { + "type_ptr" : 64 + }, + "getter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 67, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + } + }, + "setter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 68, + "name" : { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyProtocol" + ] + } + }, + "property_attributes" : [ + "Readwrite", + "Copy", + "Nonatomic" + ] + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 67, + "parent_pointer" : 65, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ], + "is_implicit" : true + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 64 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 66, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + } + }, + "mangled_name" : "-[MyProtocol str]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 68, + "parent_pointer" : 65, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ], + "is_implicit" : true + }, + { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyProtocol" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 66, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + } + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "str", + "qual_name" : [ + "str" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[MyProtocol setStr:]" + } + ]] + ], + { + }, + { + } + ]], + ["ObjCProtocolDecl" , [ + { + "pointer" : 71, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "column" : 11 + } + ] + }, + { + "name" : "SomeProtocol", + "qual_name" : [ + "SomeProtocol" + ] + }, + [ + ], + { + }, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 72, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "line" : 24, + "column" : 2 + } + ] + }, + { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + }, + [ + ["ObjCPropertyDecl" , [ + { + "pointer" : 73, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 64 + }, + "getter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 74, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 75, + "name" : { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 76, + "name" : { + "name" : "_str", + "qual_name" : [ + "_str", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + }, + "property_attributes" : [ + "Readwrite", + "Copy", + "Nonatomic" + ] + } + ]], + ["ObjCPropertyDecl" , [ + { + "pointer" : 77, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 20, + "column" : 1 + }, + { + "column" : 36 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 78 + }, + "getter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 79, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 80, + "name" : { + "name" : "setX:", + "qual_name" : [ + "setX:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 81, + "name" : { + "name" : "_x", + "qual_name" : [ + "_x", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 78 + } + }, + "property_attributes" : [ + "Assign", + "Readwrite", + "Nonatomic", + "Unsafe_unretained" + ] + } + ]], + ["ObjCPropertyDecl" , [ + { + "pointer" : 82, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 37 + }, + "getter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 83, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 84, + "name" : { + "name" : "setY:", + "qual_name" : [ + "setY:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 85, + "name" : { + "name" : "_y", + "qual_name" : [ + "_y", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + }, + "property_attributes" : [ + "Assign", + "Readwrite", + "Nonatomic", + "Unsafe_unretained" + ] + } + ]], + ["ObjCPropertyDecl" , [ + { + "pointer" : 86, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "column" : 54 + } + ] + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 87 + }, + "getter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 88, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 89, + "name" : { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 90, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 87 + } + }, + "property_attributes" : [ + "Assign", + "Readwrite", + "Nonatomic", + "Unsafe_unretained" + ] + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 74, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 18, + "column" : 38 + }, + { + "column" : 38 + } + ], + "is_implicit" : true + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 64 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 91, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 93, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "is_overriding" : true, + "mangled_name" : "-[MyClass str]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 75, + "parent_pointer" : 72, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ], + "is_implicit" : true + }, + { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "str", + "qual_name" : [ + "str" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 95, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 96, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "is_overriding" : true, + "mangled_name" : "-[MyClass setStr:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 79, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 20, + "column" : 36 + }, + { + "column" : 36 + } + ], + "is_implicit" : true + }, + { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 78 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 97, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 98, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[MyClass x]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 80, + "parent_pointer" : 72, + "source_range" : [ + { + "column" : 36 + }, + { + "column" : 36 + } + ], + "is_implicit" : true + }, + { + "name" : "setX:", + "qual_name" : [ + "setX:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 99, + "source_range" : [ + { + "column" : 36 + }, + { + "column" : 36 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 78 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 100, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 101, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[MyClass setX:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 83, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 21, + "column" : 34 + }, + { + "column" : 34 + } + ], + "is_implicit" : true + }, + { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 37 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 102, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 103, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[MyClass y]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 84, + "parent_pointer" : 72, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ], + "is_implicit" : true + }, + { + "name" : "setY:", + "qual_name" : [ + "setY:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 104, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 105, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 106, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[MyClass setY:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 88, + "parent_pointer" : 72, + "source_range" : [ + { + "line" : 22, + "column" : 54 + }, + { + "column" : 54 + } + ], + "is_implicit" : true + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 87 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 107, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 108, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[MyClass delegate]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 89, + "parent_pointer" : 72, + "source_range" : [ + { + "column" : 54 + }, + { + "column" : 54 + } + ], + "is_implicit" : true + }, + { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 109, + "source_range" : [ + { + "column" : 54 + }, + { + "column" : 54 + } + ] + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate" + ] + }, + { + "type_ptr" : 87 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 110, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 111, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[MyClass setDelegate:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : "ObjCImplementation", + "decl_pointer" : 112, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "protocols" : [ + { + "kind" : "ObjCProtocol", + "decl_pointer" : 65, + "name" : { + "name" : "MyProtocol", + "qual_name" : [ + "MyProtocol" + ] + } + } + ], + "known_categories" : [ + { + "kind" : "ObjCCategory", + "decl_pointer" : 113, + "name" : { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + } + }, + { + "kind" : "ObjCCategory", + "decl_pointer" : 114, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + } + } + ] + } + ]], + ["ObjCCategoryDecl" , [ + { + "pointer" : 114, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 26, + "column" : 1 + }, + { + "line" : 30, + "column" : 2 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 115, + "parent_pointer" : 114, + "source_range" : [ + { + "line" : 28, + "column" : 1 + }, + { + "column" : 35 + } + ] + }, + { + "name" : "foo:", + "qual_name" : [ + "foo:", + "" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 116, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 117 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[ foo:]" + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + } + } + ]], + ["ObjCImplementationDecl" , [ + { + "pointer" : 112, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 32, + "column" : 1 + }, + { + "line" : 65, + "column" : 1 + } + ] + }, + { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 118, + "parent_pointer" : 112, + "source_range" : [ + { + "line" : 34, + "column" : 1 + }, + { + "line" : 63, + "column" : 1 + } + ] + }, + { + "name" : "foo:", + "qual_name" : [ + "foo:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 119, + "source_range" : [ + { + "line" : 34, + "column" : 14 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 117 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 120, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 121, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 122, + "source_range" : [ + { + "column" : 36 + }, + { + "line" : 63, + "column" : 1 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 123, + "source_range" : [ + { + "line" : 36, + "column" : 3 + }, + { + "column" : 33 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 124, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 125, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 127, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 128, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 129, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "%s\n" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 131, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 32 + } + ] + }, + [ + ["ObjCEncodeExpr" , [ + { + "pointer" : 132, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 32 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + { + "qual_type" : { + "type_ptr" : 133 + }, + "raw" : "int **" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 134 + } + }, + { + "cast_kind" : "ArrayToPointerDecay", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]], + ["CallExpr" , [ + { + "pointer" : 135, + "source_range" : [ + { + "line" : 38, + "column" : 3 + }, + { + "column" : 59 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 136, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 137, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 138, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 139, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 140, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "%d\n" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 141, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 58 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 142, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 143, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["ObjCSelectorExpr" , [ + { + "pointer" : 144, + "source_range" : [ + { + "column" : 43 + }, + { + "column" : 57 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 5 + } + }, + "foo:" + ]] + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "selector" : "respondsToSelector:", + "decl_pointer" : 29 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]], + ["CallExpr" , [ + { + "pointer" : 145, + "source_range" : [ + { + "line" : 40, + "column" : 3 + }, + { + "column" : 73 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 146, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 147, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 148, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 149, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 150, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "%d\n" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 151, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 72 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 152, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 153, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 154, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 9 + } + }, + { + "selector" : "class", + "decl_pointer" : 28 + } + ]], + ["ObjCProtocolExpr" , [ + { + "pointer" : 155, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 71 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "kind" : "ObjCProtocol", + "decl_pointer" : 65, + "name" : { + "name" : "MyProtocol", + "qual_name" : [ + "MyProtocol" + ] + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "selector" : "conformsToProtocol:", + "decl_pointer" : 31 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]], + ["DeclStmt" , [ + { + "pointer" : 156, + "source_range" : [ + { + "line" : 42, + "column" : 3 + }, + { + "line" : 45, + "column" : 4 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 157, + "source_range" : [ + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + [ + ["BlockExpr" , [ + { + "pointer" : 158, + "source_range" : [ + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + ["BlockDecl" , [ + { + "pointer" : 160, + "parent_pointer" : 118, + "source_range" : [ + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + { + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 161, + "source_range" : [ + { + "line" : 42, + "column" : 40 + }, + { + "column" : 50 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "captured_variables" : [ + { + "variable" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 162, + "source_range" : [ + { + "column" : 53 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + [ + ["PseudoObjectExpr" , [ + { + "pointer" : 163, + "source_range" : [ + { + "line" : 43, + "column" : 5 + }, + { + "column" : 16 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 164, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 16 + } + ] + }, + [ + ["ObjCPropertyRefExpr" , [ + { + "pointer" : 165, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 10 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 166, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 168, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCProperty" + }, + { + "kind" : ["PropertyRef" , { + "kind" : "ObjCProperty", + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }], + "is_messaging_setter" : true + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 166, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 168, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 172, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 173, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 174, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 166, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 168, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 172, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 173, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setStr:", + "decl_pointer" : 75 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]], + ["ReturnStmt" , [ + { + "pointer" : 175, + "source_range" : [ + { + "line" : 44, + "column" : 5 + }, + { + "column" : 21 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 176, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 21 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 177, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 178, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "selector" : "length", + "decl_pointer" : 39 + } + ]] + ] + ]] + ] + ]], + "mangled_name" : "__15-[MyClass foo:]_block_invoke" + } + ]] + ]] + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + { + "decl_refs" : [ + { + "kind" : "Block", + "decl_pointer" : 160 + } + ] + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 179, + "source_range" : [ + { + "line" : 42, + "column" : 3 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + { + "name" : "block", + "qual_name" : [ + "block" + ] + }, + { + "type_ptr" : 180 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 157, + "source_range" : [ + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + [ + ["BlockExpr" , [ + { + "pointer" : 158, + "source_range" : [ + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + ["BlockDecl" , [ + { + "pointer" : 160, + "parent_pointer" : 118, + "source_range" : [ + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + { + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 161, + "source_range" : [ + { + "line" : 42, + "column" : 40 + }, + { + "column" : 50 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "captured_variables" : [ + { + "variable" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 162, + "source_range" : [ + { + "column" : 53 + }, + { + "line" : 45, + "column" : 3 + } + ] + }, + [ + ["PseudoObjectExpr" , [ + { + "pointer" : 163, + "source_range" : [ + { + "line" : 43, + "column" : 5 + }, + { + "column" : 16 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 164, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 16 + } + ] + }, + [ + ["ObjCPropertyRefExpr" , [ + { + "pointer" : 165, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 10 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 166, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 168, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCProperty" + }, + { + "kind" : ["PropertyRef" , { + "kind" : "ObjCProperty", + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }], + "is_messaging_setter" : true + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 166, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 168, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 172, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 173, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 174, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 166, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 168, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 172, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 173, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "source_expr" : ["DeclRefExpr" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setStr:", + "decl_pointer" : 75 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]], + ["ReturnStmt" , [ + { + "pointer" : 175, + "source_range" : [ + { + "line" : 44, + "column" : 5 + }, + { + "column" : 21 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 176, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 21 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 177, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 178, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "selector" : "length", + "decl_pointer" : 39 + } + ]] + ] + ]] + ] + ]], + "mangled_name" : "__15-[MyClass foo:]_block_invoke" + } + ]] + ]] + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + { + "decl_refs" : [ + { + "kind" : "Block", + "decl_pointer" : 160 + } + ] + } + ]] + } + ]] + ] + ]], + ["ObjCAtTryStmt" , [ + { + "pointer" : 181, + "source_range" : [ + { + "line" : 47, + "column" : 3 + }, + { + "line" : 57, + "column" : 3 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 182, + "source_range" : [ + { + "line" : 47, + "column" : 8 + }, + { + "line" : 53, + "column" : 3 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 183, + "source_range" : [ + { + "line" : 48, + "column" : 5 + }, + { + "column" : 27 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 184, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 26 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 185, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 26 + } + ] + }, + [ + ["ObjCArrayLiteral" , [ + { + "pointer" : 186, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 26 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 187, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 22 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 188, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 22 + } + ] + }, + [ + ["ObjCBoxedExpr" , [ + { + "pointer" : 189, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 22 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 190, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "array_method" : 49 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 193, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 26 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 192 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 184, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 26 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 185, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 26 + } + ] + }, + [ + ["ObjCArrayLiteral" , [ + { + "pointer" : 186, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 26 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 187, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 22 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 188, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 22 + } + ] + }, + [ + ["ObjCBoxedExpr" , [ + { + "pointer" : 189, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 22 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 190, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "array_method" : 49 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["ExprWithCleanups" , [ + { + "pointer" : 194, + "source_range" : [ + { + "line" : 49, + "column" : 5 + }, + { + "column" : 24 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 195, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 24 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 196, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 197, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 198, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 199, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 200, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "%@\n" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["PseudoObjectExpr" , [ + { + "pointer" : 201, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 23 + } + ] + }, + [ + ["ObjCSubscriptRefExpr" , [ + { + "pointer" : 202, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 23 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 203, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 204, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 205, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 193, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 192 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 206, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : ["IntegerLiteral" , [ + { + "pointer" : 207, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCSubscript" + }, + { + "kind" : "ArraySubscript" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 203, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 204, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 205, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 193, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 192 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 206, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : ["IntegerLiteral" , [ + { + "pointer" : 207, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 208, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 209, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 203, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 204, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 205, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 193, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 192 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 210, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 206, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : ["IntegerLiteral" , [ + { + "pointer" : 207, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "selector" : "objectAtIndexedSubscript:", + "decl_pointer" : 54 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + ]], + ["DeclStmt" , [ + { + "pointer" : 211, + "source_range" : [ + { + "line" : 51, + "column" : 5 + }, + { + "column" : 37 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 212, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 36 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 213, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 36 + } + ] + }, + [ + ["ObjCDictionaryLiteral" , [ + { + "pointer" : 214, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 36 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 215, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 26 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 216, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 26 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 217, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "key" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 218, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 35 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 219, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 35 + } + ] + }, + [ + ["ObjCBoxedExpr" , [ + { + "pointer" : 220, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 35 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 221, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 35 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "dict_method" : 41 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 223, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 36 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + { + "type_ptr" : 222 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 212, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 36 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 213, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 36 + } + ] + }, + [ + ["ObjCDictionaryLiteral" , [ + { + "pointer" : 214, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 36 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 215, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 26 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 216, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 26 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 217, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "key" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 218, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 35 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 219, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 35 + } + ] + }, + [ + ["ObjCBoxedExpr" , [ + { + "pointer" : 220, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 35 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 221, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 35 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "dict_method" : 41 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["ExprWithCleanups" , [ + { + "pointer" : 224, + "source_range" : [ + { + "line" : 52, + "column" : 5 + }, + { + "column" : 35 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 225, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 35 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 226, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 227, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 228, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 229, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 230, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + [ + "%@\n" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["PseudoObjectExpr" , [ + { + "pointer" : 231, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 34 + } + ] + }, + [ + ["ObjCSubscriptRefExpr" , [ + { + "pointer" : 232, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 34 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 233, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 234, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 235, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 223, + "name" : { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + "qual_type" : { + "type_ptr" : 222 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 236, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ObjCStringLiteral" , [ + { + "pointer" : 237, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 238, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 239 + }, + "value_kind" : "LValue" + }, + [ + "wrong key" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCSubscript" + }, + { + "kind" : "DictionarySubscript" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 233, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 234, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 235, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 223, + "name" : { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + "qual_type" : { + "type_ptr" : 222 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 236, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ObjCStringLiteral" , [ + { + "pointer" : 237, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 238, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 239 + }, + "value_kind" : "LValue" + }, + [ + "wrong key" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 240, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 241, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 233, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 234, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 235, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 223, + "name" : { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + "qual_type" : { + "type_ptr" : 222 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 242, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 236, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : ["ObjCStringLiteral" , [ + { + "pointer" : 237, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 23 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 238, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 239 + }, + "value_kind" : "LValue" + }, + [ + "wrong key" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "selector" : "objectForKeyedSubscript:", + "decl_pointer" : 46 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + ]] + ] + ]], + ["ObjCAtCatchStmt" , [ + { + "pointer" : 243, + "source_range" : [ + { + "line" : 53, + "column" : 5 + }, + { + "line" : 55, + "column" : 3 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 244, + "source_range" : [ + { + "line" : 53, + "column" : 29 + }, + { + "line" : 55, + "column" : 3 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 245, + "source_range" : [ + { + "line" : 54, + "column" : 5 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 246, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 247, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 248, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 249, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 250, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 251 + }, + "value_kind" : "LValue" + }, + [ + "Exception: %@" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 252, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 253, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 254 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 255, + "name" : { + "name" : "e", + "qual_name" : [ + "e" + ] + }, + "qual_type" : { + "type_ptr" : 254 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 254 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]] + ] + ]] + ], + ["CatchParam" , ["VarDecl" , [ + { + "pointer" : 255, + "source_range" : [ + { + "line" : 53, + "column" : 13 + }, + { + "column" : 26 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "e", + "qual_name" : [ + "e" + ] + }, + { + "type_ptr" : 254 + }, + { + } + ]]] + ]], + ["ObjCAtFinallyStmt" , [ + { + "pointer" : 256, + "source_range" : [ + { + "line" : 55, + "column" : 5 + }, + { + "line" : 57, + "column" : 3 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 257, + "source_range" : [ + { + "line" : 55, + "column" : 14 + }, + { + "line" : 57, + "column" : 3 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 258, + "source_range" : [ + { + "line" : 56, + "column" : 5 + }, + { + "column" : 21 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 259, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 260, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 261, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 262, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 263, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 264 + }, + "value_kind" : "LValue" + }, + [ + "finally" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]] + ] + ]] + ] + ]] + ] + ]], + ["GotoStmt" , [ + { + "pointer" : 265, + "source_range" : [ + { + "line" : 59, + "column" : 3 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "label" : "theend", + "pointer" : 266 + } + ]], + ["ReturnStmt" , [ + { + "pointer" : 267, + "source_range" : [ + { + "line" : 60, + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ] + ]], + ["LabelStmt" , [ + { + "pointer" : 268, + "source_range" : [ + { + "line" : 61, + "column" : 1 + }, + { + "line" : 62, + "column" : 18 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 269, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 18 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 270, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 271, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 272, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["ObjCStringLiteral" , [ + { + "pointer" : 273, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 10 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 274, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 275 + }, + "value_kind" : "LValue" + }, + [ + "jumped" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + ]] + ], + "theend" + ]] + ] + ]], + "mangled_name" : "-[MyClass foo:]" + } + ]], + ["ObjCIvarDecl" , [ + { + "pointer" : 76, + "parent_pointer" : 112, + "source_range" : [ + { + "line" : 18, + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + { + "name" : "_str", + "qual_name" : [ + "_str", + "MyClass" + ] + }, + { + "type_ptr" : 64 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : "Private" + } + ]], + ["ObjCPropertyImplDecl" , [ + { + "pointer" : 276, + "source_range" : [ + { + }, + { + "column" : 38 + } + ] + }, + { + "implementation" : "Synthesize", + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 76, + "name" : { + "name" : "_str", + "qual_name" : [ + "_str", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]], + ["ObjCIvarDecl" , [ + { + "pointer" : 81, + "parent_pointer" : 112, + "source_range" : [ + { + "line" : 20, + "column" : 36 + }, + { + "column" : 36 + } + ] + }, + { + "name" : "_x", + "qual_name" : [ + "_x", + "MyClass" + ] + }, + { + "type_ptr" : 78 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : "Private" + } + ]], + ["ObjCPropertyImplDecl" , [ + { + "pointer" : 277, + "source_range" : [ + { + }, + { + "column" : 36 + } + ] + }, + { + "implementation" : "Synthesize", + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 81, + "name" : { + "name" : "_x", + "qual_name" : [ + "_x", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 78 + } + } + } + ]], + ["ObjCIvarDecl" , [ + { + "pointer" : 85, + "parent_pointer" : 112, + "source_range" : [ + { + "line" : 21, + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "_y", + "qual_name" : [ + "_y", + "MyClass" + ] + }, + { + "type_ptr" : 37 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : "Private" + } + ]], + ["ObjCPropertyImplDecl" , [ + { + "pointer" : 278, + "source_range" : [ + { + }, + { + "column" : 34 + } + ] + }, + { + "implementation" : "Synthesize", + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 85, + "name" : { + "name" : "_y", + "qual_name" : [ + "_y", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]], + ["ObjCIvarDecl" , [ + { + "pointer" : 90, + "parent_pointer" : 112, + "source_range" : [ + { + "line" : 22, + "column" : 54 + }, + { + "column" : 54 + } + ] + }, + { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "MyClass" + ] + }, + { + "type_ptr" : 87 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : "Private" + } + ]], + ["ObjCPropertyImplDecl" , [ + { + "pointer" : 279, + "source_range" : [ + { + }, + { + "column" : 54 + } + ] + }, + { + "implementation" : "Synthesize", + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 90, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 87 + } + } + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + } + } + ]], + ["ObjCCategoryDecl" , [ + { + "pointer" : 113, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 67, + "column" : 1 + }, + { + "line" : 71, + "column" : 2 + } + ] + }, + { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 280, + "parent_pointer" : 113, + "source_range" : [ + { + "line" : 69, + "column" : 1 + }, + { + "column" : 26 + } + ] + }, + { + "name" : "bar:", + "qual_name" : [ + "bar:", + "MyCategory" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 281, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 25 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "-[MyCategory bar:]" + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "implementation" : { + "kind" : "ObjCCategoryImpl", + "decl_pointer" : 282, + "name" : { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + } + } + } + ]], + ["ObjCCategoryImplDecl" , [ + { + "pointer" : 282, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 73, + "column" : 1 + }, + { + "line" : 81, + "column" : 1 + } + ] + }, + { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 283, + "parent_pointer" : 282, + "source_range" : [ + { + "line" : 75, + "column" : 1 + }, + { + "line" : 79, + "column" : 1 + } + ] + }, + { + "name" : "bar:", + "qual_name" : [ + "bar:", + "MyCategory" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 284, + "source_range" : [ + { + "line" : 75, + "column" : 14 + }, + { + "column" : 25 + } + ] + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 285, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 286, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 287, + "source_range" : [ + { + "column" : 27 + }, + { + "line" : 79, + "column" : 1 + } + ] + }, + [ + ["PseudoObjectExpr" , [ + { + "pointer" : 288, + "source_range" : [ + { + "line" : 76, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 289, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCPropertyRefExpr" , [ + { + "pointer" : 290, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 8 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 291, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 292, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 293, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCProperty" + }, + { + "kind" : ["PropertyRef" , { + "kind" : "ObjCProperty", + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }], + "is_messaging_setter" : true + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 294, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 295, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 296, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 297, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 78 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "kind" : "Assign" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 291, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 292, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 293, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 294, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 295, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 296, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 297, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 78 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + ]] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 298, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 291, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 292, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 293, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 294, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 295, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 296, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 297, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 78 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setX:", + "decl_pointer" : 80 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + ]], + ["PseudoObjectExpr" , [ + { + "pointer" : 299, + "source_range" : [ + { + "line" : 77, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 300, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["ObjCPropertyRefExpr" , [ + { + "pointer" : 301, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 8 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 302, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 303, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 304, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCProperty" + }, + { + "kind" : ["PropertyRef" , { + "kind" : "ObjCProperty", + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }], + "is_messaging_setter" : true + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 305, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : ["IntegerLiteral" , [ + { + "pointer" : 306, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : "Assign" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 302, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 303, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 304, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 305, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : ["IntegerLiteral" , [ + { + "pointer" : 306, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 307, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 302, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 303, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 304, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 305, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : ["IntegerLiteral" , [ + { + "pointer" : 306, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setY:", + "decl_pointer" : 84 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 37 + } + } + ]], + ["PseudoObjectExpr" , [ + { + "pointer" : 308, + "source_range" : [ + { + "line" : 78, + "column" : 3 + }, + { + "column" : 19 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 309, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 19 + } + ] + }, + [ + ["ObjCPropertyRefExpr" , [ + { + "pointer" : 310, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 8 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 311, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 312, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 313, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCProperty" + }, + { + "kind" : ["PropertyRef" , { + "kind" : "ObjCProperty", + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }], + "is_messaging_setter" : true + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 314, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 315, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 316, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 317, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "kind" : "Assign" + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 311, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 312, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 313, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 314, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 315, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 316, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 317, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 318, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 319, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 314, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 315, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 316, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 317, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + } + ]], + ["ObjCMessageExpr" , [ + { + "pointer" : 320, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 311, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 312, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 313, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 318, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 319, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 314, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : ["ParenExpr" , [ + { + "pointer" : 315, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["CStyleCastExpr" , [ + { + "pointer" : 316, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 317, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : "NullToPointer", + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setDelegate:", + "decl_pointer" : 89 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + } + ]] + ] + ]], + "mangled_name" : "-[MyClass(MyCategory) bar:]" + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "category_decl" : { + "kind" : "ObjCCategory", + "decl_pointer" : 113, + "name" : { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 321, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 83, + "column" : 1 + }, + { + "line" : 85, + "column" : 2 + } + ] + }, + { + "name" : "MyClassGenerics", + "qual_name" : [ + "MyClassGenerics" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 322, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 87, + "column" : 1 + }, + { + "line" : 89, + "column" : 2 + } + ] + }, + { + "name" : "BarGenerics", + "qual_name" : [ + "BarGenerics" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 323, + "parent_pointer" : 322, + "source_range" : [ + { + "line" : 88, + "column" : 1 + }, + { + "column" : 60 + } + ], + "attributes" : [ + ["NSReturnsRetainedAttr" , [ + { + "pointer" : 324, + "source_range" : [ + { + }, + { + } + ] + } + ]] + ] + }, + { + "name" : "newWithCs:", + "qual_name" : [ + "newWithCs:", + "BarGenerics" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 325, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 58 + } + ] + }, + { + "name" : "Cs", + "qual_name" : [ + "Cs" + ] + }, + { + "type_ptr" : 326 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "mangled_name" : "+[BarGenerics newWithCs:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 327, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 91, + "column" : 1 + }, + { + "line" : 92, + "column" : 2 + } + ] + }, + { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "implementation" : { + "kind" : "ObjCImplementation", + "decl_pointer" : 328, + "name" : { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + } + } + } + ]], + ["ObjCImplementationDecl" , [ + { + "pointer" : 328, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 94, + "column" : 1 + }, + { + "line" : 104, + "column" : 1 + } + ] + }, + { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 329, + "parent_pointer" : 328, + "source_range" : [ + { + "line" : 96, + "column" : 1 + }, + { + "line" : 98, + "column" : 1 + } + ] + }, + { + "name" : "bar:", + "qual_name" : [ + "bar:", + "MySubclass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 330, + "source_range" : [ + { + "line" : 96, + "column" : 14 + }, + { + "column" : 25 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 331, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 332, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 333, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "is_overriding" : true, + "body" : ["CompoundStmt" , [ + { + "pointer" : 334, + "source_range" : [ + { + "column" : 27 + }, + { + "line" : 98, + "column" : 1 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 335, + "source_range" : [ + { + "line" : 97, + "column" : 3 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 336, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 337, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 330, + "name" : { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "bar:", + "is_definition_found" : true, + "decl_pointer" : 283, + "receiver_kind" : "SuperInstance" + } + ]] + ] + ]], + "mangled_name" : "-[MySubclass bar:]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 338, + "parent_pointer" : 328, + "source_range" : [ + { + "line" : 100, + "column" : 1 + }, + { + "line" : 102, + "column" : 1 + } + ] + }, + { + "name" : "foo:", + "qual_name" : [ + "foo:", + "MySubclass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 339, + "source_range" : [ + { + "line" : 100, + "column" : 14 + }, + { + "column" : 34 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 117 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 340, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 332, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 341, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "is_overriding" : true, + "body" : ["CompoundStmt" , [ + { + "pointer" : 342, + "source_range" : [ + { + "column" : 36 + }, + { + "line" : 102, + "column" : 1 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 343, + "source_range" : [ + { + "line" : 101, + "column" : 3 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 344, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 345, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 117 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 339, + "name" : { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + "qual_type" : { + "type_ptr" : 117 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 117 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "foo:", + "is_definition_found" : true, + "decl_pointer" : 118, + "receiver_kind" : "SuperInstance" + } + ]] + ] + ]], + "mangled_name" : "-[MySubclass foo:]" + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 327, + "name" : { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 346, + "source_range" : [ + { + "line" : 106, + "column" : 1 + }, + { + "line" : 112, + "column" : 1 + } + ] + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 347 + }, + { + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 348, + "source_range" : [ + { + "line" : 106, + "column" : 10 + }, + { + "column" : 14 + } + ] + }, + { + "name" : "argc", + "qual_name" : [ + "argc" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 349, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 27 + } + ] + }, + { + "name" : "argv", + "qual_name" : [ + "argv" + ] + }, + { + "type_ptr" : 350 + }, + { + "parm_index_in_function" : 1 + } + ]] + ], + "decl_ptr_with_body" : 346, + "body" : ["CompoundStmt" , [ + { + "pointer" : 351, + "source_range" : [ + { + "column" : 33 + }, + { + "line" : 112, + "column" : 1 + } + ] + }, + [ + ["ObjCAutoreleasePoolStmt" , [ + { + "pointer" : 352, + "source_range" : [ + { + "line" : 107, + "column" : 3 + }, + { + "line" : 110, + "column" : 3 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 353, + "source_range" : [ + { + "line" : 107, + "column" : 20 + }, + { + "line" : 110, + "column" : 3 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 354, + "source_range" : [ + { + "line" : 108, + "column" : 5 + }, + { + "column" : 41 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 355, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 41 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 356, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 27 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 357, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 27 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 358, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 21 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 359, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "selector" : "alloc", + "decl_pointer" : 19, + "receiver_kind" : ["Class" , { + "type_ptr" : 360 + }] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "ARCConsumeObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "selector" : "init", + "decl_pointer" : 25 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "ARCConsumeObject", + "base_path" : [ + ] + } + ]], + ["ObjCStringLiteral" , [ + { + "pointer" : 361, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 34 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 362, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 363 + }, + "value_kind" : "LValue" + }, + [ + "hello" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "foo:", + "is_definition_found" : true, + "decl_pointer" : 118 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + ]], + ["ExprWithCleanups" , [ + { + "pointer" : 364, + "source_range" : [ + { + "line" : 109, + "column" : 5 + }, + { + "column" : 32 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 365, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 32 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 366, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 18 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 367, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "selector" : "new", + "decl_pointer" : 22, + "receiver_kind" : ["Class" , { + "type_ptr" : 360 + }] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "ARCConsumeObject", + "base_path" : [ + ] + } + ]], + ["ObjCStringLiteral" , [ + { + "pointer" : 368, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 25 + } + ] + }, + [ + ["StringLiteral" , [ + { + "pointer" : 369, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 25 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 363 + }, + "value_kind" : "LValue" + }, + [ + "hello" + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "bar:", + "is_definition_found" : true, + "decl_pointer" : 283 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + ]] + ] + ]] + ] + ]], + ["ReturnStmt" , [ + { + "pointer" : 370, + "source_range" : [ + { + "line" : 111, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 371, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 372, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/ObjCTest.m", + "input_kind" : "IK_ObjC", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 373 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 374 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 375 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 376 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 377 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 378 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 379 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 380 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 381 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 382 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 383 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 384 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 385 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 386 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 387 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 388 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 389 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 390 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 391 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 392 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 393 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 394 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 395 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 396 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 397 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 398 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 399 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 400 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 401 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 402 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 403 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 404 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 405 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 406 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 407 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 408 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 409 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 410 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 411 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 412 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 413 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 414 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 415 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 416 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 417 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 418 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 169 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 419 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 420 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 421 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 422 + } + ]], + ["ComplexType" , [ + { + "pointer" : 423 + } + ]], + ["ComplexType" , [ + { + "pointer" : 424 + } + ]], + ["ComplexType" , [ + { + "pointer" : 425 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 426 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 427 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 428 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 78 + }, + { + "type_ptr" : 69 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 429 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 430 + }, + "Half" + ]], + ["PointerType" , [ + { + "pointer" : 431 + }, + { + "type_ptr" : 428 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 432 + }, + { + "base_type" : 426 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 433 + }, + { + "type_ptr" : 432 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 434 + }, + { + "base_type" : 427 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 435 + }, + { + "type_ptr" : 434 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 436 + }, + 10 + ]], + ["RecordType" , [ + { + "pointer" : 437 + }, + 438 + ]], + ["PointerType" , [ + { + "pointer" : 439 + }, + { + "type_ptr" : 37, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 440 + }, + { + "type_ptr" : 374, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 134 + }, + { + "type_ptr" : 374 + } + ]], + ["RecordType" , [ + { + "pointer" : 441 + }, + 442 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 443 + }, + { + "element_type" : { + "type_ptr" : 441 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 444 + }, + 18 + ]], + ["TypedefType" , [ + { + "pointer" : 7, + "desugared_type" : 433 + }, + { + "child_type" : { + "type_ptr" : 433 + }, + "decl_ptr" : 6 + } + ]], + ["TypedefType" , [ + { + "pointer" : 21, + "desugared_type" : 433 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 372 + } + ]], + ["TypedefType" , [ + { + "pointer" : 9, + "desugared_type" : 435 + }, + { + "child_type" : { + "type_ptr" : 435 + }, + "decl_ptr" : 8 + } + ]], + ["TypedefType" , [ + { + "pointer" : 15, + "desugared_type" : 37 + }, + { + "child_type" : { + "type_ptr" : 37 + }, + "decl_ptr" : 14 + } + ]], + ["TypedefType" , [ + { + "pointer" : 5, + "desugared_type" : 431 + }, + { + "child_type" : { + "type_ptr" : 431 + }, + "decl_ptr" : 4 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 33 + }, + { + "type_ptr" : 436 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 445 + }, + 34 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 446 + }, + 38 + ]], + ["TypedefType" , [ + { + "pointer" : 17, + "desugared_type" : 53 + }, + { + "child_type" : { + "type_ptr" : 53 + }, + "decl_ptr" : 16 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 447 + }, + 40 + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 448 + }, + { + "element_type" : { + "type_ptr" : 433 + }, + "stride" : 8 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 449 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + ]], + ["IncompleteArrayType" , [ + { + "pointer" : 450 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 451 + }, + { + "type_ptr" : 433, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 452 + }, + { + "type_ptr" : 7, + "is_const" : true + } + ]], + ["DecayedType" , [ + { + "pointer" : 43, + "desugared_type" : 452 + }, + { + "type_ptr" : 452 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 453 + }, + 48 + ]], + ["PointerType" , [ + { + "pointer" : 454 + }, + { + "type_ptr" : 433 + } + ]], + ["PointerType" , [ + { + "pointer" : 51 + }, + { + "type_ptr" : 7 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 455 + }, + 56 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 64 + }, + { + "type_ptr" : 446 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 456 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 457 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 458 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 433 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 59 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 7 + } + ] + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 360 + }, + 72 + ]], + ["ObjCObjectType" , [ + { + "pointer" : 459 + }, + { + "base_type" : 444, + "protocol_decls_ptr" : [ + 71 + ] + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 87 + }, + { + "type_ptr" : 459 + } + ]], + ["AttributedType" , [ + { + "pointer" : 117, + "desugared_type" : 64 + }, + { + "attr_kind" : "TypeNonNullAttrKind" + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 92 + }, + { + "type_ptr" : 360 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 130 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 4 + ]], + ["PointerType" , [ + { + "pointer" : 460 + }, + { + "type_ptr" : 37 + } + ]], + ["PointerType" , [ + { + "pointer" : 133 + }, + { + "type_ptr" : 460 + } + ]], + ["PointerType" , [ + { + "pointer" : 461 + }, + { + "type_ptr" : 458 + } + ]], + ["PointerType" , [ + { + "pointer" : 126 + }, + { + "type_ptr" : 59 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 462 + }, + { + "return_type" : { + "type_ptr" : 53 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 463 + }, + { + "return_type" : { + "type_ptr" : 17 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["ParenType" , [ + { + "pointer" : 464, + "desugared_type" : 463 + }, + { + "type_ptr" : 463 + } + ]], + ["BlockPointerType" , [ + { + "pointer" : 465 + }, + { + "type_ptr" : 462 + } + ]], + ["BlockPointerType" , [ + { + "pointer" : 180 + }, + { + "type_ptr" : 464 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 466 + }, + { + "return_type" : { + "type_ptr" : 416 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 467 + }, + { + "return_type" : { + "type_ptr" : 416 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + ]], + ["BlockPointerType" , [ + { + "pointer" : 159 + }, + { + "type_ptr" : 463 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 192 + }, + { + "type_ptr" : 453 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 191 + }, + { + "type_ptr" : 445 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 222 + }, + { + "type_ptr" : 447 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 239 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 10 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 254 + }, + { + "type_ptr" : 455 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 251 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 14 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 264 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 8 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 275 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 7 + ]], + ["ObjCTypeParamType" , [ + { + "pointer" : 468, + "desugared_type" : 433 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 469 + }, + 321 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 470 + }, + 322 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 471 + }, + { + "type_ptr" : 444 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 472 + }, + { + "base_type" : 469, + "type_args" : [ + { + "type_ptr" : 471 + } + ] + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 326 + }, + { + "type_ptr" : 472 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 473 + }, + 327 + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 332 + }, + { + "type_ptr" : 473 + } + ]], + ["PointerType" , [ + { + "pointer" : 350 + }, + { + "type_ptr" : 134 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 347 + }, + { + "return_type" : { + "type_ptr" : 37 + } + }, + { + "params_type" : [ + { + "type_ptr" : 37 + }, + { + "type_ptr" : 350 + } + ] + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 363 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 6 + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/bind_temporary.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/bind_temporary.cpp.exp new file mode 100644 index 000000000..0f7afc5a6 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/bind_temporary.cpp.exp @@ -0,0 +1,1373 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/bind_temporary.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "S", + "qual_name" : [ + "S" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 8, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 11, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "320519083853435709", + "is_cpp" : true, + "decl_ptr_with_body" : 11, + "body" : ["CompoundStmt" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 14, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 10, + "column" : 3 + }, + { + "column" : 9 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~S", + "qual_name" : [ + "~S", + "S" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "3243028866176254141", + "is_cpp" : true, + "decl_ptr_with_body" : 14, + "body" : ["CompoundStmt" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 9 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 17, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "1635307583371793064", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 14, + "name" : { + "name" : "~S", + "qual_name" : [ + "~S", + "S" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 21, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ] + }, + { + "name" : "test", + "qual_name" : [ + "test" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "18241244337164948030", + "is_cpp" : true, + "decl_ptr_with_body" : 21, + "body" : ["CompoundStmt" , [ + { + "pointer" : 22, + "source_range" : [ + { + "line" : 12, + "column" : 13 + }, + { + "line" : 14, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 23, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 23 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 24, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 26, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 27, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["CXXTemporaryObjectExpr" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 11, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 29 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 30, + "name" : { + "name" : "s_ref", + "qual_name" : [ + "s_ref" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 22 + } + ] + }, + { + "name" : "s_ref", + "qual_name" : [ + "s_ref" + ] + }, + { + "type_ptr" : 20 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 24, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 26, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 27, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ["CXXTemporaryObjectExpr" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 22 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 11, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 29 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 30, + "name" : { + "name" : "s_ref", + "qual_name" : [ + "s_ref" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 31, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 32, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/bind_temporary.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 88 + } + ]], + ["ComplexType" , [ + { + "pointer" : 89 + } + ]], + ["ComplexType" , [ + { + "pointer" : 90 + } + ]], + ["ComplexType" , [ + { + "pointer" : 91 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 95 + }, + { + "type_ptr" : 33 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 98 + }, + 99 + ]], + ["PointerType" , [ + { + "pointer" : 100 + }, + { + "type_ptr" : 38, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 101 + }, + { + "type_ptr" : 35, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 102 + }, + { + "type_ptr" : 35 + } + ]], + ["RecordType" , [ + { + "pointer" : 103 + }, + 104 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 105 + }, + { + "element_type" : { + "type_ptr" : 103 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 106 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 107 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 20 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 108 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 109 + }, + { + "base_type" : 92 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 110 + }, + { + "type_ptr" : 109 + } + ]], + ["TypedefType" , [ + { + "pointer" : 111, + "desugared_type" : 110 + }, + { + "child_type" : { + "type_ptr" : 110 + }, + "decl_ptr" : 112 + } + ]], + ["TypedefType" , [ + { + "pointer" : 32, + "desugared_type" : 110 + }, + { + "child_type" : { + "type_ptr" : 111 + }, + "decl_ptr" : 31 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_attributes.c.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_attributes.c.exp new file mode 100644 index 000000000..bdf172db9 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_attributes.c.exp @@ -0,0 +1,715 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/c_attributes.c", + "line" : 7, + "column" : 1 + }, + { + "column" : 60 + } + ], + "attributes" : [ + ["SentinelAttr" , [ + { + "pointer" : 8, + "source_range" : [ + { + "column" : 45 + }, + { + "column" : 58 + } + ] + }, + { + "sentinel" : 0, + "null_pos" : 1 + } + ]] + ] + }, + { + "name" : "add_all_ints", + "qual_name" : [ + "add_all_ints" + ] + }, + { + "type_ptr" : 9 + }, + { + "is_variadic" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 22 + } + ] + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 13, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/c_attributes.c", + "input_kind" : "IK_C", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 14 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 15 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 16 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 11 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 66 + } + ]], + ["ComplexType" , [ + { + "pointer" : 67 + } + ]], + ["ComplexType" , [ + { + "pointer" : 68 + } + ]], + ["ComplexType" , [ + { + "pointer" : 69 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 73 + }, + { + "type_ptr" : 14 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 76 + }, + 77 + ]], + ["PointerType" , [ + { + "pointer" : 78 + }, + { + "type_ptr" : 11, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 79 + }, + { + "type_ptr" : 16, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 80 + }, + { + "type_ptr" : 16 + } + ]], + ["RecordType" , [ + { + "pointer" : 81 + }, + 82 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 83 + }, + { + "element_type" : { + "type_ptr" : 81 + }, + "stride" : 24 + }, + 1 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 9 + }, + { + "return_type" : { + "type_ptr" : 11 + } + }, + { + "params_type" : [ + { + "type_ptr" : 11 + } + ] + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 84 + }, + { + "base_type" : 70 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 85 + }, + { + "type_ptr" : 84 + } + ]], + ["TypedefType" , [ + { + "pointer" : 86, + "desugared_type" : 85 + }, + { + "child_type" : { + "type_ptr" : 85 + }, + "decl_ptr" : 87 + } + ]], + ["TypedefType" , [ + { + "pointer" : 13, + "desugared_type" : 85 + }, + { + "child_type" : { + "type_ptr" : 86 + }, + "decl_ptr" : 12 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_cast.cpp.exp new file mode 100644 index 000000000..29ce09530 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/c_cast.cpp.exp @@ -0,0 +1,971 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["VarDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/c_cast.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 9 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_global" : true, + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 9, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "column" : 16 + } + ] + }, + { + "name" : "l", + "qual_name" : [ + "l" + ] + }, + { + "type_ptr" : 11 + }, + { + "is_global" : true, + "init_expr" : ["CStyleCastExpr" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 16 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 7, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 11 + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 16, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "column" : 16 + } + ] + }, + { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + { + "type_ptr" : 11 + }, + { + "is_global" : true, + "init_expr" : ["CXXFunctionalCastExpr" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 16 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 18, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 7, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 11 + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 21, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 22, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/c_cast.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 8 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 11 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 76 + } + ]], + ["ComplexType" , [ + { + "pointer" : 77 + } + ]], + ["ComplexType" , [ + { + "pointer" : 78 + } + ]], + ["ComplexType" , [ + { + "pointer" : 79 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 83 + }, + { + "type_ptr" : 23 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 86 + }, + 87 + ]], + ["PointerType" , [ + { + "pointer" : 88 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 89 + }, + { + "type_ptr" : 25, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 90 + }, + { + "type_ptr" : 25 + } + ]], + ["RecordType" , [ + { + "pointer" : 91 + }, + 92 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 93 + }, + { + "element_type" : { + "type_ptr" : 91 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCObjectType" , [ + { + "pointer" : 94 + }, + { + "base_type" : 80 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 95 + }, + { + "type_ptr" : 94 + } + ]], + ["TypedefType" , [ + { + "pointer" : 96, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 95 + }, + "decl_ptr" : 97 + } + ]], + ["TypedefType" , [ + { + "pointer" : 22, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 96 + }, + "decl_ptr" : 21 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/class_template.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/class_template.cpp.exp new file mode 100644 index 000000000..46f31550e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/class_template.cpp.exp @@ -0,0 +1,2826 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["NamespaceDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/class_template.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ] + }, + { + "name" : "N", + "qual_name" : [ + "N" + ] + }, + [ + ["ClassTemplateDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "S", + "qual_name" : [ + "S", + "N" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ] + }, + { + "name" : "S", + "qual_name" : [ + "S *>", + "N" + ] + }, + 10, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 11, + "parent_pointer" : 9, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + 10, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 9 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 12, + "parent_pointer" : 9, + "source_range" : [ + { + "line" : 15, + "column" : 3 + }, + { + "column" : 5 + } + ], + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + { + "type_ptr" : 13 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 14, + "parent_pointer" : 9, + "source_range" : [ + { + "line" : 14, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "7066629788491464130", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 14, + "body" : ["CompoundStmt" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 12, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + }], + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 18, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ] + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 9, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "11949468677960817094", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 22 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 9, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "14813278630171558444", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 26 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 9, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "15160212752071097404", + { + "template_decl" : 8, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 27 + }] + ] + } + ]] + ] + } + ]], + ["ClassTemplatePartialSpecializationDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ] + }, + { + "name" : "S", + "qual_name" : [ + "S", + "N" + ] + }, + 29, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 28, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + 29, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0, + "is_dependent_type" : true + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 28, + "source_range" : [ + { + "line" : 15, + "column" : 3 + }, + { + "column" : 5 + } + ], + "access" : "Public" + }, + { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + { + "type_ptr" : 32 + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 28, + "is_complete_definition" : true, + "is_dependent_type" : true + }, + { + }, + "15216485236755079891", + { + "template_decl" : 8, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 33 + }] + ] + } + ]], + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "line" : 21, + "column" : 1 + } + ] + }, + { + "name" : "S", + "qual_name" : [ + "S", + "N" + ] + }, + 35, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 36, + "parent_pointer" : 34, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + 35, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 37, + "parent_pointer" : 34, + "source_range" : [ + { + "line" : 20, + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + { + "type_ptr" : 38 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 34, + "source_range" : [ + { + "line" : 19, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "13141222913637319333", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 18, + "body" : ["CompoundStmt" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 34, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~S", + "qual_name" : [ + "~S", + "S", + "N" + ] + }, + { + "type_ptr" : 41 + }, + { + "mangled_name" : "16063732695960137765", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 42, + "parent_pointer" : 34, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + { + "type_ptr" : 43 + }, + { + "mangled_name" : "16241844907223898831", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 45 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 46, + "parent_pointer" : 34, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + { + "type_ptr" : 47 + }, + { + "mangled_name" : "6117498947183732003", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 48, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 49 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 50, + "parent_pointer" : 34, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "S", + "N" + ] + }, + { + "type_ptr" : 51 + }, + { + "mangled_name" : "16979568942442152295", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 45 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 50, + "body" : ["CompoundStmt" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 56, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 27 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 38 + }, + "value_kind" : "LValue" + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 37, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 38 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 57, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 35, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 52, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 45 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 38, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 37, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 38 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 38 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]], + ["ReturnStmt" , [ + { + "pointer" : 60, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 27 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 35 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ] + ]] + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 63, + "parent_pointer" : 34, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "S", + "N" + ] + }, + { + "type_ptr" : 64 + }, + { + "mangled_name" : "12620087123913755403", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 65, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 49 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 34, + "is_complete_definition" : true + }, + { + "is_pod" : true, + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 40, + "name" : { + "name" : "~S", + "qual_name" : [ + "~S", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 41 + } + } + }, + "9300085993929073917", + { + "template_decl" : 8, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 38 + }] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 66, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + { + "name" : "test", + "qual_name" : [ + "test", + "N" + ] + }, + { + "type_ptr" : 67 + }, + { + "mangled_name" : "3452486497056904182", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 68, + "source_range" : [ + { + "line" : 23, + "column" : 11 + }, + { + "column" : 18 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 69 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 66, + "body" : ["CompoundStmt" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 21 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 71, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 18 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 72, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 14, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 15 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "val", + "qual_name" : [ + "val" + ] + }, + { + "type_ptr" : 73 + }, + { + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 72, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 14, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]] + ] + ]], + ["CXXOperatorCallExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "line" : 25, + "column" : 3 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 51 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "CXXMethod", + "decl_pointer" : 50, + "name" : { + "name" : "operator=", + "qual_name" : [ + "operator=", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 51 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["MemberExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 7 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 80, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 74, + "name" : { + "name" : "val", + "qual_name" : [ + "val" + ] + }, + "qual_type" : { + "type_ptr" : 73 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 13 + }, + "value_kind" : "LValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 12, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 82, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 15 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 69 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 68, + "name" : { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + "qual_type" : { + "type_ptr" : 69 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 35 + }, + "value_kind" : "LValue" + } + ]] + ] + ]] + } + ]] + ], + { + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 83, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 84, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/class_template.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 101 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 102 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 106 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 109 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 110 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 112 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 116 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 139 + } + ]], + ["ComplexType" , [ + { + "pointer" : 140 + } + ]], + ["ComplexType" , [ + { + "pointer" : 141 + } + ]], + ["ComplexType" , [ + { + "pointer" : 142 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 143 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 144 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 145 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 146 + }, + { + "type_ptr" : 85 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 149 + }, + 150 + ]], + ["PointerType" , [ + { + "pointer" : 151 + }, + { + "type_ptr" : 38, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 152 + }, + { + "type_ptr" : 87, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 153 + }, + { + "type_ptr" : 87 + } + ]], + ["RecordType" , [ + { + "pointer" : 154 + }, + 155 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 156 + }, + { + "element_type" : { + "type_ptr" : 154 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 157 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 158 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 159 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 160 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 161 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 32 + } + ]], + ["PointerType" , [ + { + "pointer" : 33 + }, + { + "type_ptr" : 157 + } + ]], + ["PointerType" , [ + { + "pointer" : 162 + }, + { + "type_ptr" : 32 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 163 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 164 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 29 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 165 + } + ]], + ["RecordType" , [ + { + "pointer" : 35 + }, + 34 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 166, + "desugared_type" : 35 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 69, + "desugared_type" : 35 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 167 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 35 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 67 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 69 + } + ] + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 168, + "desugared_type" : 35 + } + ]], + ["PointerType" , [ + { + "pointer" : 27 + }, + { + "type_ptr" : 35 + } + ]], + ["PointerType" , [ + { + "pointer" : 169 + }, + { + "type_ptr" : 168 + } + ]], + ["RecordType" , [ + { + "pointer" : 10 + }, + 9 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 73, + "desugared_type" : 10 + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 13, + "desugared_type" : 35 + } + ]], + ["PointerType" , [ + { + "pointer" : 170 + }, + { + "type_ptr" : 13 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 171 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 172 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 173 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 41 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 22 + }, + { + "type_ptr" : 10, + "is_const" : true + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 45 + }, + { + "type_ptr" : 35, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 174 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 43 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 49 + }, + { + "type_ptr" : 35 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 175 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 47 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 176 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 26 + }, + { + "type_ptr" : 10 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 177 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 178 + }, + { + "type_ptr" : 35 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 179 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 180 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 181 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 64 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 51 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + ]], + ["PointerType" , [ + { + "pointer" : 182 + }, + { + "type_ptr" : 179 + } + ]], + ["PointerType" , [ + { + "pointer" : 78 + }, + { + "type_ptr" : 51 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 183 + }, + { + "base_type" : 143 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 184 + }, + { + "type_ptr" : 183 + } + ]], + ["TypedefType" , [ + { + "pointer" : 185, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 184 + }, + "decl_ptr" : 186 + } + ]], + ["TypedefType" , [ + { + "pointer" : 84, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 185 + }, + "decl_ptr" : 83 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/comments.c.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/comments.c.exp new file mode 100644 index 000000000..72430f790 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/comments.c.exp @@ -0,0 +1,680 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/comments.c", + "line" : 8, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "foo", + "qual_name" : [ + "foo" + ] + }, + { + "type_ptr" : 8 + }, + { + "decl_ptr_with_body" : 7, + "body" : ["CompoundStmt" , [ + { + "pointer" : 9, + "source_range" : [ + { + "line" : 8, + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + [ + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 11, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/comments.c", + "input_kind" : "IK_C", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 12 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 13 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 14 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 15 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 16 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 65 + } + ]], + ["ComplexType" , [ + { + "pointer" : 66 + } + ]], + ["ComplexType" , [ + { + "pointer" : 67 + } + ]], + ["ComplexType" , [ + { + "pointer" : 68 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 72 + }, + { + "type_ptr" : 12 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 75 + }, + 76 + ]], + ["PointerType" , [ + { + "pointer" : 77 + }, + { + "type_ptr" : 17, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 78 + }, + { + "type_ptr" : 14, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 79 + }, + { + "type_ptr" : 14 + } + ]], + ["RecordType" , [ + { + "pointer" : 80 + }, + 81 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 82 + }, + { + "element_type" : { + "type_ptr" : 80 + }, + "stride" : 24 + }, + 1 + ]], + ["FunctionNoProtoType" , [ + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 12 + } + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 83 + }, + { + "base_type" : 69 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 84 + }, + { + "type_ptr" : 83 + } + ]], + ["TypedefType" , [ + { + "pointer" : 85, + "desugared_type" : 84 + }, + { + "child_type" : { + "type_ptr" : 84 + }, + "decl_ptr" : 86 + } + ]], + ["TypedefType" , [ + { + "pointer" : 11, + "desugared_type" : 84 + }, + { + "child_type" : { + "type_ptr" : 85 + }, + "decl_ptr" : 10 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/const_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/const_cast.cpp.exp new file mode 100644 index 000000000..910d2450e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/const_cast.cpp.exp @@ -0,0 +1,1251 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/const_cast.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "Foo", + "qual_name" : [ + "Foo" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Foo", + "qual_name" : [ + "Foo", + "Foo" + ] + }, + 8, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 8, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 11, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 16 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "func", + "qual_name" : [ + "func", + "Foo" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "999725558640074098", + "is_cpp" : true, + "decl_ptr_with_body" : 11, + "body" : ["CompoundStmt" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 16 + } + ] + }, + [ + ] + ]] + }, + { + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 14, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ] + }, + { + "name" : "someFunction", + "qual_name" : [ + "someFunction" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "9689270513361838995", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 16, + "source_range" : [ + { + "line" : 12, + "column" : 19 + }, + { + "column" : 30 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 14, + "body" : ["CompoundStmt" , [ + { + "pointer" : 18, + "source_range" : [ + { + "column" : 33 + }, + { + "line" : 15, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 19, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 35 + } + ] + }, + [ + ["CXXConstCastExpr" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 34 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 33 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 16, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 17 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 22 + }, + "const_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 23, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 34 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "fRef", + "qual_name" : [ + "fRef" + ] + }, + { + "type_ptr" : 22 + }, + { + "init_expr" : ["CXXConstCastExpr" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 34 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 33 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 16, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 17 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 22 + }, + "const_cast" + ]] + } + ]] + ] + ]], + ["CXXMemberCallExpr" , [ + { + "pointer" : 24, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 13 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 8 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 26, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 23, + "name" : { + "name" : "fRef", + "qual_name" : [ + "fRef" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 27 + } + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "func", + "qual_name" : [ + "func", + "Foo" + ] + }, + "decl_ref" : { + "kind" : "CXXMethod", + "decl_pointer" : 11, + "name" : { + "name" : "func", + "qual_name" : [ + "func", + "Foo" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 28 + } + } + ]] + ] + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 29, + "source_range" : [ + { + "line" : 17, + "column" : 1 + }, + { + "column" : 19 + } + ] + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 30, + "is_const" : true + }, + { + "is_global" : true, + "is_const_expr" : true, + "is_init_ice" : true, + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 31, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 30 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 32, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 33, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/const_cast.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 86 + } + ]], + ["ComplexType" , [ + { + "pointer" : 87 + } + ]], + ["ComplexType" , [ + { + "pointer" : 88 + } + ]], + ["ComplexType" , [ + { + "pointer" : 89 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 93 + }, + { + "type_ptr" : 28 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 96 + }, + 97 + ]], + ["PointerType" , [ + { + "pointer" : 98 + }, + { + "type_ptr" : 30, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 99 + }, + { + "type_ptr" : 35, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 100 + }, + { + "type_ptr" : 35 + } + ]], + ["RecordType" , [ + { + "pointer" : 101 + }, + 102 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 103 + }, + { + "element_type" : { + "type_ptr" : 101 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 104 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 28 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 17 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 28 + } + }, + { + "params_type" : [ + { + "type_ptr" : 17 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 22 + }, + { + "type_ptr" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 105 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 106 + }, + { + "base_type" : 90 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 107 + }, + { + "type_ptr" : 106 + } + ]], + ["TypedefType" , [ + { + "pointer" : 108, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 107 + }, + "decl_ptr" : 109 + } + ]], + ["TypedefType" , [ + { + "pointer" : 33, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 108 + }, + "decl_ptr" : 32 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/dynamic_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/dynamic_cast.cpp.exp new file mode 100644 index 000000000..cfa55d2d1 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/dynamic_cast.cpp.exp @@ -0,0 +1,4054 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/dynamic_cast.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 21 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "f", + "qual_name" : [ + "f", + "A" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "1453848921539526524", + "is_cpp" : true, + "decl_ptr_with_body" : 10, + "body" : ["CompoundStmt" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 21 + } + ] + }, + [ + ] + ]] + }, + { + "is_virtual" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 13, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "A" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "4916027756641681778", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 16 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 17, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "A" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "1130122404358677750", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 21, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + { + "type_ptr" : 22 + }, + { + "mangled_name" : "5328378654181921475", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "14779025497907219583", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 23, + "body" : ["CompoundStmt" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "3430056695640597274", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 16 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 29, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 30 + }, + { + "mangled_name" : "1361265890968139694", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 31, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 21, + "name" : { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 32, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "column" : 22 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 33, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 33, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 35, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "B" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "12683202677887858481", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 37, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 38 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 39, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "B" + ] + }, + { + "type_ptr" : 40 + }, + { + "mangled_name" : "4655428711165100535", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 42 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 43, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~B", + "qual_name" : [ + "~B", + "B" + ] + }, + { + "type_ptr" : 44 + }, + { + "mangled_name" : "7876366742276079110", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 45, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "10798876524598897542", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 45, + "body" : ["CompoundStmt" , [ + { + "pointer" : 46, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : ["BaseClass" , [ + 8, + false + ]], + "source_range" : [ + { + }, + { + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 23, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + ]] + } + ] + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 48, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 49 + }, + { + "mangled_name" : "7710293714478488613", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 38 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 51, + "parent_pointer" : 32, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 52 + }, + { + "mangled_name" : "16903082029399050859", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 42 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 32, + "is_complete_definition" : true + }, + { + "bases" : [ + 8 + ], + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 43, + "name" : { + "name" : "~B", + "qual_name" : [ + "~B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 44 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 54, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "column" : 11 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "C", + "qual_name" : [ + "C" + ] + }, + 55, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 56, + "parent_pointer" : 54, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "C", + "qual_name" : [ + "C", + "C" + ] + }, + 55, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 54, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 57, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 25, + "column" : 1 + } + ] + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "4928059564287848975", + "is_cpp" : true, + "decl_ptr_with_body" : 57, + "body" : ["CompoundStmt" , [ + { + "pointer" : 58, + "source_range" : [ + { + "line" : 13, + "column" : 10 + }, + { + "line" : 25, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 59, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 6 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 60, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 23, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 5 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 8 + }, + { + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 60, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 23, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 62, + "source_range" : [ + { + "line" : 15, + "column" : 3 + }, + { + "column" : 6 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 45, + "name" : { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 5 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 33 + }, + { + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 45, + "name" : { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 65, + "source_range" : [ + { + "line" : 17, + "column" : 3 + }, + { + "column" : 13 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 67, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 68, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 64, + "name" : { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + "qual_type" : { + "type_ptr" : 33 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "kind" : "AddrOf" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "DerivedToBase", + "base_path" : [ + { + "name" : "A" + } + ] + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 71, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 12 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + { + "type_ptr" : 70 + }, + { + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 67, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 68, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 64, + "name" : { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + "qual_type" : { + "type_ptr" : 33 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "kind" : "AddrOf" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "DerivedToBase", + "base_path" : [ + { + "name" : "A" + } + ] + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 72, + "source_range" : [ + { + "line" : 18, + "column" : 3 + }, + { + "column" : 32 + } + ] + }, + [ + ["CXXDynamicCastExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 31 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 61, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "kind" : "AddrOf" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 31 + } + ] + }, + { + "name" : "b1", + "qual_name" : [ + "b1" + ] + }, + { + "type_ptr" : 69 + }, + { + "init_expr" : ["CXXDynamicCastExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 31 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 61, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "kind" : "AddrOf" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 77, + "source_range" : [ + { + "line" : 19, + "column" : 3 + }, + { + "column" : 32 + } + ] + }, + [ + ["CXXDynamicCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 31 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 80, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 31 + } + ] + }, + { + "name" : "b2", + "qual_name" : [ + "b2" + ] + }, + { + "type_ptr" : 69 + }, + { + "init_expr" : ["CXXDynamicCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 31 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 80, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 82, + "source_range" : [ + { + "line" : 20, + "column" : 3 + }, + { + "column" : 31 + } + ] + }, + [ + ["CXXDynamicCastExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 86 + } + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 86 + }, + "dynamic_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 30 + } + ] + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 86 + }, + { + "init_expr" : ["CXXDynamicCastExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 86 + } + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 86 + }, + "dynamic_cast" + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 88, + "source_range" : [ + { + "line" : 22, + "column" : 3 + }, + { + "column" : 33 + } + ] + }, + [ + ["CXXDynamicCastExpr" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 32 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 92, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 93 + }, + "dynamic_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 32 + } + ] + }, + { + "name" : "ar", + "qual_name" : [ + "ar" + ] + }, + { + "type_ptr" : 93 + }, + { + "init_expr" : ["CXXDynamicCastExpr" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 32 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 92, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 93 + }, + "dynamic_cast" + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 95, + "source_range" : [ + { + "line" : 23, + "column" : 3 + }, + { + "column" : 33 + } + ] + }, + [ + ["CXXDynamicCastExpr" , [ + { + "pointer" : 96, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 32 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 97, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 98, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 99, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 100 + }, + "dynamic_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 101, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 32 + } + ] + }, + { + "name" : "br", + "qual_name" : [ + "br" + ] + }, + { + "type_ptr" : 100 + }, + { + "init_expr" : ["CXXDynamicCastExpr" , [ + { + "pointer" : 96, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 32 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 97, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 98, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 99, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 100 + }, + "dynamic_cast" + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 102, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 33 + } + ] + }, + [ + ["CXXDynamicCastExpr" , [ + { + "pointer" : 103, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 32 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 104, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 105, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 107 + }, + "dynamic_cast" + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 108, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 32 + } + ] + }, + { + "name" : "cr", + "qual_name" : [ + "cr" + ] + }, + { + "type_ptr" : 107 + }, + { + "init_expr" : ["CXXDynamicCastExpr" , [ + { + "pointer" : 103, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 32 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 104, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 30 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 105, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Deref" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "Dynamic", + "base_path" : [ + ] + }, + { + "type_ptr" : 107 + }, + "dynamic_cast" + ]] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 109, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 110, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/dynamic_cast.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 112 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 116 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 139 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 140 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 141 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 142 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 143 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 144 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 145 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 146 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 149 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 150 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 151 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 152 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 153 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 154 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 155 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 156 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 157 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 158 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 159 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 160 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 161 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 162 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 163 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 164 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 165 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 166 + } + ]], + ["ComplexType" , [ + { + "pointer" : 167 + } + ]], + ["ComplexType" , [ + { + "pointer" : 168 + } + ]], + ["ComplexType" , [ + { + "pointer" : 169 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 170 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 171 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 172 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 173 + }, + { + "type_ptr" : 111 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 174 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 175 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 176 + }, + 177 + ]], + ["PointerType" , [ + { + "pointer" : 178 + }, + { + "type_ptr" : 116, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 179 + }, + { + "type_ptr" : 113, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 180 + }, + { + "type_ptr" : 113 + } + ]], + ["RecordType" , [ + { + "pointer" : 181 + }, + 182 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 183 + }, + { + "element_type" : { + "type_ptr" : 181 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 70 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 93 + }, + { + "type_ptr" : 8 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 16 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 184 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 20 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 185 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 22 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 33 + }, + 32 + ]], + ["LValueReferenceType" , [ + { + "pointer" : 100 + }, + { + "type_ptr" : 33 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 38 + }, + { + "type_ptr" : 33, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 186 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 42 + }, + { + "type_ptr" : 33 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 187 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 40 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 44 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 55 + }, + 54 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 188 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 189 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 190 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 30 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 191 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 192 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 49 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 193 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 52 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + ]], + ["PointerType" , [ + { + "pointer" : 69 + }, + { + "type_ptr" : 33 + } + ]], + ["PointerType" , [ + { + "pointer" : 86 + }, + { + "type_ptr" : 55 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 107 + }, + { + "type_ptr" : 55 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 194 + }, + { + "base_type" : 170 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 195 + }, + { + "type_ptr" : 194 + } + ]], + ["TypedefType" , [ + { + "pointer" : 196, + "desugared_type" : 195 + }, + { + "child_type" : { + "type_ptr" : 195 + }, + "decl_ptr" : 197 + } + ]], + ["TypedefType" , [ + { + "pointer" : 110, + "desugared_type" : 195 + }, + { + "child_type" : { + "type_ptr" : 196 + }, + "decl_ptr" : 109 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/expr_with_cleanups.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/expr_with_cleanups.cpp.exp new file mode 100644 index 000000000..99682cce0 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/expr_with_cleanups.cpp.exp @@ -0,0 +1,4068 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/expr_with_cleanups.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 13, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "X", + "qual_name" : [ + "X" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + 8, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 8, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 11, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "4951616904021883133", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 14 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 15, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 10, + "column" : 3 + }, + { + "column" : 14 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + { + "type_ptr" : 16 + }, + { + "mangled_name" : "11474741413113936247", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 13 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 18 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 11, + "column" : 3 + }, + { + "column" : 25 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "3547081667308014059", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 24 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 18 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 12, + "column" : 3 + }, + { + "column" : 6 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "9850251229546392500", + "is_cpp" : true + }, + { + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 22, + "name" : { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 23 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "line" : 18, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + 25, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + 25, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 27, + "source_range" : [ + { + "line" : 15, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 16, + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "14898886720565199942", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 29, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 14 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 17, + "column" : 3 + }, + { + "column" : 6 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~Y", + "qual_name" : [ + "~Y", + "Y" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "11799330211249239787", + "is_cpp" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 14, + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 32 + }, + { + "mangled_name" : "7125450473324676530", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 34 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 31, + "body" : ["CompoundStmt" , [ + { + "pointer" : 35, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 24, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 30, + "name" : { + "name" : "~Y", + "qual_name" : [ + "~Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 23 + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 36, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "column" : 6 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "10279154687993237354", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 8 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 39, + "source_range" : [ + { + "line" : 20, + "column" : 1 + }, + { + "column" : 6 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "g", + "qual_name" : [ + "g" + ] + }, + { + "type_ptr" : 40 + }, + { + "mangled_name" : "9626291071610925118", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 25 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 42, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + { + "name" : "h", + "qual_name" : [ + "h" + ] + }, + { + "type_ptr" : 43 + }, + { + "mangled_name" : "4941587955358707969", + "is_cpp" : true, + "decl_ptr_with_body" : 42, + "body" : ["CompoundStmt" , [ + { + "pointer" : 44, + "source_range" : [ + { + "line" : 21, + "column" : 10 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 45, + "source_range" : [ + { + "line" : 22, + "column" : 3 + }, + { + "column" : 9 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 46, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 8 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 48, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 8 + }, + { + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 46, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 8 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 49, + "source_range" : [ + { + "line" : 23, + "column" : 3 + }, + { + "column" : 16 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 56, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 57, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 36, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 58 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 60, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXFunctionalCastExpr" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 65, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 67 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : "ConstructorConversion", + "base_path" : [ + ] + }, + { + "type_ptr" : 8 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 68 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 69 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 15 + } + ] + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 8 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 56, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 57, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 36, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 58 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 60, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXFunctionalCastExpr" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 65, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 67 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : "ConstructorConversion", + "base_path" : [ + ] + }, + { + "type_ptr" : 8 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 68 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 69 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 71, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 16 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 72, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 40 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 39, + "name" : { + "name" : "g", + "qual_name" : [ + "g" + ] + }, + "qual_type" : { + "type_ptr" : 40 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 82, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXFunctionalCastExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 28, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 89 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : "ConstructorConversion", + "base_path" : [ + ] + }, + { + "type_ptr" : 25 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 90 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 91 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 92, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 15 + } + ] + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 25 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 72, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 15 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 40 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 39, + "name" : { + "name" : "g", + "qual_name" : [ + "g" + ] + }, + "qual_type" : { + "type_ptr" : 40 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 82, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXFunctionalCastExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 14 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 13 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 28, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 89 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : "ConstructorConversion", + "base_path" : [ + ] + }, + { + "type_ptr" : 25 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 90 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 91 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["ExprWithCleanups" , [ + { + "pointer" : 93, + "source_range" : [ + { + "line" : 25, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["CXXOperatorCallExpr" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 95, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 96, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 20 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "CXXMethod", + "decl_pointer" : 19, + "name" : { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 97 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["DeclRefExpr" , [ + { + "pointer" : 98, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 48, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]], + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 99, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 100, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 10 + } + ] + }, + [ + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 101, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 10 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 102, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 103, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 104, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 36, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 58 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["CXXBindTemporaryExpr" , [ + { + "pointer" : 105, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 107, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 108, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 48, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_copy_constructor" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 109 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 110 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + } + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 111, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 112, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/expr_with_cleanups.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 116 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 14 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 139 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 140 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 141 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 142 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 143 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 144 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 145 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 146 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 149 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 150 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 151 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 152 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 153 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 154 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 155 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 156 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 157 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 158 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 159 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 160 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 161 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 162 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 163 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 164 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 165 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 166 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 167 + } + ]], + ["ComplexType" , [ + { + "pointer" : 168 + } + ]], + ["ComplexType" , [ + { + "pointer" : 169 + } + ]], + ["ComplexType" , [ + { + "pointer" : 170 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 171 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 172 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 173 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 174 + }, + { + "type_ptr" : 113 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 175 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 176 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 177 + }, + 178 + ]], + ["PointerType" , [ + { + "pointer" : 179 + }, + { + "type_ptr" : 14, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 180 + }, + { + "type_ptr" : 115, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 181 + }, + { + "type_ptr" : 115 + } + ]], + ["RecordType" , [ + { + "pointer" : 182 + }, + 183 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 184 + }, + { + "element_type" : { + "type_ptr" : 182 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 185 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 14 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 18 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 16 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 186 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 186 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 43 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 187 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 25 + }, + 24 + ]], + ["PointerType" , [ + { + "pointer" : 188 + }, + { + "type_ptr" : 25 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 189 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 8 + } + }, + { + "params_type" : [ + { + "type_ptr" : 8 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 40 + }, + { + "return_type" : { + "type_ptr" : 25 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 23 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 58 + }, + { + "type_ptr" : 37 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 34 + }, + { + "type_ptr" : 25, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 190 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 191 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["PointerType" , [ + { + "pointer" : 80 + }, + { + "type_ptr" : 40 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 32 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["PointerType" , [ + { + "pointer" : 97 + }, + { + "type_ptr" : 20 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 192 + }, + { + "base_type" : 171 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 193 + }, + { + "type_ptr" : 192 + } + ]], + ["TypedefType" , [ + { + "pointer" : 194, + "desugared_type" : 193 + }, + { + "child_type" : { + "type_ptr" : 193 + }, + "decl_ptr" : 195 + } + ]], + ["TypedefType" , [ + { + "pointer" : 112, + "desugared_type" : 193 + }, + { + "child_type" : { + "type_ptr" : 194 + }, + "decl_ptr" : 111 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/filter.sh b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/filter.sh new file mode 100755 index 000000000..ff6b1f183 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/filter.sh @@ -0,0 +1,6 @@ +#/bin/bash +# Copyright (c) 2014-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. +"$@" diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/friend.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/friend.cpp.exp new file mode 100644 index 000000000..88305ed02 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/friend.cpp.exp @@ -0,0 +1,1382 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/friend.cpp", + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 22 + } + ] + }, + { + "name" : "AnotherClass", + "qual_name" : [ + "AnotherClass" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 22 + } + ] + }, + { + "name" : "AnotherClass", + "qual_name" : [ + "AnotherClass" + ] + }, + 9, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + }, + "8348715085918813141", + { + "template_decl" : 7, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 10 + }] + ] + } + ]] + ] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ] + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 12, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ] + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + 13, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 14, + "parent_pointer" : 12, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + 13, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 12 + }, + { + } + ]], + ["FriendDecl" , [ + { + "pointer" : 15, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 32 + } + ], + "access" : "Public" + }, + ["Type" , 16] + ]], + ["FriendDecl" , [ + { + "pointer" : 17, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "line" : 15, + "column" : 16 + } + ], + "access" : "Public" + }, + ["Decl" , ["ClassTemplateDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "line" : 15, + "column" : 16 + } + ] + }, + { + "name" : "AnotherClass", + "qual_name" : [ + "AnotherClass" + ] + }, + { + } + ]]] + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 12, + "source_range" : [ + { + "line" : 12, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "17039860285578718334", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 19, + "body" : ["CompoundStmt" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 12, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "10269173081916450237", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 24, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 25 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 12, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "15856009432989426751", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 29 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 12, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "12207844931495093295", + { + "template_decl" : 11, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 30 + }] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 31, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "y1", + "qual_name" : [ + "y1" + ] + }, + { + "type_ptr" : 32 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 32 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 19, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 34, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 35, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/friend.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 90 + } + ]], + ["ComplexType" , [ + { + "pointer" : 91 + } + ]], + ["ComplexType" , [ + { + "pointer" : 92 + } + ]], + ["ComplexType" , [ + { + "pointer" : 93 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 97 + }, + { + "type_ptr" : 36 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 100 + }, + 101 + ]], + ["PointerType" , [ + { + "pointer" : 102 + }, + { + "type_ptr" : 30, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 103 + }, + { + "type_ptr" : 38, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 104 + }, + { + "type_ptr" : 38 + } + ]], + ["RecordType" , [ + { + "pointer" : 105 + }, + 106 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 107 + }, + { + "element_type" : { + "type_ptr" : 105 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 108 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 109 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 110 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 111 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 112 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 113 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 114 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 115 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 116 + } + ]], + ["PointerType" , [ + { + "pointer" : 117 + }, + { + "type_ptr" : 108 + } + ]], + ["PointerType" , [ + { + "pointer" : 118 + }, + { + "type_ptr" : 113 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 119 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 120 + } + ]], + ["ElaboratedType" , [ + { + "pointer" : 121, + "desugared_type" : 120 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 122 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 123 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 124 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 125 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 126 + } + ]], + ["RecordType" , [ + { + "pointer" : 13 + }, + 12 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 32, + "desugared_type" : 13 + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 127, + "desugared_type" : 30 + } + ]], + ["PointerType" , [ + { + "pointer" : 10 + }, + { + "type_ptr" : 30 + } + ]], + ["PointerType" , [ + { + "pointer" : 128 + }, + { + "type_ptr" : 127 + } + ]], + ["RecordType" , [ + { + "pointer" : 9 + }, + 8 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 129, + "desugared_type" : 9 + } + ]], + ["ElaboratedType" , [ + { + "pointer" : 16, + "desugared_type" : 9 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 130 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 131 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 132 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 25 + }, + { + "type_ptr" : 13, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 133 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 23 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 29 + }, + { + "type_ptr" : 13 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 134 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 29 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 29 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 135 + }, + { + "base_type" : 94 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 136 + }, + { + "type_ptr" : 135 + } + ]], + ["TypedefType" , [ + { + "pointer" : 137, + "desugared_type" : 136 + }, + { + "child_type" : { + "type_ptr" : 136 + }, + "decl_ptr" : 138 + } + ]], + ["TypedefType" , [ + { + "pointer" : 35, + "desugared_type" : 136 + }, + { + "child_type" : { + "type_ptr" : 137 + }, + "decl_ptr" : 34 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/function_template.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/function_template.cpp.exp new file mode 100644 index 000000000..5a973d81d --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/function_template.cpp.exp @@ -0,0 +1,2163 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionTemplateDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/function_template.cpp", + "line" : 8, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "specializations" : [ + ["FunctionDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 9 + }, + { + "mangled_name" : "18441705267350886400", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 9, + "column" : 7 + }, + { + "column" : 9 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 8, + "body" : ["CompoundStmt" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 13, + "source_range" : [ + { + "line" : 10, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 10, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]], + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 16 + }] + ] + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 17, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "1909523640421882241", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 19, + "source_range" : [ + { + "line" : 9, + "column" : 7 + }, + { + "column" : 9 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 17, + "body" : ["CompoundStmt" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 22, + "source_range" : [ + { + "line" : 10, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 23, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 24, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 20 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 19, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]], + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 25 + }] + ] + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 26, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "2862116284697721030", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 28, + "source_range" : [ + { + "line" : 9, + "column" : 7 + }, + { + "column" : 9 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 29 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 26, + "body" : ["CompoundStmt" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 31, + "source_range" : [ + { + "line" : 10, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 29 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 28, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 29 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]], + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 34 + }] + ] + } + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 35, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "line" : 17, + "column" : 1 + } + ] + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "8674435321115121355", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 37, + "source_range" : [ + { + "line" : 15, + "column" : 9 + }, + { + "column" : 13 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 38 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 35, + "body" : ["CompoundStmt" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 16 + }, + { + "line" : 17, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 40, + "source_range" : [ + { + "line" : 16, + "column" : 3 + }, + { + "column" : 14 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 14 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 43, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 38 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 37, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 38 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "kind" : "Mul" + } + ]] + ] + ]] + ] + ]], + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 38 + }] + ] + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 45, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ] + }, + { + "name" : "test", + "qual_name" : [ + "test" + ] + }, + { + "type_ptr" : 46 + }, + { + "mangled_name" : "18241244337164948030", + "is_cpp" : true, + "decl_ptr_with_body" : 45, + "body" : ["CompoundStmt" , [ + { + "pointer" : 47, + "source_range" : [ + { + "line" : 22, + "column" : 13 + }, + { + "line" : 27, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 48, + "source_range" : [ + { + "line" : 23, + "column" : 3 + }, + { + "column" : 9 + } + ] + }, + [ + ], + [ + ["VarDecl" , [ + { + "pointer" : 49, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 25 + }, + { + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 50, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ], + [ + ["VarDecl" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 9 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 34 + }, + { + } + ]] + ] + ]], + ["BinaryOperator" , [ + { + "pointer" : 52, + "source_range" : [ + { + "line" : 25, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 49, + "name" : { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + ]], + ["CallExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 12 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 56, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 17, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + "qual_type" : { + "type_ptr" : 18 + } + }, + "found_decl_ref" : { + "kind" : "FunctionTemplate", + "decl_pointer" : 7, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 57 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 49, + "name" : { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 20 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]], + ["BinaryOperator" , [ + { + "pointer" : 60, + "source_range" : [ + { + "line" : 26, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 34 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 51, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 34 + } + } + } + ]], + ["CallExpr" , [ + { + "pointer" : 62, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 12 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 27 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 26, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + "qual_type" : { + "type_ptr" : 27 + } + }, + "found_decl_ref" : { + "kind" : "FunctionTemplate", + "decl_pointer" : 7, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 65 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 67, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 34 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 51, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 34 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 34 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 29 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 34 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 68, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 69, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/function_template.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 16 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 101 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 102 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 106 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 109 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 110 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 112 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 116 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 121 + } + ]], + ["ComplexType" , [ + { + "pointer" : 122 + } + ]], + ["ComplexType" , [ + { + "pointer" : 123 + } + ]], + ["ComplexType" , [ + { + "pointer" : 124 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 128 + }, + { + "type_ptr" : 70 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 131 + }, + 132 + ]], + ["PointerType" , [ + { + "pointer" : 133 + }, + { + "type_ptr" : 38, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 134 + }, + { + "type_ptr" : 25, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 135 + }, + { + "type_ptr" : 25 + } + ]], + ["RecordType" , [ + { + "pointer" : 136 + }, + 137 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 138 + }, + { + "element_type" : { + "type_ptr" : 136 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 139 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 140 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 141 + }, + { + "return_type" : { + "type_ptr" : 139 + } + }, + { + "params_type" : [ + { + "type_ptr" : 139 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 142 + }, + { + "return_type" : { + "type_ptr" : 140 + } + }, + { + "params_type" : [ + { + "type_ptr" : 140 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 38 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 143, + "desugared_type" : 38 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 144 + }, + { + "return_type" : { + "type_ptr" : 143 + } + }, + { + "params_type" : [ + { + "type_ptr" : 143 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 145 + }, + { + "return_type" : { + "type_ptr" : 16 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 11, + "desugared_type" : 16 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 9 + }, + { + "return_type" : { + "type_ptr" : 11 + } + }, + { + "params_type" : [ + { + "type_ptr" : 11 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 46 + }, + { + "return_type" : { + "type_ptr" : 70 + } + }, + { + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 20, + "desugared_type" : 25 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 146 + }, + { + "return_type" : { + "type_ptr" : 25 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 20 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["PointerType" , [ + { + "pointer" : 147 + }, + { + "type_ptr" : 146 + } + ]], + ["PointerType" , [ + { + "pointer" : 57 + }, + { + "type_ptr" : 18 + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 29, + "desugared_type" : 34 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 148 + }, + { + "return_type" : { + "type_ptr" : 34 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 29 + } + }, + { + "params_type" : [ + { + "type_ptr" : 29 + } + ] + } + ]], + ["PointerType" , [ + { + "pointer" : 149 + }, + { + "type_ptr" : 148 + } + ]], + ["PointerType" , [ + { + "pointer" : 65 + }, + { + "type_ptr" : 27 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 150 + }, + { + "base_type" : 125 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 151 + }, + { + "type_ptr" : 150 + } + ]], + ["TypedefType" , [ + { + "pointer" : 152, + "desugared_type" : 151 + }, + { + "child_type" : { + "type_ptr" : 151 + }, + "decl_ptr" : 153 + } + ]], + ["TypedefType" , [ + { + "pointer" : 69, + "desugared_type" : 151 + }, + { + "child_type" : { + "type_ptr" : 152 + }, + "decl_ptr" : 68 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheritance.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheritance.cpp.exp new file mode 100644 index 000000000..145e6f0d8 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheritance.cpp.exp @@ -0,0 +1,3479 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/inheritance.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 26 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "sqrt", + "qual_name" : [ + "sqrt" + ] + }, + { + "type_ptr" : 8 + }, + { + "mangled_name" : "4816046332438161094", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 9, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 20 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "column" : 33 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "pow", + "qual_name" : [ + "pow" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "13660907022155764957", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 1 + } + ]] + ] + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 15, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "line" : 21, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "Form", + "qual_name" : [ + "Form" + ] + }, + 16, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 17, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Form", + "qual_name" : [ + "Form", + "Form" + ] + }, + 16, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 18, + "source_range" : [ + { + "line" : 11, + "column" : 2 + }, + { + "column" : 9 + } + ], + "access" : "Private" + } + ]], + ["FieldDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 12, + "column" : 3 + }, + { + "column" : 10 + } + ], + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + { + "type_ptr" : 10 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 20, + "source_range" : [ + { + "line" : 14, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["FieldDecl" , [ + { + "pointer" : 21, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 15, + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "color", + "qual_name" : [ + "color", + "Form" + ] + }, + { + "type_ptr" : 22 + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 16, + "column" : 3 + }, + { + "column" : 27 + } + ], + "access" : "Public" + }, + { + "name" : "vmethod", + "qual_name" : [ + "vmethod", + "Form" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "9163681093625571351", + "is_cpp" : true, + "decl_ptr_with_body" : 23, + "body" : ["CompoundStmt" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 27 + } + ] + }, + [ + ] + ]] + }, + { + "is_virtual" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 18, + "column" : 3 + }, + { + "column" : 41 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "getArea", + "qual_name" : [ + "getArea", + "Form" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "261422336308970065", + "is_cpp" : true, + "decl_ptr_with_body" : 26, + "body" : ["CompoundStmt" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 41 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 29, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 35 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 35 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 31, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 35 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 19, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 20, + "column" : 3 + }, + { + "column" : 50 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "setArea", + "qual_name" : [ + "setArea", + "Form" + ] + }, + { + "type_ptr" : 35 + }, + { + "mangled_name" : "5322570675579474415", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 23 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "area", + "qual_name" : [ + "area" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 34, + "body" : ["CompoundStmt" , [ + { + "pointer" : 37, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 50 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 44 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 37 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 31 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 19, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 44 + }, + { + "column" : 44 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 44 + }, + { + "column" : 44 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 36, + "name" : { + "name" : "area", + "qual_name" : [ + "area" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]] + ] + ]] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 43, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 10, + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Form" + ] + }, + { + "type_ptr" : 44 + }, + { + "mangled_name" : "4640576070247419134", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 45, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 46 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 47, + "parent_pointer" : 15, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Form" + ] + }, + { + "type_ptr" : 48 + }, + { + "mangled_name" : "2917574045643344002", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 49, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 50 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 51, + "parent_pointer" : 15, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~Form", + "qual_name" : [ + "~Form", + "Form" + ] + }, + { + "type_ptr" : 52 + }, + { + "mangled_name" : "7469005664164565375", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 15, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 51, + "name" : { + "name" : "~Form", + "qual_name" : [ + "~Form", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 52 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 53, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "line" : 35, + "column" : 1 + } + ] + }, + { + "name" : "Circle", + "qual_name" : [ + "Circle" + ] + }, + 54, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 55, + "parent_pointer" : 53, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Circle", + "qual_name" : [ + "Circle", + "Circle" + ] + }, + 54, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 56, + "source_range" : [ + { + "line" : 24, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 57, + "parent_pointer" : 53, + "source_range" : [ + { + "line" : 25, + "column" : 3 + }, + { + "column" : 28 + } + ], + "attributes" : [ + ["OverrideAttr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + } + ]] + ], + "access" : "Public" + }, + { + "name" : "vmethod", + "qual_name" : [ + "vmethod", + "Circle" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "5817484235031938003", + "is_cpp" : true, + "decl_ptr_with_body" : 57, + "body" : ["CompoundStmt" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 28 + } + ] + }, + [ + ] + ]] + }, + { + "is_virtual" : true, + "overriden_methods" : [ + { + "kind" : "CXXMethod", + "decl_pointer" : 23, + "name" : { + "name" : "vmethod", + "qual_name" : [ + "vmethod", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + ] + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 60, + "parent_pointer" : 53, + "source_range" : [ + { + "line" : 26, + "column" : 3 + }, + { + "line" : 30, + "column" : 3 + } + ], + "access" : "Public" + }, + { + "name" : "getRatio", + "qual_name" : [ + "getRatio", + "Circle" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "6347748275554434892", + "is_cpp" : true, + "decl_ptr_with_body" : 60, + "body" : ["CompoundStmt" , [ + { + "pointer" : 61, + "source_range" : [ + { + "line" : 26, + "column" : 21 + }, + { + "line" : 30, + "column" : 3 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 62, + "source_range" : [ + { + "line" : 27, + "column" : 5 + }, + { + "column" : 13 + } + ] + }, + [ + ], + [ + ["VarDecl" , [ + { + "pointer" : 63, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 12 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 10 + }, + { + } + ]] + ] + ]], + ["BinaryOperator" , [ + { + "pointer" : 64, + "source_range" : [ + { + "line" : 28, + "column" : 5 + }, + { + "column" : 17 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 65, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 63, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]], + ["CXXMemberCallExpr" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 17 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 67, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 68, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 69, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "cast_kind" : "UncheckedDerivedToBase", + "base_path" : [ + { + "name" : "Form" + } + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "getArea", + "qual_name" : [ + "getArea", + "Form" + ] + }, + "decl_ref" : { + "kind" : "CXXMethod", + "decl_pointer" : 26, + "name" : { + "name" : "getArea", + "qual_name" : [ + "getArea", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 27 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]], + ["ReturnStmt" , [ + { + "pointer" : 72, + "source_range" : [ + { + "line" : 29, + "column" : 5 + }, + { + "column" : 29 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 7, + "name" : { + "name" : "sqrt", + "qual_name" : [ + "sqrt" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 76 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["BinaryOperator" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 25 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 21 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 17 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 80, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 17 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 63, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 82, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "IntegralToFloating", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : "Div" + } + ]], + ["FloatingLiteral" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 25 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + "3.1400000000000001" + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : "Mul" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 84, + "parent_pointer" : 53, + "source_range" : [ + { + "line" : 32, + "column" : 3 + }, + { + "column" : 76 + } + ], + "access" : "Public" + }, + { + "name" : "setRatio", + "qual_name" : [ + "setRatio", + "Circle" + ] + }, + { + "type_ptr" : 35 + }, + { + "mangled_name" : "8248811014851696566", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 24 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "diameter", + "qual_name" : [ + "diameter" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 84, + "body" : ["CompoundStmt" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 76 + } + ] + }, + [ + ["CXXMemberCallExpr" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 36 + }, + { + "column" : 73 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 36 + }, + { + "column" : 36 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 36 + }, + { + "column" : 36 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 36 + }, + { + "column" : 36 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "cast_kind" : "UncheckedDerivedToBase", + "base_path" : [ + { + "name" : "Form" + } + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "setArea", + "qual_name" : [ + "setArea", + "Form" + ] + }, + "decl_ref" : { + "kind" : "CXXMethod", + "decl_pointer" : 34, + "name" : { + "name" : "setArea", + "qual_name" : [ + "setArea", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 35 + } + } + } + ]], + ["BinaryOperator" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 44 + }, + { + "column" : 69 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 92, + "source_range" : [ + { + "column" : 44 + }, + { + "column" : 65 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 93, + "source_range" : [ + { + "column" : 44 + }, + { + "column" : 44 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 44 + }, + { + "column" : 44 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 11, + "name" : { + "name" : "pow", + "qual_name" : [ + "pow" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 95 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]], + ["BinaryOperator" , [ + { + "pointer" : 96, + "source_range" : [ + { + "column" : 48 + }, + { + "column" : 59 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 97, + "source_range" : [ + { + "column" : 48 + }, + { + "column" : 48 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 98, + "source_range" : [ + { + "column" : 48 + }, + { + "column" : 48 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 85, + "name" : { + "name" : "diameter", + "qual_name" : [ + "diameter" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["FloatingLiteral" , [ + { + "pointer" : 99, + "source_range" : [ + { + "column" : 59 + }, + { + "column" : 59 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + "0.5" + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : "Mul" + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 100, + "source_range" : [ + { + "column" : 64 + }, + { + "column" : 64 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 101, + "source_range" : [ + { + "column" : 64 + }, + { + "column" : 64 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "IntegralToFloating", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + } + ]], + ["FloatingLiteral" , [ + { + "pointer" : 102, + "source_range" : [ + { + "column" : 69 + }, + { + "column" : 69 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + "3.1400000000000001" + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : "Mul" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 103 + } + } + ]] + ] + ]] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 104, + "parent_pointer" : 53, + "source_range" : [ + { + "line" : 34, + "column" : 3 + }, + { + "column" : 40 + } + ], + "access" : "Public" + }, + { + "name" : "isDark", + "qual_name" : [ + "isDark", + "Circle" + ] + }, + { + "type_ptr" : 105 + }, + { + "mangled_name" : "1657580448964179997", + "is_cpp" : true, + "decl_ptr_with_body" : 104, + "body" : ["CompoundStmt" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 40 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 107, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 37 + } + ] + }, + [ + ["ParenExpr" , [ + { + "pointer" : 108, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 37 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 109, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 35 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 110, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 111, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 112, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 113, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "cast_kind" : "UncheckedDerivedToBase", + "base_path" : [ + { + "name" : "Form" + } + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + }, + "value_kind" : "LValue" + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "color", + "qual_name" : [ + "color", + "Form" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 21, + "name" : { + "name" : "color", + "qual_name" : [ + "color", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 114, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 35 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 115 + } + }, + { + "kind" : "GT" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 115 + } + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 116, + "parent_pointer" : 53, + "source_range" : [ + { + "line" : 23, + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Circle" + ] + }, + { + "type_ptr" : 117 + }, + { + "mangled_name" : "15331083219049658522", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 118, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 119 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 120, + "parent_pointer" : 53, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Circle" + ] + }, + { + "type_ptr" : 121 + }, + { + "mangled_name" : "10302011452979039278", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 122, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 123 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 124, + "parent_pointer" : 53, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~Circle", + "qual_name" : [ + "~Circle", + "Circle" + ] + }, + { + "type_ptr" : 125 + }, + { + "mangled_name" : "4580501627556196443", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 53, + "is_complete_definition" : true + }, + { + "bases" : [ + 16 + ], + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 124, + "name" : { + "name" : "~Circle", + "qual_name" : [ + "~Circle", + "Circle" + ] + }, + "qual_type" : { + "type_ptr" : 125 + } + } + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 126, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 127, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/inheritance.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 10 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 139 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 140 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 141 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 142 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 143 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 144 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 145 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 146 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 149 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 150 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 151 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 152 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 153 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 154 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 155 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 156 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 157 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 158 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 159 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 160 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 161 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 162 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 163 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 164 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 165 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 166 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 167 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 168 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 169 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 170 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 171 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 172 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 173 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 174 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 175 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 176 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 177 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 178 + } + ]], + ["ComplexType" , [ + { + "pointer" : 179 + } + ]], + ["ComplexType" , [ + { + "pointer" : 180 + } + ]], + ["ComplexType" , [ + { + "pointer" : 181 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 182 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 183 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 184 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 185 + }, + { + "type_ptr" : 103 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 186 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 187 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 188 + }, + 189 + ]], + ["PointerType" , [ + { + "pointer" : 190 + }, + { + "type_ptr" : 22, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 191 + }, + { + "type_ptr" : 128, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 192 + }, + { + "type_ptr" : 128 + } + ]], + ["RecordType" , [ + { + "pointer" : 193 + }, + 194 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 195 + }, + { + "element_type" : { + "type_ptr" : 193 + }, + "stride" : 24 + }, + 1 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 10 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 10 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + }, + { + "type_ptr" : 10 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 16 + }, + 15 + ]], + ["PointerType" , [ + { + "pointer" : 33 + }, + { + "type_ptr" : 16 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 10 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 35 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 196 + }, + { + "type_ptr" : 16 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 46 + }, + { + "type_ptr" : 16, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 197 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 46 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 44 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 46 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 50 + }, + { + "type_ptr" : 16 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 198 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 50 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 48 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 50 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 52 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 54 + }, + 53 + ]], + ["PointerType" , [ + { + "pointer" : 70 + }, + { + "type_ptr" : 54 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 105 + }, + { + "return_type" : { + "type_ptr" : 115 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 199 + }, + { + "type_ptr" : 54 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 119 + }, + { + "type_ptr" : 54, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 200 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 119 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 117 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 119 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 123 + }, + { + "type_ptr" : 54 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 201 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 123 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 121 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 123 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 125 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 76 + }, + { + "type_ptr" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 95 + }, + { + "type_ptr" : 12 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 202 + }, + { + "base_type" : 182 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 203 + }, + { + "type_ptr" : 202 + } + ]], + ["TypedefType" , [ + { + "pointer" : 204, + "desugared_type" : 203 + }, + { + "child_type" : { + "type_ptr" : 203 + }, + "decl_ptr" : 205 + } + ]], + ["TypedefType" , [ + { + "pointer" : 127, + "desugared_type" : 203 + }, + { + "child_type" : { + "type_ptr" : 204 + }, + "decl_ptr" : 126 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheriting_constructor.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheriting_constructor.cpp.exp new file mode 100644 index 000000000..0018677da --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/inheriting_constructor.cpp.exp @@ -0,0 +1,1955 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/inheriting_constructor.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 11 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "14779048587651412014", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 13 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 10, + "body" : ["CompoundStmt" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 11 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 15, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 14 + } + ], + "access" : "Public" + }, + { + "name" : "foo", + "qual_name" : [ + "foo", + "A" + ] + }, + { + "type_ptr" : 16 + }, + { + "mangled_name" : "11285596688767843576", + "is_cpp" : true, + "decl_ptr_with_body" : 15, + "body" : ["CompoundStmt" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 14 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 19 + }, + { + "mangled_name" : "3430056695640597274", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 21 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "1361265890968139694", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 24, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 25 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "5328378654181921475", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 26, + "name" : { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 27 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 29, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 28, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 29, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["UsingDecl" , [ + { + "pointer" : 31, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 12 + } + ], + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + ]], + ["ConstructorUsingShadowDecl" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + ]], + ["ConstructorUsingShadowDecl" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + ]], + ["ConstructorUsingShadowDecl" , [ + { + "pointer" : 34, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 35, + "parent_pointer" : 28, + "source_range" : [ + { + "line" : 12, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "10798876524598897542", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 37, + "parent_pointer" : 28, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 38 + }, + { + "mangled_name" : "7710293714478488613", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 40 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 41, + "parent_pointer" : 28, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 42 + }, + { + "mangled_name" : "16903082029399050859", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 43, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 44 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 45, + "parent_pointer" : 28, + "source_range" : [ + { + "line" : 13, + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "B" + ] + }, + { + "type_ptr" : 46 + }, + { + "mangled_name" : "18258347749069050656", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 13 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 45, + "body" : ["CompoundStmt" , [ + { + "pointer" : 48, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ] + ]] + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : ["BaseClass" , [ + 8, + false + ]], + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "init_expr" : ["CXXInheritedCtorInitExpr" , [ + { + "pointer" : 49, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 10, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + } + ] + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 28, + "is_complete_definition" : true + }, + { + "bases" : [ + 8 + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 50, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "column" : 22 + } + ] + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 51 + }, + { + "is_cpp" : true, + "decl_ptr_with_body" : 50, + "body" : ["CompoundStmt" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 22 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 20 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 19 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 45, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 46 + } + } + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 19 + } + ] + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 29 + }, + { + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 19 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 45, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 46 + } + } + } + ]] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 57, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 58, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/inheriting_constructor.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 13 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 101 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 102 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 106 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 109 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 110 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 112 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 113 + } + ]], + ["ComplexType" , [ + { + "pointer" : 114 + } + ]], + ["ComplexType" , [ + { + "pointer" : 115 + } + ]], + ["ComplexType" , [ + { + "pointer" : 116 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 120 + }, + { + "type_ptr" : 59 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 123 + }, + 124 + ]], + ["PointerType" , [ + { + "pointer" : 125 + }, + { + "type_ptr" : 13, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 126 + }, + { + "type_ptr" : 61, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 127 + }, + { + "type_ptr" : 61 + } + ]], + ["RecordType" , [ + { + "pointer" : 128 + }, + 129 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 130 + }, + { + "element_type" : { + "type_ptr" : 128 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 131 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 13 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 16 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 29 + }, + 28 + ]], + ["LValueReferenceType" , [ + { + "pointer" : 21 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 132 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 21 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 19 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 21 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 25 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 133 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 23 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 40 + }, + { + "type_ptr" : 29, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 134 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 40 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 38 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 40 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 44 + }, + { + "type_ptr" : 29 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 135 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 44 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 42 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 44 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 51 + }, + { + "return_type" : { + "type_ptr" : 13 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 136 + }, + { + "type_ptr" : 127 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 137 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 13 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 46 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 13 + } + ] + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 138 + }, + { + "base_type" : 117 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 139 + }, + { + "type_ptr" : 138 + } + ]], + ["TypedefType" , [ + { + "pointer" : 140, + "desugared_type" : 139 + }, + { + "child_type" : { + "type_ptr" : 139 + }, + "decl_ptr" : 141 + } + ]], + ["TypedefType" , [ + { + "pointer" : 58, + "desugared_type" : 139 + }, + { + "child_type" : { + "type_ptr" : 140 + }, + "decl_ptr" : 57 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/lambda.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/lambda.cpp.exp new file mode 100644 index 000000000..b06bedd6b --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/lambda.cpp.exp @@ -0,0 +1,6589 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/lambda.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 17, + "column" : 1 + } + ] + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_cpp" : true, + "decl_ptr_with_body" : 7, + "body" : ["CompoundStmt" , [ + { + "pointer" : 9, + "source_range" : [ + { + "line" : 7, + "column" : 12 + }, + { + "line" : 17, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 11 + } + ] + }, + [ + ], + [ + ["VarDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + { + "type_ptr" : 12 + }, + { + } + ]], + ["VarDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 10 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + { + "type_ptr" : 12 + }, + { + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 14, + "source_range" : [ + { + "line" : 10, + "column" : 3 + }, + { + "column" : 30 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["LambdaExpr" , [ + { + "pointer" : 18, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 26 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ] + ]] + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "lambda_decl" : ["CXXRecordDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + 22, + [ + ["CXXMethodDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 29 + } + ], + "access" : "Public" + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8700561857799965393", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 24, + "body" : ["CompoundStmt" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 26 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["CXXConversionDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator int (*)()", + "qual_name" : [ + "operator int (*)()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "13435645424728763319", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ], + "is_implicit" : true, + "access" : "Private" + }, + { + "name" : "__invoke", + "qual_name" : [ + "__invoke", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 29 + }, + { + "mangled_name" : "17605822925966688033", + "is_cpp" : true, + "is_inline" : true, + "is_static" : true + }, + { + "is_static" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "11922868141377072075", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 32, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 33 + }, + { + "mangled_name" : "11530695906998885266", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 34, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 35 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 36, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "12828931072019093462", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 39 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 36, + "body" : ["CompoundStmt" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 23, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 30, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : "CXXMethod", + "decl_pointer" : 24, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + }, + "value_kind" : "XValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + }, + "is_elidable" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 29 + } + ] + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 41 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["LambdaExpr" , [ + { + "pointer" : 18, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ] + }, + [ + ["CompoundStmt" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 26 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ] + ]] + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "lambda_decl" : ["CXXRecordDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + 22, + [ + ["CXXMethodDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 29 + } + ], + "access" : "Public" + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8700561857799965393", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 24, + "body" : ["CompoundStmt" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 26 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["CXXConversionDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator int (*)()", + "qual_name" : [ + "operator int (*)()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "13435645424728763319", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 29 + } + ], + "is_implicit" : true, + "access" : "Private" + }, + { + "name" : "__invoke", + "qual_name" : [ + "__invoke", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 29 + }, + { + "mangled_name" : "17605822925966688033", + "is_cpp" : true, + "is_inline" : true, + "is_static" : true + }, + { + "is_static" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "11922868141377072075", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 32, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 33 + }, + { + "mangled_name" : "11530695906998885266", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 34, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 35 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 36, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "12828931072019093462", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 39 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 36, + "body" : ["CompoundStmt" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 23, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 30, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : "CXXMethod", + "decl_pointer" : 24, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + }, + "value_kind" : "XValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + }, + "is_elidable" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 43, + "source_range" : [ + { + "line" : 12, + "column" : 3 + }, + { + "column" : 42 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 45, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 46, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["LambdaExpr" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 48, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 49, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["CompoundStmt" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 41 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 38 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + } + }, + { + "lambda_decl" : ["CXXRecordDecl" , [ + { + "pointer" : 56, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + 55, + [ + ["CXXMethodDecl" , [ + { + "pointer" : 57, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 41 + } + ], + "access" : "Public" + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 58 + }, + { + "mangled_name" : "19264279795607331", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 26 + } + ] + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 12 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 57, + "body" : ["CompoundStmt" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 41 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 38 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 60, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 61 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 62, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 12 + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 63, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "16202408192376244884", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 64, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 65 + }, + { + "mangled_name" : "9965911517403679447", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 68, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 69 + }, + { + "mangled_name" : "8193408137476215445", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 71 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 68, + "body" : ["CompoundStmt" , [ + { + "pointer" : 72, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + }], + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "init_expr" : ["MemberExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXStaticCastExpr" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "XValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + } + } + ]] + }, + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }], + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXStaticCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "XValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "XValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ] + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 56, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 63, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : "CXXMethod", + "decl_pointer" : 57, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 58 + } + }, + "lambda_captures" : [ + { + "capture_kind" : "LCK_ByRef", + "capture_variable" : true, + "captured_var" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + { + "capture_kind" : "LCK_ByCopy", + "capture_variable" : true, + "captured_var" : { + "kind" : "Var", + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + } + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "XValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 68, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 69 + } + }, + "is_elidable" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 41 + } + ] + }, + { + "name" : "bar", + "qual_name" : [ + "bar" + ] + }, + { + "type_ptr" : 80 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 45, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 46, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["LambdaExpr" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 41 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 48, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 49, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 50, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["CompoundStmt" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 41 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 38 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + } + }, + { + "lambda_decl" : ["CXXRecordDecl" , [ + { + "pointer" : 56, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + 55, + [ + ["CXXMethodDecl" , [ + { + "pointer" : 57, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 41 + } + ], + "access" : "Public" + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 58 + }, + { + "mangled_name" : "19264279795607331", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 26 + } + ] + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 12 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 57, + "body" : ["CompoundStmt" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 41 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 38 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 53, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 54, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 38 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 60, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 61 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 62, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 12 + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 63, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "16202408192376244884", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 64, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 65 + }, + { + "mangled_name" : "9965911517403679447", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 68, + "parent_pointer" : 56, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 69 + }, + { + "mangled_name" : "8193408137476215445", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 71 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 68, + "body" : ["CompoundStmt" , [ + { + "pointer" : 72, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + }], + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "init_expr" : ["MemberExpr" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXStaticCastExpr" , [ + { + "pointer" : 74, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 75, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "XValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "LValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + } + } + ]] + }, + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }], + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ], + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["CXXStaticCastExpr" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 14 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "XValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : "XValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ] + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 56, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 63, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : "CXXMethod", + "decl_pointer" : 57, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 58 + } + }, + "lambda_captures" : [ + { + "capture_kind" : "LCK_ByRef", + "capture_variable" : true, + "captured_var" : { + "kind" : "Var", + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + { + "capture_kind" : "LCK_ByCopy", + "capture_variable" : true, + "captured_var" : { + "kind" : "Var", + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + } + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : "XValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 68, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 69 + } + }, + "is_elidable" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 82, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 46 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["LambdaExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]], + ["CompoundStmt" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 45 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 42 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 94 + } + }, + { + "lambda_decl" : ["CXXRecordDecl" , [ + { + "pointer" : 95, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + 94, + [ + ["CXXMethodDecl" , [ + { + "pointer" : 96, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 45 + } + ], + "access" : "Public" + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8151698240653651715", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 96, + "body" : ["CompoundStmt" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 45 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 42 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 97, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 92 + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 98, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "17098733838812833493", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 99, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 100 + }, + { + "mangled_name" : "14201972727608021968", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 101, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 102 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 103, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 104 + }, + { + "mangled_name" : "3001717133787422796", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 105, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 106 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 103, + "body" : ["CompoundStmt" , [ + { + "pointer" : 107, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }], + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 108, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 109, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["CXXStaticCastExpr" , [ + { + "pointer" : 110, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 111, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 105, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 106 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : "XValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 106 + }, + "static_cast" + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + }, + "value_kind" : "XValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ] + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 95, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 98, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : "CXXMethod", + "decl_pointer" : 96, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "lambda_captures" : [ + { + "capture_kind" : "LCK_ByCopy", + "capture_variable" : true, + "init_captured_vardecl" : ["VarDecl" , [ + { + "pointer" : 93, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 28 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 92 + }, + { + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]], + "captured_var" : { + "kind" : "Var", + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }, + "location" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + } + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : "XValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 103, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 104 + } + }, + "is_elidable" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 113, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 45 + } + ] + }, + { + "name" : "init_capture", + "qual_name" : [ + "init_capture" + ] + }, + { + "type_ptr" : 112 + }, + { + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["LambdaExpr" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 45 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]], + ["CompoundStmt" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 45 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 42 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + ], + { + "qual_type" : { + "type_ptr" : 94 + } + }, + { + "lambda_decl" : ["CXXRecordDecl" , [ + { + "pointer" : 95, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + 94, + [ + ["CXXMethodDecl" , [ + { + "pointer" : 96, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 45 + } + ], + "access" : "Public" + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8151698240653651715", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 96, + "body" : ["CompoundStmt" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 45 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 89, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 42 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 90, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 97, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 92 + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 98, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "17098733838812833493", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 99, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 100 + }, + { + "mangled_name" : "14201972727608021968", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 101, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 102 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 103, + "parent_pointer" : 95, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 104 + }, + { + "mangled_name" : "3001717133787422796", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 105, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 106 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 103, + "body" : ["CompoundStmt" , [ + { + "pointer" : 107, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }], + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ], + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 108, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 109, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["CXXStaticCastExpr" , [ + { + "pointer" : 110, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 111, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 105, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 106 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : "XValue" + }, + { + "cast_kind" : "NoOp", + "base_path" : [ + ] + }, + { + "type_ptr" : 106 + }, + "static_cast" + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + }, + "value_kind" : "XValue" + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ] + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 95, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 98, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : "CXXMethod", + "decl_pointer" : 96, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "lambda_captures" : [ + { + "capture_kind" : "LCK_ByCopy", + "capture_variable" : true, + "init_captured_vardecl" : ["VarDecl" , [ + { + "pointer" : 93, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 28 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 92 + }, + { + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + } + ]], + "captured_var" : { + "kind" : "Var", + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }, + "location" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + } + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : "XValue" + }, + { + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 103, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 104 + } + }, + "is_elidable" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + } + ]] + } + ]] + ] + ]], + ["ReturnStmt" , [ + { + "pointer" : 114, + "source_range" : [ + { + "line" : 16, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 115, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 116, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 117, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/lambda.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 12 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 126 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 127 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 128 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 129 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 133 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 136 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 137 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 138 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 139 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 140 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 141 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 142 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 143 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 144 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 145 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 146 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 147 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 148 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 149 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 150 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 151 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 152 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 153 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 154 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 155 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 156 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 157 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 158 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 159 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 160 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 161 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 162 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 163 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 164 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 165 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 166 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 167 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 168 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 169 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 170 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 171 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 172 + } + ]], + ["ComplexType" , [ + { + "pointer" : 173 + } + ]], + ["ComplexType" , [ + { + "pointer" : 174 + } + ]], + ["ComplexType" , [ + { + "pointer" : 175 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 176 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 177 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 178 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 179 + }, + { + "type_ptr" : 118 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 180 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 181 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 182 + }, + 183 + ]], + ["PointerType" , [ + { + "pointer" : 184 + }, + { + "type_ptr" : 12, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 185 + }, + { + "type_ptr" : 120, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 186 + }, + { + "type_ptr" : 120 + } + ]], + ["RecordType" , [ + { + "pointer" : 187 + }, + 188 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 189 + }, + { + "element_type" : { + "type_ptr" : 187 + }, + "stride" : 24 + }, + 1 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 12 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 190 + }, + { + "type_ptr" : 186 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 191 + }, + { + "return_type" : { + "type_ptr" : 192 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 22 + }, + 23 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 193 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 194 + } + ]], + ["AutoType" , [ + { + "pointer" : 92, + "desugared_type" : 12 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 195 + }, + { + "return_type" : { + "type_ptr" : 12 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 25 + }, + { + "return_type" : { + "type_ptr" : 92 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 29 + }, + { + "return_type" : { + "type_ptr" : 92 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 196 + }, + { + "type_ptr" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 197 + }, + { + "type_ptr" : 29 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 198 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 197 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 199 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 200 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 31 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 201 + } + ]], + ["AutoType" , [ + { + "pointer" : 41, + "desugared_type" : 22 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 35 + }, + { + "type_ptr" : 22, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 202 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 35 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 33 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 35 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 39 + }, + { + "type_ptr" : 22 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 203 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 204 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 205 + }, + { + "return_type" : { + "type_ptr" : 192 + } + }, + { + "params_type" : [ + { + "type_ptr" : 12 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 55 + }, + 56 + ]], + ["LValueReferenceType" , [ + { + "pointer" : 61 + }, + { + "type_ptr" : 12 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 206 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 207 + }, + { + "return_type" : { + "type_ptr" : 12 + } + }, + { + "params_type" : [ + { + "type_ptr" : 12 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 58 + }, + { + "return_type" : { + "type_ptr" : 92 + } + }, + { + "params_type" : [ + { + "type_ptr" : 12 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 208 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 209 + } + ]], + ["AutoType" , [ + { + "pointer" : 80, + "desugared_type" : 55 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 67 + }, + { + "type_ptr" : 55, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 210 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 65 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 71 + }, + { + "type_ptr" : 55 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 211 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 71 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 212 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 71 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 69 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 71 + } + ] + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 213 + } + ]], + ["RecordType" , [ + { + "pointer" : 94 + }, + 95 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 214 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 215 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 216 + } + ]], + ["AutoType" , [ + { + "pointer" : 112, + "desugared_type" : 94 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 102 + }, + { + "type_ptr" : 94, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 217 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 102 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 100 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 102 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 106 + }, + { + "type_ptr" : 94 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 218 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 106 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 219 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 106 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 104 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 106 + } + ] + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 220 + }, + { + "base_type" : 176 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 221 + }, + { + "type_ptr" : 220 + } + ]], + ["TypedefType" , [ + { + "pointer" : 222, + "desugared_type" : 221 + }, + { + "child_type" : { + "type_ptr" : 221 + }, + "decl_ptr" : 223 + } + ]], + ["TypedefType" , [ + { + "pointer" : 117, + "desugared_type" : 221 + }, + { + "child_type" : { + "type_ptr" : 222 + }, + "decl_ptr" : 116 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/materialize_temporary.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/materialize_temporary.cpp.exp new file mode 100644 index 000000000..ec2c2ef82 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/materialize_temporary.cpp.exp @@ -0,0 +1,782 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["VarDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/materialize_temporary.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 16 + } + ] + }, + { + "name" : "r", + "qual_name" : [ + "r" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_global" : true, + "is_init_ice" : true, + "init_expr" : ["ExprWithCleanups" , [ + { + "pointer" : 9, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["MaterializeTemporaryExpr" , [ + { + "pointer" : 10, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 11, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ["FloatingLiteral" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + "1" + ]] + ], + { + "qual_type" : { + "type_ptr" : 14, + "is_const" : true + } + }, + { + "cast_kind" : "FloatingToIntegral", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 14, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 7, + "name" : { + "name" : "r", + "qual_name" : [ + "r" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 14, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 15, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 16, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/materialize_temporary.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 14 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 13 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 70 + } + ]], + ["ComplexType" , [ + { + "pointer" : 71 + } + ]], + ["ComplexType" , [ + { + "pointer" : 72 + } + ]], + ["ComplexType" , [ + { + "pointer" : 73 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 77 + }, + { + "type_ptr" : 17 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 80 + }, + 81 + ]], + ["PointerType" , [ + { + "pointer" : 82 + }, + { + "type_ptr" : 14, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 83 + }, + { + "type_ptr" : 19, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 84 + }, + { + "type_ptr" : 19 + } + ]], + ["RecordType" , [ + { + "pointer" : 85 + }, + 86 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 87 + }, + { + "element_type" : { + "type_ptr" : 85 + }, + "stride" : 24 + }, + 1 + ]], + ["LValueReferenceType" , [ + { + "pointer" : 8 + }, + { + "type_ptr" : 14, + "is_const" : true + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 88 + }, + { + "base_type" : 74 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 89 + }, + { + "type_ptr" : 88 + } + ]], + ["TypedefType" , [ + { + "pointer" : 90, + "desugared_type" : 89 + }, + { + "child_type" : { + "type_ptr" : 89 + }, + "decl_ptr" : 91 + } + ]], + ["TypedefType" , [ + { + "pointer" : 16, + "desugared_type" : 89 + }, + { + "child_type" : { + "type_ptr" : 90 + }, + "decl_ptr" : 15 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/namespace_decl.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/namespace_decl.cpp.exp new file mode 100644 index 000000000..31e27d7f9 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/namespace_decl.cpp.exp @@ -0,0 +1,854 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["NamespaceDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/namespace_decl.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ] + }, + { + "name" : "Q", + "qual_name" : [ + "Q" + ] + }, + [ + ["NamespaceDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ] + }, + { + "name" : "V", + "qual_name" : [ + "V", + "Q" + ] + }, + [ + ], + { + }, + { + } + ]], + ["NamespaceDecl" , [ + { + "pointer" : 9, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "V", + "qual_name" : [ + "V", + "Q" + ] + }, + [ + ], + { + }, + { + "original_namespace" : { + "kind" : "Namespace", + "decl_pointer" : 8, + "name" : { + "name" : "V", + "qual_name" : [ + "V", + "Q" + ] + } + } + } + ]], + ["NamespaceDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ] + }, + { + "name" : "I", + "qual_name" : [ + "I", + "Q" + ] + }, + [ + ["VarDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "i", + "qual_name" : [ + "i", + "Q" + ] + }, + { + "type_ptr" : 12 + }, + { + "is_global" : true + } + ]] + ], + { + }, + { + "is_inline" : true + } + ]] + ], + { + }, + { + } + ]], + ["NamespaceDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + "line" : 17, + "column" : 1 + }, + { + "line" : 19, + "column" : 1 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "anonymous_namespace_tests/namespace_decl.cpp" + ] + }, + [ + ], + { + }, + { + } + ]], + ["UsingDirectiveDecl" , [ + { + "pointer" : 14, + "source_range" : [ + { + "line" : 17, + "column" : 11 + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "using_location" : { + "column" : 11 + }, + "namespace_key_location" : { + }, + "nested_name_specifier_locs" : [ + ], + "nominated_namespace" : { + "kind" : "Namespace", + "decl_pointer" : 13, + "name" : { + "name" : "", + "qual_name" : [ + "anonymous_namespace_tests/namespace_decl.cpp" + ] + } + } + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 15, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 16, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/namespace_decl.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 12 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 71 + } + ]], + ["ComplexType" , [ + { + "pointer" : 72 + } + ]], + ["ComplexType" , [ + { + "pointer" : 73 + } + ]], + ["ComplexType" , [ + { + "pointer" : 74 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 78 + }, + { + "type_ptr" : 17 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 81 + }, + 82 + ]], + ["PointerType" , [ + { + "pointer" : 83 + }, + { + "type_ptr" : 12, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 84 + }, + { + "type_ptr" : 19, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 85 + }, + { + "type_ptr" : 19 + } + ]], + ["RecordType" , [ + { + "pointer" : 86 + }, + 87 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 88 + }, + { + "element_type" : { + "type_ptr" : 86 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCObjectType" , [ + { + "pointer" : 89 + }, + { + "base_type" : 75 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 90 + }, + { + "type_ptr" : 89 + } + ]], + ["TypedefType" , [ + { + "pointer" : 91, + "desugared_type" : 90 + }, + { + "child_type" : { + "type_ptr" : 90 + }, + "decl_ptr" : 92 + } + ]], + ["TypedefType" , [ + { + "pointer" : 16, + "desugared_type" : 90 + }, + { + "child_type" : { + "type_ptr" : 91 + }, + "decl_ptr" : 15 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/new.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/new.cpp.exp new file mode 100644 index 000000000..4a724c079 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/new.cpp.exp @@ -0,0 +1,6900 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/new.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "pod", + "qual_name" : [ + "pod" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 7 + } + ], + "access" : "Public" + }, + { + "name" : "a", + "qual_name" : [ + "a", + "pod" + ] + }, + { + "type_ptr" : 11 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 12, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "8251339330154476193", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 12, + "body" : ["CompoundStmt" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 15, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + { + "type_ptr" : 16 + }, + { + "mangled_name" : "14628250159452892772", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 18 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "3036348191925830672", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 21, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 22 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~pod", + "qual_name" : [ + "~pod", + "pod" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "6606037711693769625", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "is_pod" : true, + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 23, + "name" : { + "name" : "~pod", + "qual_name" : [ + "~pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 24, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "line" : 17, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike" + ] + }, + 25, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + 25, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 27, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 12, + "column" : 3 + }, + { + "column" : 7 + } + ], + "access" : "Public" + }, + { + "name" : "a", + "qual_name" : [ + "a", + "cpplike" + ] + }, + { + "type_ptr" : 11 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 28, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 7 + } + ], + "access" : "Public" + }, + { + "name" : "b", + "qual_name" : [ + "b", + "cpplike" + ] + }, + { + "type_ptr" : 11 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 29, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 7 + } + ], + "access" : "Public" + }, + { + "name" : "c", + "qual_name" : [ + "c", + "cpplike" + ] + }, + { + "type_ptr" : 8 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 15, + "column" : 3 + }, + { + "column" : 28 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "1107470972604094108", + "is_cpp" : true, + "decl_ptr_with_body" : 30, + "body" : ["CompoundStmt" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 28 + } + ] + }, + [ + ] + ]] + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 27, + "name" : { + "name" : "a", + "qual_name" : [ + "a", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }], + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 19 + } + ], + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 17 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + }, + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 28, + "name" : { + "name" : "b", + "qual_name" : [ + "b", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }], + "source_range" : [ + { + "column" : 22 + }, + { + "column" : 25 + } + ], + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 34, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + }, + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 29, + "name" : { + "name" : "c", + "qual_name" : [ + "c", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + }], + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 35, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]] + } + ] + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 36, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 16, + "column" : 3 + }, + { + "column" : 39 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "4402068687990998056", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 15 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 22 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 1 + } + ]] + ], + "decl_ptr_with_body" : 36, + "body" : ["CompoundStmt" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 39 + } + ] + }, + [ + ] + ]] + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 27, + "name" : { + "name" : "a", + "qual_name" : [ + "a", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }], + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 30 + } + ], + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 38, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + }, + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 28, + "name" : { + "name" : "b", + "qual_name" : [ + "b", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }], + "source_range" : [ + { + "column" : 33 + }, + { + "column" : 36 + } + ], + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 43, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 35 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 35 + }, + { + "column" : 35 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 39, + "name" : { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + }, + { + "subject" : ["Member" , { + "kind" : "Field", + "decl_pointer" : 29, + "name" : { + "name" : "c", + "qual_name" : [ + "c", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + }], + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 45, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]] + } + ] + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 46, + "parent_pointer" : 24, + "source_range" : [ + { + "line" : 11, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 47 + }, + { + "mangled_name" : "17856063292060911243", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 48, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 49 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 50, + "parent_pointer" : 24, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 51 + }, + { + "mangled_name" : "6680359559125245897", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 54, + "parent_pointer" : 24, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~cpplike", + "qual_name" : [ + "~cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "10313252178728731272", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 24, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 54, + "name" : { + "name" : "~cpplike", + "qual_name" : [ + "~cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 55, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "line" : 35, + "column" : 1 + } + ] + }, + { + "name" : "test", + "qual_name" : [ + "test" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "18241244337164948030", + "is_cpp" : true, + "decl_ptr_with_body" : 55, + "body" : ["CompoundStmt" , [ + { + "pointer" : 56, + "source_range" : [ + { + "line" : 19, + "column" : 13 + }, + { + "line" : 35, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 57, + "source_range" : [ + { + "line" : 20, + "column" : 3 + }, + { + "column" : 23 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 22 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "initializer_expr" : 59 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 22 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 62 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 22 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "initializer_expr" : 59 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 63, + "source_range" : [ + { + "line" : 21, + "column" : 3 + }, + { + "column" : 26 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 25 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 65, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 65 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 68, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 25 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i_a", + "qual_name" : [ + "i_a" + ] + }, + { + "type_ptr" : 62 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 25 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 65, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 65 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 69, + "source_range" : [ + { + "line" : 23, + "column" : 3 + }, + { + "column" : 20 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 17 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 71, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 17 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 71 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 17 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 74 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 70, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 17 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 71, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 17 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 71 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 75, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 26 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 25 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "is_array" : true, + "array_size_expr" : 77, + "initializer_expr" : 79 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 81, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 25 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "p_a", + "qual_name" : [ + "p_a" + ] + }, + { + "type_ptr" : 74 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 76, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 25 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 77, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 78, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 23 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 79, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "is_array" : true, + "array_size_expr" : 77, + "initializer_expr" : 79 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 82, + "source_range" : [ + { + "line" : 26, + "column" : 3 + }, + { + "column" : 30 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 29 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 25 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 84 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 88, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 29 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 29 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 84, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 85, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 25 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 86, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 84 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 90, + "source_range" : [ + { + "line" : 27, + "column" : 3 + }, + { + "column" : 30 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 29 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 92, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 93, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 95 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 30, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 92, + "initializer_expr" : 94 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 96, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 29 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "c_a", + "qual_name" : [ + "c_a" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 29 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 92, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 93, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 95 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 30, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 92, + "initializer_expr" : 94 + } + ]] + } + ]] + ] + ]], + ["CXXDeleteExpr" , [ + { + "pointer" : 97, + "source_range" : [ + { + "line" : 29, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 98, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 99, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 62 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 61, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 62 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 62 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "destroyed_type" : { + "type_ptr" : 101 + } + } + ]], + ["CXXDeleteExpr" , [ + { + "pointer" : 102, + "source_range" : [ + { + "line" : 30, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 103, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 104, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 62 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 68, + "name" : { + "name" : "i_a", + "qual_name" : [ + "i_a" + ] + }, + "qual_type" : { + "type_ptr" : 62 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 62 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "is_array" : true, + "destroyed_type" : { + "type_ptr" : 101 + } + } + ]], + ["CXXDeleteExpr" , [ + { + "pointer" : 105, + "source_range" : [ + { + "line" : 31, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 107, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 74 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 73, + "name" : { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + "qual_type" : { + "type_ptr" : 74 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 74 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "destroyed_type" : { + "type_ptr" : 108 + } + } + ]], + ["CXXDeleteExpr" , [ + { + "pointer" : 109, + "source_range" : [ + { + "line" : 32, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 110, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 111, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 74 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 81, + "name" : { + "name" : "p_a", + "qual_name" : [ + "p_a" + ] + }, + "qual_type" : { + "type_ptr" : 74 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 74 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "is_array" : true, + "destroyed_type" : { + "type_ptr" : 108 + } + } + ]], + ["CXXDeleteExpr" , [ + { + "pointer" : 112, + "source_range" : [ + { + "line" : 33, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 113, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 114, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 89 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 88, + "name" : { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + "qual_type" : { + "type_ptr" : 89 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "destroyed_type" : { + "type_ptr" : 115 + } + } + ]], + ["CXXDeleteExpr" , [ + { + "pointer" : 116, + "source_range" : [ + { + "line" : 34, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 117, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 118, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 89 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 96, + "name" : { + "name" : "c_a", + "qual_name" : [ + "c_a" + ] + }, + "qual_type" : { + "type_ptr" : 89 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "is_array" : true, + "destroyed_type" : { + "type_ptr" : 115 + } + } + ]] + ] + ]] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 119, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + ["VisibilityAttr" , [ + { + "pointer" : 120, + "source_range" : [ + { + }, + { + } + ] + }, + "DefaultVisibility" + ]] + ] + }, + { + "name" : "operator new", + "qual_name" : [ + "operator new" + ] + }, + { + "type_ptr" : 121 + }, + { + "mangled_name" : "5103882463850428890", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 122, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 123, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + ["VisibilityAttr" , [ + { + "pointer" : 124, + "source_range" : [ + { + }, + { + } + ] + }, + "DefaultVisibility" + ]] + ] + }, + { + "name" : "operator new[]", + "qual_name" : [ + "operator new[]" + ] + }, + { + "type_ptr" : 121 + }, + { + "mangled_name" : "5124988689061404296", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 125, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 126, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + ["VisibilityAttr" , [ + { + "pointer" : 127, + "source_range" : [ + { + }, + { + } + ] + }, + "DefaultVisibility" + ]] + ] + }, + { + "name" : "operator delete", + "qual_name" : [ + "operator delete" + ] + }, + { + "type_ptr" : 128 + }, + { + "mangled_name" : "9332647001762808742", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 129, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 131, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + ["VisibilityAttr" , [ + { + "pointer" : 132, + "source_range" : [ + { + }, + { + } + ] + }, + "DefaultVisibility" + ]] + ] + }, + { + "name" : "operator delete[]", + "qual_name" : [ + "operator delete[]" + ] + }, + { + "type_ptr" : 128 + }, + { + "mangled_name" : "12453587667872411061", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 133, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 134, + "source_range" : [ + { + "line" : 38, + "column" : 1 + }, + { + "line" : 43, + "column" : 1 + } + ] + }, + { + "name" : "test_c11", + "qual_name" : [ + "test_c11" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "6095890702841955930", + "is_cpp" : true, + "decl_ptr_with_body" : 134, + "body" : ["CompoundStmt" , [ + { + "pointer" : 135, + "source_range" : [ + { + "line" : 38, + "column" : 17 + }, + { + "line" : 43, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 136, + "source_range" : [ + { + "line" : 39, + "column" : 3 + }, + { + "column" : 32 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 137, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 31 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 138, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 139, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["InitListExpr" , [ + { + "pointer" : 140, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 31 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 141, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 142, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 143, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 144 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 138, + "initializer_expr" : 140 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 145, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 31 + } + ] + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 62 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 137, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 31 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 138, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 139, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["InitListExpr" , [ + { + "pointer" : 140, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 31 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 141, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 142, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 143, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 144 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 138, + "initializer_expr" : 140 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 146, + "source_range" : [ + { + "line" : 40, + "column" : 3 + }, + { + "column" : 30 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 147, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 29 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 148, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 149, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 25 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 150, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 148 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 151, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 29 + } + ] + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 147, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 29 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 148, + "source_range" : [ + { + "column" : 17 + }, + { + "column" : 29 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 149, + "source_range" : [ + { + "column" : 25 + }, + { + "column" : 25 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 150, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 148 + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 152, + "source_range" : [ + { + "line" : 41, + "column" : 3 + }, + { + "column" : 53 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 153, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 52 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 154, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 155, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["InitListExpr" , [ + { + "pointer" : 156, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 52 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 157, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 35 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 158, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 31 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 159, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 160, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 43 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 161, + "source_range" : [ + { + "column" : 39 + }, + { + "column" : 39 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 162, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 163, + "source_range" : [ + { + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 164, + "source_range" : [ + { + "column" : 47 + }, + { + "column" : 47 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 165, + "source_range" : [ + { + "column" : 50 + }, + { + "column" : 50 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "6" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 166 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 154, + "initializer_expr" : 156 + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 52 + } + ] + }, + { + "name" : "c_a", + "qual_name" : [ + "c_a" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 153, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 52 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 154, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 155, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]], + ["InitListExpr" , [ + { + "pointer" : 156, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 52 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 157, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 35 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 158, + "source_range" : [ + { + "column" : 31 + }, + { + "column" : 31 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 159, + "source_range" : [ + { + "column" : 34 + }, + { + "column" : 34 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 160, + "source_range" : [ + { + "column" : 38 + }, + { + "column" : 43 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 161, + "source_range" : [ + { + "column" : 39 + }, + { + "column" : 39 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 162, + "source_range" : [ + { + "column" : 42 + }, + { + "column" : 42 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]], + ["CXXConstructExpr" , [ + { + "pointer" : 163, + "source_range" : [ + { + "column" : 46 + }, + { + "column" : 51 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 164, + "source_range" : [ + { + "column" : 47 + }, + { + "column" : 47 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 165, + "source_range" : [ + { + "column" : 50 + }, + { + "column" : 50 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "6" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 166 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 154, + "initializer_expr" : 156 + } + ]] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 168, + "source_range" : [ + { + "line" : 45, + "column" : 1 + }, + { + "line" : 47, + "column" : 1 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "operator new", + "qual_name" : [ + "operator new" + ] + }, + { + "type_ptr" : 169 + }, + { + "mangled_name" : "13351464032276683690", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 170, + "source_range" : [ + { + "line" : 45, + "column" : 20 + }, + { + "column" : 34 + } + ] + }, + { + "name" : "size", + "qual_name" : [ + "size" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 171, + "source_range" : [ + { + "column" : 40 + }, + { + "column" : 46 + } + ] + }, + { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 1 + } + ]], + ["ParmVarDecl" , [ + { + "pointer" : 172, + "source_range" : [ + { + "column" : 51 + }, + { + "column" : 57 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ptr2", + "qual_name" : [ + "ptr2" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 2 + } + ]] + ], + "decl_ptr_with_body" : 168, + "body" : ["CompoundStmt" , [ + { + "pointer" : 173, + "source_range" : [ + { + "column" : 72 + }, + { + "line" : 47, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 174, + "source_range" : [ + { + "line" : 46, + "column" : 3 + }, + { + "column" : 10 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 175, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 176, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 172, + "name" : { + "name" : "ptr2", + "qual_name" : [ + "ptr2" + ] + }, + "qual_type" : { + "type_ptr" : 130 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["EmptyDecl" , [ + { + "pointer" : 177, + "source_range" : [ + { + "line" : 47, + "column" : 2 + }, + { + "column" : 2 + } + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 178, + "source_range" : [ + { + "line" : 49, + "column" : 1 + }, + { + "line" : 52, + "column" : 1 + } + ] + }, + { + "name" : "test_placement", + "qual_name" : [ + "test_placement" + ] + }, + { + "type_ptr" : 179 + }, + { + "mangled_name" : "1553186570458038035", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 180, + "source_range" : [ + { + "line" : 49, + "column" : 21 + }, + { + "column" : 27 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "decl_ptr_with_body" : 178, + "body" : ["CompoundStmt" , [ + { + "pointer" : 181, + "source_range" : [ + { + "column" : 32 + }, + { + "line" : 52, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 182, + "source_range" : [ + { + "line" : 50, + "column" : 3 + }, + { + "column" : 12 + } + ] + }, + [ + ["IntegerLiteral" , [ + { + "pointer" : 183, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 184, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 11 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 11 + }, + { + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 183, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 11 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 185, + "source_range" : [ + { + "line" : 51, + "column" : 3 + }, + { + "column" : 30 + } + ] + }, + [ + ["CXXNewExpr" , [ + { + "pointer" : 186, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 27 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 187, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 188, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 189, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 180, + "name" : { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + "qual_type" : { + "type_ptr" : 130 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 190, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 24 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 191, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 24 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 192, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 184, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "kind" : "AddrOf" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 187, + "placement_args" : [ + 188, + 190 + ] + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 193, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 27 + } + ] + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 74 + }, + { + "init_expr" : ["CXXNewExpr" , [ + { + "pointer" : 186, + "source_range" : [ + { + "column" : 13 + }, + { + "column" : 27 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 187, + "source_range" : [ + { + "column" : 27 + }, + { + "column" : 27 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 188, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 189, + "source_range" : [ + { + "column" : 18 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ParmVar", + "decl_pointer" : 180, + "name" : { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + "qual_type" : { + "type_ptr" : 130 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 190, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 24 + } + ] + }, + [ + ["UnaryOperator" , [ + { + "pointer" : 191, + "source_range" : [ + { + "column" : 23 + }, + { + "column" : 24 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 192, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 184, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "kind" : "AddrOf" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : "BitCast", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 187, + "placement_args" : [ + 188, + 190 + ] + } + ]] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 194, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 195, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/new.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 196 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 197 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 198 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 199 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 11 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 200 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 201 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 202 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 203 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 204 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 205 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 206 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 207 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 208 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 209 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 210 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 211 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 212 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 213 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 214 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 215 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 216 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 217 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 218 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 219 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 220 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 221 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 222 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 223 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 224 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 225 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 226 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 227 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 228 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 229 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 230 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 231 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 232 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 233 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 234 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 235 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 236 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 237 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 238 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 239 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 240 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 241 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 242 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 243 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 244 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 245 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 246 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 247 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 248 + } + ]], + ["ComplexType" , [ + { + "pointer" : 249 + } + ]], + ["ComplexType" , [ + { + "pointer" : 250 + } + ]], + ["ComplexType" , [ + { + "pointer" : 251 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 252 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 253 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 254 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 130 + }, + { + "type_ptr" : 100 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 255 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 256 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 257 + }, + 258 + ]], + ["PointerType" , [ + { + "pointer" : 259 + }, + { + "type_ptr" : 11, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 260 + }, + { + "type_ptr" : 197, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 261 + }, + { + "type_ptr" : 197 + } + ]], + ["RecordType" , [ + { + "pointer" : 262 + }, + 263 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 264 + }, + { + "element_type" : { + "type_ptr" : 262 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["RecordType" , [ + { + "pointer" : 25 + }, + 24 + ]], + ["PointerType" , [ + { + "pointer" : 87 + }, + { + "type_ptr" : 25 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 31 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 11 + }, + { + "type_ptr" : 11 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 265 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 18 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 266 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 16 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 22 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 267 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 13 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 268 + }, + { + "type_ptr" : 269 + } + ]], + ["PointerType" , [ + { + "pointer" : 60 + }, + { + "type_ptr" : 11 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 121 + }, + { + "return_type" : { + "type_ptr" : 130 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 179 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 130 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 128 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 130 + } + ] + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 270 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 271 + } + ]], + ["PointerType" , [ + { + "pointer" : 272 + }, + { + "type_ptr" : 270 + } + ]], + ["PointerType" , [ + { + "pointer" : 273 + }, + { + "type_ptr" : 271 + } + ]], + ["AutoType" , [ + { + "pointer" : 101, + "desugared_type" : 11 + } + ]], + ["PointerType" , [ + { + "pointer" : 62 + }, + { + "type_ptr" : 101 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 274 + }, + { + "element_type" : { + "type_ptr" : 11 + }, + "stride" : 4 + }, + 10 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 275 + } + ]], + ["PointerType" , [ + { + "pointer" : 276 + }, + { + "type_ptr" : 275 + } + ]], + ["PointerType" , [ + { + "pointer" : 72 + }, + { + "type_ptr" : 8 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 277 + } + ]], + ["PointerType" , [ + { + "pointer" : 278 + }, + { + "type_ptr" : 277 + } + ]], + ["AutoType" , [ + { + "pointer" : 108, + "desugared_type" : 8 + } + ]], + ["PointerType" , [ + { + "pointer" : 74 + }, + { + "type_ptr" : 108 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 80 + }, + { + "element_type" : { + "type_ptr" : 8 + }, + "stride" : 4 + }, + 10 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 279 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 280 + } + ]], + ["PointerType" , [ + { + "pointer" : 281 + }, + { + "type_ptr" : 280 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 49 + }, + { + "type_ptr" : 25, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 282 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 47 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 53 + }, + { + "type_ptr" : 25 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 283 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 53 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 51 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 53 + } + ] + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 284 + } + ]], + ["PointerType" , [ + { + "pointer" : 285 + }, + { + "type_ptr" : 284 + } + ]], + ["AutoType" , [ + { + "pointer" : 115, + "desugared_type" : 25 + } + ]], + ["PointerType" , [ + { + "pointer" : 89 + }, + { + "type_ptr" : 115 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 95 + }, + { + "element_type" : { + "type_ptr" : 25 + }, + "stride" : 12 + }, + 10 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 286 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 287 + } + ]], + ["PointerType" , [ + { + "pointer" : 288 + }, + { + "type_ptr" : 287 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 144 + }, + { + "element_type" : { + "type_ptr" : 11 + }, + "stride" : 4 + }, + 3 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 289 + } + ]], + ["PointerType" , [ + { + "pointer" : 290 + }, + { + "type_ptr" : 289 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 291 + } + ]], + ["PointerType" , [ + { + "pointer" : 292 + }, + { + "type_ptr" : 291 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 166 + }, + { + "element_type" : { + "type_ptr" : 25 + }, + "stride" : 12 + }, + 4 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 293 + } + ]], + ["PointerType" , [ + { + "pointer" : 294 + }, + { + "type_ptr" : 293 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 295 + }, + { + "return_type" : { + "type_ptr" : 130 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + }, + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 169 + }, + { + "return_type" : { + "type_ptr" : 130 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + }, + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 296 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + } + ] + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 297 + } + ]], + ["PointerType" , [ + { + "pointer" : 298 + }, + { + "type_ptr" : 297 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 299 + }, + { + "base_type" : 252 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 300 + }, + { + "type_ptr" : 299 + } + ]], + ["TypedefType" , [ + { + "pointer" : 301, + "desugared_type" : 300 + }, + { + "child_type" : { + "type_ptr" : 300 + }, + "decl_ptr" : 302 + } + ]], + ["TypedefType" , [ + { + "pointer" : 195, + "desugared_type" : 300 + }, + { + "child_type" : { + "type_ptr" : 301 + }, + "decl_ptr" : 194 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/no_except_expr.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/no_except_expr.cpp.exp new file mode 100644 index 000000000..0dbb96a6a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/no_except_expr.cpp.exp @@ -0,0 +1,941 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/no_except_expr.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 27 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "no_throw", + "qual_name" : [ + "no_throw" + ] + }, + { + "type_ptr" : 8 + }, + { + "mangled_name" : "17033017651186285990", + "is_cpp" : true, + "decl_ptr_with_body" : 7, + "body" : ["CompoundStmt" , [ + { + "pointer" : 9, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 27 + } + ] + }, + [ + ] + ]] + } + ]], + ["EmptyDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "column" : 43 + } + ] + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 12 + }, + { + "is_cpp" : true, + "decl_ptr_with_body" : 11, + "body" : ["CompoundStmt" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 43 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 40 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 40 + } + ] + }, + [ + ["CXXNoexceptExpr" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 40 + } + ] + }, + [ + ["CallExpr" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 39 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 18, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 30 + }, + { + "column" : 30 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 7, + "name" : { + "name" : "no_throw", + "qual_name" : [ + "no_throw" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 21 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "value" : true + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 23 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 24, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 25, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/no_except_expr.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 78 + } + ]], + ["ComplexType" , [ + { + "pointer" : 79 + } + ]], + ["ComplexType" , [ + { + "pointer" : 80 + } + ]], + ["ComplexType" , [ + { + "pointer" : 81 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 85 + }, + { + "type_ptr" : 21 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 88 + }, + 89 + ]], + ["PointerType" , [ + { + "pointer" : 90 + }, + { + "type_ptr" : 23, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 91 + }, + { + "type_ptr" : 26, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 92 + }, + { + "type_ptr" : 26 + } + ]], + ["RecordType" , [ + { + "pointer" : 93 + }, + 94 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 95 + }, + { + "element_type" : { + "type_ptr" : 93 + }, + "stride" : 24 + }, + 1 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 96 + }, + { + "return_type" : { + "type_ptr" : 21 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 21 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 23 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 97 + }, + { + "type_ptr" : 92 + } + ]], + ["PointerType" , [ + { + "pointer" : 98 + }, + { + "type_ptr" : 96 + } + ]], + ["PointerType" , [ + { + "pointer" : 20 + }, + { + "type_ptr" : 8 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 99 + }, + { + "base_type" : 82 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 100 + }, + { + "type_ptr" : 99 + } + ]], + ["TypedefType" , [ + { + "pointer" : 101, + "desugared_type" : 100 + }, + { + "child_type" : { + "type_ptr" : 100 + }, + "decl_ptr" : 102 + } + ]], + ["TypedefType" , [ + { + "pointer" : 25, + "desugared_type" : 100 + }, + { + "child_type" : { + "type_ptr" : 101 + }, + "decl_ptr" : 24 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/objcpp_template_unboxing.mm.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/objcpp_template_unboxing.mm.exp new file mode 100644 index 000000000..825947cfe --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/objcpp_template_unboxing.mm.exp @@ -0,0 +1,823 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 6, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 0, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 9, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["FunctionTemplateDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + "file" : "tests/objcpp_template_unboxing.mm", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ] + }, + { + "name" : "box", + "qual_name" : [ + "box" + ] + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 14, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/objcpp_template_unboxing.mm", + "input_kind" : "IK_ObjCXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 15 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 16 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 70 + } + ]], + ["ComplexType" , [ + { + "pointer" : 71 + } + ]], + ["ComplexType" , [ + { + "pointer" : 72 + } + ]], + ["ComplexType" , [ + { + "pointer" : 73 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 77 + }, + { + "type_ptr" : 15 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "Half" + ]], + ["PointerType" , [ + { + "pointer" : 80 + }, + { + "type_ptr" : 76 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 81 + }, + { + "base_type" : 74 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 82 + }, + { + "type_ptr" : 81 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 83 + }, + { + "base_type" : 75 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 84 + }, + { + "type_ptr" : 83 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 85 + }, + 8 + ]], + ["RecordType" , [ + { + "pointer" : 86 + }, + 87 + ]], + ["PointerType" , [ + { + "pointer" : 88 + }, + { + "type_ptr" : 20, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 89 + }, + { + "type_ptr" : 17, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 90 + }, + { + "type_ptr" : 17 + } + ]], + ["RecordType" , [ + { + "pointer" : 91 + }, + 92 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 93 + }, + { + "element_type" : { + "type_ptr" : 91 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 94 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 95 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 96 + }, + { + "return_type" : { + "type_ptr" : 77 + } + }, + { + "params_type" : [ + { + "type_ptr" : 94 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 97 + }, + { + "return_type" : { + "type_ptr" : 77 + } + }, + { + "params_type" : [ + { + "type_ptr" : 95 + } + ] + } + ]], + ["TypedefType" , [ + { + "pointer" : 6, + "desugared_type" : 82 + }, + { + "child_type" : { + "type_ptr" : 82 + }, + "decl_ptr" : 5 + } + ]], + ["TypedefType" , [ + { + "pointer" : 14, + "desugared_type" : 82 + }, + { + "child_type" : { + "type_ptr" : 6 + }, + "decl_ptr" : 13 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/optional.m.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/optional.m.exp new file mode 100644 index 000000000..cdaab24f9 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/optional.m.exp @@ -0,0 +1,1860 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 0, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 1, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 10, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 13, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/optional.m", + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 2 + } + ] + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ], + { + }, + { + } + ]], + ["ObjCProtocolDecl" , [ + { + "pointer" : 14, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "line" : 12, + "column" : 2 + } + ] + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ], + { + }, + { + } + ]], + ["ObjCProtocolDecl" , [ + { + "pointer" : 15, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "line" : 17, + "column" : 2 + } + ] + }, + { + "name" : "BarDelegate", + "qual_name" : [ + "BarDelegate" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 16, + "parent_pointer" : 15, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "column" : 25 + } + ] + }, + { + "name" : "optionalFunction", + "qual_name" : [ + "optionalFunction", + "BarDelegate" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "is_optional" : true, + "mangled_name" : "-[BarDelegate optionalFunction]" + } + ]] + ], + { + }, + { + "protocols" : [ + { + "kind" : "ObjCProtocol", + "decl_pointer" : 14, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + ] + } + ]], + ["ObjCInterfaceDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 19, + "column" : 1 + }, + { + "line" : 21, + "column" : 2 + } + ] + }, + { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + }, + [ + ["ObjCPropertyDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : [ + { + "line" : 20, + "column" : 1 + }, + { + "column" : 46 + } + ] + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + }, + { + "qual_type" : { + "type_ptr" : 20 + }, + "getter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 21, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "setter_method" : { + "kind" : "ObjCMethod", + "decl_pointer" : 22, + "name" : { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "Bar" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 23, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "Bar" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + }, + "property_attributes" : [ + "Assign", + "Readwrite", + "Nonatomic", + "Unsafe_unretained" + ] + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 21, + "parent_pointer" : 18, + "source_range" : [ + { + "column" : 46 + }, + { + "column" : 46 + } + ], + "is_implicit" : true + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 20 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 24, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 25, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 26, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[Bar delegate]" + } + ]], + ["ObjCMethodDecl" , [ + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : [ + { + "column" : 46 + }, + { + "column" : 46 + } + ], + "is_implicit" : true + }, + { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "Bar" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 27, + "source_range" : [ + { + "column" : 46 + }, + { + "column" : 46 + } + ] + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ], + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 28, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 25, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 29, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "mangled_name" : "-[Bar setDelegate:]" + } + ]] + ], + { + }, + { + "super" : { + "kind" : "ObjCInterface", + "decl_pointer" : 13, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : "ObjCImplementation", + "decl_pointer" : 30, + "name" : { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + } + } + } + ]], + ["ObjCImplementationDecl" , [ + { + "pointer" : 30, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "line" : 28, + "column" : 1 + } + ] + }, + { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + }, + [ + ["ObjCMethodDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 30, + "source_range" : [ + { + "line" : 24, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + { + "name" : "unsafeAction", + "qual_name" : [ + "unsafeAction", + "Bar" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "implicit_parameters" : [ + ["ImplicitParamDecl" , [ + { + "pointer" : 32, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 25, + "is_const" : true + }, + { + } + ]], + ["ImplicitParamDecl" , [ + { + "pointer" : 33, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + ]] + ], + "body" : ["CompoundStmt" , [ + { + "pointer" : 34, + "source_range" : [ + { + "line" : 24, + "column" : 22 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + [ + ["ExprWithCleanups" , [ + { + "pointer" : 35, + "source_range" : [ + { + "line" : 25, + "column" : 3 + }, + { + "column" : 34 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 34 + } + ] + }, + [ + ["PseudoObjectExpr" , [ + { + "pointer" : 37, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 9 + } + ] + }, + [ + ["ObjCPropertyRefExpr" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 9 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 32, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 42 + }, + "value_kind" : "LValue", + "object_kind" : "ObjCProperty" + }, + { + "kind" : ["PropertyRef" , { + "kind" : "ObjCProperty", + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }], + "is_messaging_getter" : true + } + ]], + ["OpaqueValueExpr" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 32, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["ImplicitCastExpr" , [ + { + "pointer" : 43, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["ObjCMessageExpr" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["OpaqueValueExpr" , [ + { + "pointer" : 39, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "source_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 40, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 4 + }, + { + "column" : 4 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "ImplicitParam", + "decl_pointer" : 32, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "selector" : "delegate", + "decl_pointer" : 21 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "cast_kind" : "ARCReclaimReturnedObject", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 20 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "selector" : "optionalFunction", + "decl_pointer" : 16 + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + } + ]] + ] + ]], + "mangled_name" : "-[Bar unsafeAction]" + } + ]], + ["ObjCIvarDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 30, + "source_range" : [ + { + "line" : 20, + "column" : 46 + }, + { + "column" : 46 + } + ] + }, + { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "Bar" + ] + }, + { + "type_ptr" : 20 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : "Private" + } + ]], + ["ObjCPropertyImplDecl" , [ + { + "pointer" : 45, + "source_range" : [ + { + }, + { + "column" : 46 + } + ] + }, + { + "implementation" : "Synthesize", + "property_decl" : { + "kind" : "ObjCProperty", + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "ivar_decl" : { + "kind" : "ObjCIvar", + "decl_pointer" : 23, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "Bar" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + ]] + ], + { + }, + { + "class_interface" : { + "kind" : "ObjCInterface", + "decl_pointer" : 18, + "name" : { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + } + } + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 46, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 47, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/optional.m", + "input_kind" : "IK_ObjC", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 99 + } + ]], + ["ComplexType" , [ + { + "pointer" : 100 + } + ]], + ["ComplexType" , [ + { + "pointer" : 101 + } + ]], + ["ComplexType" , [ + { + "pointer" : 102 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 106 + }, + { + "type_ptr" : 17 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "Half" + ]], + ["PointerType" , [ + { + "pointer" : 109 + }, + { + "type_ptr" : 105 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 110 + }, + { + "base_type" : 103 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 111 + }, + { + "type_ptr" : 110 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 112 + }, + { + "base_type" : 104 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 113 + }, + { + "type_ptr" : 112 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 114 + }, + 9 + ]], + ["RecordType" , [ + { + "pointer" : 115 + }, + 116 + ]], + ["PointerType" , [ + { + "pointer" : 117 + }, + { + "type_ptr" : 52, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 118 + }, + { + "type_ptr" : 49, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 119 + }, + { + "type_ptr" : 49 + } + ]], + ["RecordType" , [ + { + "pointer" : 120 + }, + 121 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 122 + }, + { + "element_type" : { + "type_ptr" : 120 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 123 + }, + 13 + ]], + ["TypedefType" , [ + { + "pointer" : 7, + "desugared_type" : 111 + }, + { + "child_type" : { + "type_ptr" : 111 + }, + "decl_ptr" : 6 + } + ]], + ["TypedefType" , [ + { + "pointer" : 47, + "desugared_type" : 111 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 46 + } + ]], + ["ObjCInterfaceType" , [ + { + "pointer" : 124 + }, + 18 + ]], + ["ObjCObjectType" , [ + { + "pointer" : 125 + }, + { + "base_type" : 103, + "protocol_decls_ptr" : [ + 15 + ] + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 20 + }, + { + "type_ptr" : 125 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 25 + }, + { + "type_ptr" : 124 + } + ]], + ["TypedefType" , [ + { + "pointer" : 5, + "desugared_type" : 109 + }, + { + "child_type" : { + "type_ptr" : 109 + }, + "decl_ptr" : 4 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/sizeof_static_evaluation.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/sizeof_static_evaluation.cpp.exp new file mode 100644 index 000000000..4e37954ea --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/sizeof_static_evaluation.cpp.exp @@ -0,0 +1,1032 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/sizeof_static_evaluation.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 7 + } + ] + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo" + ] + }, + { + } + ]], + ["ClassTemplatePartialSpecializationDecl" , [ + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ] + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo" + ] + }, + 9, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 8, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo", + "__foo" + ] + }, + 9, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0, + "is_dependent_type" : true + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 11, + "parent_pointer" : 8, + "source_range" : [ + { + "line" : 12, + "column" : 3 + }, + { + "column" : 19 + } + ], + "access" : "Private" + }, + { + "name" : "x", + "qual_name" : [ + "x", + "__foo" + ] + }, + { + "type_ptr" : 12 + }, + { + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 13, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 19 + } + ] + }, + [ + ["UnaryExprOrTypeTraitExpr" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 11 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "kind" : "SizeOf", + "qual_type" : { + "type_ptr" : 16 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + } + ]], + ["AccessSpecDecl" , [ + { + "pointer" : 17, + "source_range" : [ + { + "line" : 14, + "column" : 2 + }, + { + "column" : 8 + } + ], + "access" : "Public" + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 18, + "parent_pointer" : 8, + "source_range" : [ + { + "line" : 15, + "column" : 3 + }, + { + "column" : 11 + } + ], + "access" : "Public" + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo", + "__foo" + ] + }, + { + "type_ptr" : 19 + }, + { + "mangled_name" : "800005863435481739", + "is_cpp" : true, + "decl_ptr_with_body" : 18, + "body" : ["CompoundStmt" , [ + { + "pointer" : 20, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 11 + } + ] + }, + [ + ] + ]] + }, + { + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 8, + "is_complete_definition" : true, + "is_dependent_type" : true + }, + { + }, + "2204753185921246810", + { + "template_decl" : 7, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 21 + }], + ["Integral" , "1"] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 22, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 20 + } + ] + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 12 + }, + { + "is_global" : true, + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 23, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 20 + } + ] + }, + [ + ["UnaryExprOrTypeTraitExpr" , [ + { + "pointer" : 24, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "kind" : ["SizeOfWithSize" , 1], + "qual_type" : { + "type_ptr" : 25 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : "IntegralCast", + "base_path" : [ + ] + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 26, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 27, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/sizeof_static_evaluation.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 12 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 15 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 80 + } + ]], + ["ComplexType" , [ + { + "pointer" : 81 + } + ]], + ["ComplexType" , [ + { + "pointer" : 82 + } + ]], + ["ComplexType" , [ + { + "pointer" : 83 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 87 + }, + { + "type_ptr" : 28 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 90 + }, + 91 + ]], + ["PointerType" , [ + { + "pointer" : 92 + }, + { + "type_ptr" : 12, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 93 + }, + { + "type_ptr" : 25, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 94 + }, + { + "type_ptr" : 25 + } + ]], + ["RecordType" , [ + { + "pointer" : 95 + }, + 96 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 97 + }, + { + "element_type" : { + "type_ptr" : 95 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 21 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 98 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 99 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 100 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 101 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 16 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 102 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 103 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 9 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 104 + } + ]], + ["PointerType" , [ + { + "pointer" : 105 + }, + { + "type_ptr" : 9 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 19 + }, + { + "return_type" : { + "type_ptr" : 28 + } + }, + { + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 106 + }, + { + "base_type" : 84 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 107 + }, + { + "type_ptr" : 106 + } + ]], + ["TypedefType" , [ + { + "pointer" : 108, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 107 + }, + "decl_ptr" : 109 + } + ]], + ["TypedefType" , [ + { + "pointer" : 27, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 108 + }, + "decl_ptr" : 26 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/struct.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/struct.cpp.exp new file mode 100644 index 000000000..114884cfd --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/struct.cpp.exp @@ -0,0 +1,1706 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/struct.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "Point", + "qual_name" : [ + "Point" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Point", + "qual_name" : [ + "Point", + "Point" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 10 + } + ], + "access" : "Public" + }, + { + "name" : "x", + "qual_name" : [ + "x", + "Point" + ] + }, + { + "type_ptr" : 11 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 12, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 13 + } + ], + "access" : "Public" + }, + { + "name" : "y", + "qual_name" : [ + "y", + "Point" + ] + }, + { + "type_ptr" : 11 + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + "line" : 11, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ] + }, + { + "name" : "fun", + "qual_name" : [ + "fun" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "4651010030435487712", + "is_cpp" : true, + "decl_ptr_with_body" : 13, + "body" : ["CompoundStmt" , [ + { + "pointer" : 15, + "source_range" : [ + { + "line" : 11, + "column" : 12 + }, + { + "line" : 14, + "column" : 1 + } + ] + }, + [ + ["DeclStmt" , [ + { + "pointer" : 16, + "source_range" : [ + { + "line" : 12, + "column" : 3 + }, + { + "column" : 14 + } + ] + }, + [ + ], + [ + ["CXXRecordDecl" , [ + { + "pointer" : 17, + "parent_pointer" : 13, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 13 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "X", + "qual_name" : [ + "X", + "fun" + ] + }, + 18, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 19, + "parent_pointer" : 17, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 10 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + 18, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 20, + "parent_pointer" : 17, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + { + "type_ptr" : 21 + }, + { + "mangled_name" : "4417717915555375243", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 20, + "body" : ["CompoundStmt" , [ + { + "pointer" : 22, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 17, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "4190573168950999278", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 25, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 26 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 27, + "parent_pointer" : 17, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + { + "type_ptr" : 28 + }, + { + "mangled_name" : "12437859369676964978", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 29, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 10 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 30 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 17, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]] + ] + ]], + ["DeclStmt" , [ + { + "pointer" : 31, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 6 + } + ] + }, + [ + ["CXXConstructExpr" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 20, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + "qual_type" : { + "type_ptr" : 21 + } + } + } + ]] + ], + [ + ["VarDecl" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 5 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 18 + }, + { + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 32, + "source_range" : [ + { + "column" : 5 + }, + { + "column" : 5 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 20, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + "qual_type" : { + "type_ptr" : 21 + } + } + } + ]] + } + ]] + ] + ]] + ] + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 34, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "column" : 24 + } + ] + }, + { + "name" : "blank", + "qual_name" : [ + "blank" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_global" : true, + "init_expr" : ["InitListExpr" , [ + { + "pointer" : 35, + "source_range" : [ + { + "column" : 15 + }, + { + "column" : 24 + } + ] + }, + [ + ["FloatingLiteral" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + "3" + ]], + ["FloatingLiteral" , [ + { + "pointer" : 37, + "source_range" : [ + { + "column" : 21 + }, + { + "column" : 21 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + "4" + ]] + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + ]] + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "line" : 20, + "column" : 1 + } + ] + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 39, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 39, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["VarDecl" , [ + { + "pointer" : 41, + "source_range" : [ + { + "line" : 19, + "column" : 3 + }, + { + "column" : 14 + } + ], + "access" : "Public" + }, + { + "name" : "a", + "qual_name" : [ + "a", + "A" + ] + }, + { + "type_ptr" : 42 + }, + { + "is_global" : true, + "is_static" : true, + "is_static_data_member" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 38, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]], + ["VarDecl" , [ + { + "pointer" : 43, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "column" : 12 + } + ], + "access" : "Public" + }, + { + "name" : "a", + "qual_name" : [ + "a", + "A" + ] + }, + { + "type_ptr" : 42 + }, + { + "is_global" : true, + "is_static_data_member" : true, + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 12 + }, + { + "column" : 12 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 42 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "32" + } + ]] + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 45, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 24, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ] + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 46, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 47, + "parent_pointer" : 45, + "source_range" : [ + { + "line" : 24, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 46, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["VarDecl" , [ + { + "pointer" : 48, + "source_range" : [ + { + "line" : 25, + "column" : 3 + }, + { + "column" : 24 + } + ], + "access" : "Public" + }, + { + "name" : "b", + "qual_name" : [ + "b", + "B" + ] + }, + { + "type_ptr" : 42, + "is_const" : true + }, + { + "is_global" : true, + "is_static" : true, + "is_static_data_member" : true, + "is_init_ice" : true, + "init_expr" : ["IntegerLiteral" , [ + { + "pointer" : 49, + "source_range" : [ + { + "column" : 24 + }, + { + "column" : 24 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 42 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "52" + } + ]] + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 45, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 50, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 51, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/struct.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 11 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 101 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 102 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 105 + } + ]], + ["ComplexType" , [ + { + "pointer" : 106 + } + ]], + ["ComplexType" , [ + { + "pointer" : 107 + } + ]], + ["ComplexType" , [ + { + "pointer" : 108 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 109 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 110 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 112 + }, + { + "type_ptr" : 52 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 115 + }, + 116 + ]], + ["PointerType" , [ + { + "pointer" : 117 + }, + { + "type_ptr" : 42, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 118 + }, + { + "type_ptr" : 54, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 119 + }, + { + "type_ptr" : 54 + } + ]], + ["RecordType" , [ + { + "pointer" : 120 + }, + 121 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 122 + }, + { + "element_type" : { + "type_ptr" : 120 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 18 + }, + 17 + ]], + ["FunctionProtoType" , [ + { + "pointer" : 123 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 26 + }, + { + "type_ptr" : 18, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 124 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 30 + }, + { + "type_ptr" : 18 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 125 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 30 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 28 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 30 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 21 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 39 + }, + 38 + ]], + ["RecordType" , [ + { + "pointer" : 46 + }, + 45 + ]], + ["ObjCObjectType" , [ + { + "pointer" : 126 + }, + { + "base_type" : 109 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 127 + }, + { + "type_ptr" : 126 + } + ]], + ["TypedefType" , [ + { + "pointer" : 128, + "desugared_type" : 127 + }, + { + "child_type" : { + "type_ptr" : 127 + }, + "decl_ptr" : 129 + } + ]], + ["TypedefType" , [ + { + "pointer" : 51, + "desugared_type" : 127 + }, + { + "child_type" : { + "type_ptr" : 128 + }, + "decl_ptr" : 50 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/template_instantiations.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/template_instantiations.cpp.exp new file mode 100644 index 000000000..9b1afcdc1 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/template_instantiations.cpp.exp @@ -0,0 +1,5557 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/template_instantiations.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 15 + } + ] + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 15 + } + ] + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple" + ] + }, + 9, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + }, + "2296961816144140105", + { + "template_decl" : 7, + "specialization_args" : [ + ["Pack" , [ + ["Type" , { + "type_ptr" : 10 + }] + ]] + ] + } + ]], + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 11, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 15 + } + ] + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple >" + ] + }, + 12, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 13, + "parent_pointer" : 11, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + 12, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 11 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 14, + "parent_pointer" : 11, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "16263929779680628849", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 14, + "body" : ["CompoundStmt" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 17, + "parent_pointer" : 11, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "11014497521477142187", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 21, + "parent_pointer" : 11, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + { + "type_ptr" : 22 + }, + { + "mangled_name" : "15031955784438883279", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 23, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 24 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 11, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "8342447397680512296", + { + "template_decl" : 7, + "specialization_args" : [ + ["Pack" , [ + ["Type" , { + "type_ptr" : 9 + }] + ]] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 25, + "source_range" : [ + { + "line" : 10, + "column" : 1 + }, + { + "column" : 19 + } + ] + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 26 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 27, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 26 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 14, + "name" : { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 28, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "column" : 27 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "nullptr_t", + "qual_name" : [ + "nullptr_t" + ] + }, + 29, + { + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 30, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 14, + "column" : 25 + } + ] + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 14, + "column" : 25 + } + ] + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate" + ] + }, + 32, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 33, + "parent_pointer" : 31, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + 32, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 31 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 34, + "parent_pointer" : 31, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "10023818314310534501", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 34, + "body" : ["CompoundStmt" , [ + { + "pointer" : 35, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 36, + "parent_pointer" : 31, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "11471169980769644070", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 39 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 31, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + { + "type_ptr" : 41 + }, + { + "mangled_name" : "11154857410366551354", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 31, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "11141543725649308068", + { + "template_decl" : 30, + "specialization_args" : [ + "NullPtr" + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 44, + "source_range" : [ + { + "line" : 16, + "column" : 1 + }, + { + "column" : 26 + } + ] + }, + { + "name" : "x1", + "qual_name" : [ + "x1" + ] + }, + { + "type_ptr" : 45 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 46, + "source_range" : [ + { + "column" : 26 + }, + { + "column" : 26 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 45 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 34, + "name" : { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 47, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "line" : 19, + "column" : 21 + } + ] + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "line" : 19, + "column" : 21 + } + ] + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate<0>" + ] + }, + 49, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 50, + "parent_pointer" : 48, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + 49, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 48 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 51, + "parent_pointer" : 48, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "1478228132453016226", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 51, + "body" : ["CompoundStmt" , [ + { + "pointer" : 52, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 53, + "parent_pointer" : 48, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + { + "type_ptr" : 54 + }, + { + "mangled_name" : "11043804702208708385", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 55, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 56 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 57, + "parent_pointer" : 48, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + { + "type_ptr" : 58 + }, + { + "mangled_name" : "5185260157533638819", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 60 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 48, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "18441911275316219119", + { + "template_decl" : 47, + "specialization_args" : [ + ["Integral" , "0"] + ] + } + ]] + ] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 61, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "line" : 22, + "column" : 22 + } + ] + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 62, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 21, + "column" : 1 + }, + { + "line" : 22, + "column" : 22 + } + ] + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate<'c'>" + ] + }, + 63, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 64, + "parent_pointer" : 62, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + 63, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 62 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 65, + "parent_pointer" : 62, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "16225353893069217924", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 65, + "body" : ["CompoundStmt" , [ + { + "pointer" : 66, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 67, + "parent_pointer" : 62, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + { + "type_ptr" : 68 + }, + { + "mangled_name" : "16636418989297388895", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 69, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 70 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 71, + "parent_pointer" : 62, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + { + "type_ptr" : 72 + }, + { + "mangled_name" : "2774670671732909065", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 73, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 74 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 62, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "7893038887469539829", + { + "template_decl" : 61, + "specialization_args" : [ + ["Integral" , "99"] + ] + } + ]] + ] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 75, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "line" : 24, + "column" : 22 + } + ] + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 76, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 23, + "column" : 1 + }, + { + "line" : 24, + "column" : 22 + } + ] + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate<78187493520>" + ] + }, + 77, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 78, + "parent_pointer" : 76, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + 77, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 76 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 79, + "parent_pointer" : 76, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "16125716847522929195", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 79, + "body" : ["CompoundStmt" , [ + { + "pointer" : 80, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 81, + "parent_pointer" : 76, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + { + "type_ptr" : 82 + }, + { + "mangled_name" : "5156418638880841616", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 83, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 84 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 85, + "parent_pointer" : 76, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + { + "type_ptr" : 86 + }, + { + "mangled_name" : "18073023600850944380", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 87, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 88 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 76, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "6282617124311682814", + { + "template_decl" : 75, + "specialization_args" : [ + ["Integral" , "78187493520"] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 89, + "source_range" : [ + { + "line" : 26, + "column" : 1 + }, + { + "column" : 16 + } + ] + }, + { + "name" : "x2", + "qual_name" : [ + "x2" + ] + }, + { + "type_ptr" : 90 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 91, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 90 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 51, + "name" : { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 92, + "source_range" : [ + { + "line" : 27, + "column" : 1 + }, + { + "column" : 19 + } + ] + }, + { + "name" : "x3", + "qual_name" : [ + "x3" + ] + }, + { + "type_ptr" : 93 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 94, + "source_range" : [ + { + "column" : 19 + }, + { + "column" : 19 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 93 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 65, + "name" : { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 95, + "source_range" : [ + { + "line" : 28, + "column" : 1 + }, + { + "column" : 29 + } + ] + }, + { + "name" : "x4", + "qual_name" : [ + "x4" + ] + }, + { + "type_ptr" : 96 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 97, + "source_range" : [ + { + "column" : 29 + }, + { + "column" : 29 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 96 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 79, + "name" : { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 98, + "source_range" : [ + { + "line" : 30, + "column" : 1 + }, + { + "line" : 31, + "column" : 11 + } + ] + }, + { + "name" : "X", + "qual_name" : [ + "X" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 99, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 30, + "column" : 1 + }, + { + "line" : 31, + "column" : 11 + } + ] + }, + { + "name" : "X", + "qual_name" : [ + "X<&x5>" + ] + }, + 100, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 101, + "parent_pointer" : 99, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + 100, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 99 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 102, + "parent_pointer" : 99, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "8438636393447290261", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 102, + "body" : ["CompoundStmt" , [ + { + "pointer" : 103, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 104, + "parent_pointer" : 99, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + { + "type_ptr" : 105 + }, + { + "mangled_name" : "304459608885830774", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 106, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 107 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 108, + "parent_pointer" : 99, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + { + "type_ptr" : 109 + }, + { + "mangled_name" : "5555169503117312650", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 110, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 111 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 99, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "92945586264616176", + { + "template_decl" : 98, + "specialization_args" : [ + ["Declaration" , 112] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 112, + "source_range" : [ + { + "line" : 32, + "column" : 1 + }, + { + "column" : 10 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x5", + "qual_name" : [ + "x5" + ] + }, + { + "type_ptr" : 113 + }, + { + "is_global" : true + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 114, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 34, + "column" : 1 + }, + { + "column" : 11 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + 115, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 116, + "parent_pointer" : 114, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + 115, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 117, + "parent_pointer" : 114, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "14898916407379161639", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 117, + "body" : ["CompoundStmt" , [ + { + "pointer" : 118, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 119, + "parent_pointer" : 114, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 120 + }, + { + "mangled_name" : "7125450473324676530", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 121, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 122 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 123, + "parent_pointer" : 114, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 124 + }, + { + "mangled_name" : "3069361207223136310", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 125, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 126 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 114, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 127, + "source_range" : [ + { + "line" : 35, + "column" : 1 + }, + { + "line" : 36, + "column" : 11 + } + ] + }, + { + "name" : "Z", + "qual_name" : [ + "Z" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 128, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 35, + "column" : 1 + }, + { + "line" : 36, + "column" : 11 + } + ] + }, + { + "name" : "Z", + "qual_name" : [ + "Z<&y>" + ] + }, + 129, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 130, + "parent_pointer" : 128, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + 129, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 128 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 131, + "parent_pointer" : 128, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "2247315131692507250", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 131, + "body" : ["CompoundStmt" , [ + { + "pointer" : 132, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 133, + "parent_pointer" : 128, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + { + "type_ptr" : 134 + }, + { + "mangled_name" : "7738251501016099665", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 135, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 136 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 137, + "parent_pointer" : 128, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + { + "type_ptr" : 138 + }, + { + "mangled_name" : "15832834678910379731", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 139, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 140 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 128, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "4282980438553401163", + { + "template_decl" : 127, + "specialization_args" : [ + ["Declaration" , 141] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 141, + "source_range" : [ + { + "line" : 37, + "column" : 1 + }, + { + "column" : 3 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 115 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 142, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 115 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 117, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 143, + "source_range" : [ + { + "line" : 39, + "column" : 1 + }, + { + "line" : 40, + "column" : 11 + } + ] + }, + { + "name" : "W", + "qual_name" : [ + "W" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 144, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 39, + "column" : 1 + }, + { + "line" : 40, + "column" : 11 + } + ] + }, + { + "name" : "W", + "qual_name" : [ + "W<&b>" + ] + }, + 145, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 146, + "parent_pointer" : 144, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + 145, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 144 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 147, + "parent_pointer" : 144, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "7772438286950717212", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 147, + "body" : ["CompoundStmt" , [ + { + "pointer" : 148, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 149, + "parent_pointer" : 144, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + { + "type_ptr" : 150 + }, + { + "mangled_name" : "10597356402107300951", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 151, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 152 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 153, + "parent_pointer" : 144, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + { + "type_ptr" : 154 + }, + { + "mangled_name" : "9048930144420503889", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 155, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 156 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 144, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "632323835311287041", + { + "template_decl" : 143, + "specialization_args" : [ + ["Declaration" , 157] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 157, + "source_range" : [ + { + "line" : 41, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 158 + }, + { + "is_global" : true + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 159, + "source_range" : [ + { + "line" : 43, + "column" : 1 + }, + { + "column" : 11 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 160 + }, + { + "mangled_name" : "4928047469659938654", + "is_cpp" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 161, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 162, + "source_range" : [ + { + "line" : 44, + "column" : 1 + }, + { + "line" : 45, + "column" : 11 + } + ] + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + { + "specializations" : [ + ["ClassTemplateSpecializationDecl" , [ + { + "pointer" : 163, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 44, + "column" : 1 + }, + { + "line" : 45, + "column" : 11 + } + ] + }, + { + "name" : "A", + "qual_name" : [ + "A<&f>" + ] + }, + 164, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 165, + "parent_pointer" : 163, + "source_range" : [ + { + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + 164, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 163 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 166, + "parent_pointer" : 163, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "3658993291457928989", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 166, + "body" : ["CompoundStmt" , [ + { + "pointer" : 167, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 168, + "parent_pointer" : 163, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + { + "type_ptr" : 169 + }, + { + "mangled_name" : "18252192508176638302", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 170, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 171 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 172, + "parent_pointer" : 163, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + { + "type_ptr" : 173 + }, + { + "mangled_name" : "9481628931273708930", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 174, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 175 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 163, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "6648620333758562824", + { + "template_decl" : 162, + "specialization_args" : [ + ["Declaration" , 159] + ] + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 176, + "source_range" : [ + { + "line" : 47, + "column" : 1 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "xi", + "qual_name" : [ + "xi" + ] + }, + { + "type_ptr" : 177 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 178, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 177 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 102, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 179, + "source_range" : [ + { + "line" : 48, + "column" : 1 + }, + { + "column" : 6 + } + ] + }, + { + "name" : "z", + "qual_name" : [ + "z" + ] + }, + { + "type_ptr" : 180 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 181, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 6 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 180 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 131, + "name" : { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 182, + "source_range" : [ + { + "line" : 49, + "column" : 1 + }, + { + "column" : 6 + } + ] + }, + { + "name" : "w", + "qual_name" : [ + "w" + ] + }, + { + "type_ptr" : 183 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 184, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 6 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 183 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 147, + "name" : { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 185, + "source_range" : [ + { + "line" : 50, + "column" : 1 + }, + { + "column" : 7 + } + ] + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 186 + }, + { + "is_global" : true, + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 187, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 7 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 186 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 166, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 188, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 189, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/template_instantiations.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 190 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 191 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 192 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 193 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 194 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 10 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 195 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 196 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 197 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 198 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 199 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 200 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 201 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 202 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 203 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 204 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 205 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 206 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 207 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 208 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 209 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 210 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 211 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 212 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 213 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 214 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 215 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 216 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 217 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 218 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 219 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 220 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 221 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 222 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 223 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 224 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 225 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 226 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 227 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 228 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 229 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 230 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 231 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 232 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 233 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 234 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 235 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 236 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 237 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 238 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 239 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 240 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 241 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 242 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 243 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 244 + } + ]], + ["ComplexType" , [ + { + "pointer" : 245 + } + ]], + ["ComplexType" , [ + { + "pointer" : 246 + } + ]], + ["ComplexType" , [ + { + "pointer" : 247 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 248 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 249 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 250 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 251 + }, + { + "type_ptr" : 190 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 252 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 253 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 254 + }, + 255 + ]], + ["PointerType" , [ + { + "pointer" : 256 + }, + { + "type_ptr" : 10, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 257 + }, + { + "type_ptr" : 192, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 258 + }, + { + "type_ptr" : 192 + } + ]], + ["RecordType" , [ + { + "pointer" : 259 + }, + 260 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 261 + }, + { + "element_type" : { + "type_ptr" : 259 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 262 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 263 + } + ]], + ["PackExpansionType" , [ + { + "pointer" : 264 + } + ]], + ["PackExpansionType" , [ + { + "pointer" : 265 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 266 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 267 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 268 + } + ]], + ["RecordType" , [ + { + "pointer" : 9 + }, + 8 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 269, + "desugared_type" : 9 + } + ]], + ["RecordType" , [ + { + "pointer" : 12 + }, + 11 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 26, + "desugared_type" : 12 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 270 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 271 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 20 + }, + { + "type_ptr" : 12, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 272 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 24 + }, + { + "type_ptr" : 12 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 273 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 24 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 22 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 24 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["DecltypeType" , [ + { + "pointer" : 274, + "desugared_type" : 252 + }, + { + "type_ptr" : 252 + } + ]], + ["TypedefType" , [ + { + "pointer" : 29, + "desugared_type" : 252 + }, + { + "child_type" : { + "type_ptr" : 274 + }, + "decl_ptr" : 28 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 275 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 276 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 277 + } + ]], + ["RecordType" , [ + { + "pointer" : 32 + }, + 31 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 45, + "desugared_type" : 32 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 278 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 39 + }, + { + "type_ptr" : 32, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 279 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 43 + }, + { + "type_ptr" : 32 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 280 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 43 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 41 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 43 + } + ] + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 281 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 282 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 283 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 284 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 285 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 286 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 287 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 288 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 289 + } + ]], + ["RecordType" , [ + { + "pointer" : 49 + }, + 48 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 90, + "desugared_type" : 49 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 290 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 56 + }, + { + "type_ptr" : 49, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 291 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 56 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 54 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 56 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 60 + }, + { + "type_ptr" : 49 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 292 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 60 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 58 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 60 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 63 + }, + 62 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 93, + "desugared_type" : 63 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 293 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 70 + }, + { + "type_ptr" : 63, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 294 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 70 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 68 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 70 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 74 + }, + { + "type_ptr" : 63 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 295 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 74 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 72 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 74 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 77 + }, + 76 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 96, + "desugared_type" : 77 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 296 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 84 + }, + { + "type_ptr" : 77, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 297 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 84 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 82 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 84 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 88 + }, + { + "type_ptr" : 77 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 298 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 88 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 86 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 88 + } + ] + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 299 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 300 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 301 + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 113 + }, + { + "element_type" : { + "type_ptr" : 10 + }, + "stride" : 4 + }, + 42 + ]], + ["RecordType" , [ + { + "pointer" : 115 + }, + 114 + ]], + ["LValueReferenceType" , [ + { + "pointer" : 122 + }, + { + "type_ptr" : 115, + "is_const" : true + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 302 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 303 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 304 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 305 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 306 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 122 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 120 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 122 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 126 + }, + { + "type_ptr" : 115 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 307 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 126 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 124 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 126 + } + ] + } + ]], + ["ConstantArrayType" , [ + { + "pointer" : 158 + }, + { + "element_type" : { + "type_ptr" : 10 + }, + "stride" : 4 + }, + 5 + ]], + ["ParenType" , [ + { + "pointer" : 308, + "desugared_type" : 158 + }, + { + "type_ptr" : 158 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 309 + }, + { + "type_ptr" : 158 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 310 + }, + { + "type_ptr" : 308 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 311 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 312 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 313 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 160 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + } + ] + } + ]], + ["ParenType" , [ + { + "pointer" : 314, + "desugared_type" : 160 + }, + { + "type_ptr" : 160 + } + ]], + ["PointerType" , [ + { + "pointer" : 315 + }, + { + "type_ptr" : 160 + } + ]], + ["PointerType" , [ + { + "pointer" : 316 + }, + { + "type_ptr" : 314 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 317 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 318 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 319 + } + ]], + ["PointerType" , [ + { + "pointer" : 320 + }, + { + "type_ptr" : 10 + } + ]], + ["RecordType" , [ + { + "pointer" : 100 + }, + 99 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 177, + "desugared_type" : 100 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 321 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 107 + }, + { + "type_ptr" : 100, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 322 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 107 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 105 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 107 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 111 + }, + { + "type_ptr" : 100 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 323 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 111 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 109 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 111 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 129 + }, + 128 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 180, + "desugared_type" : 129 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 324 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 136 + }, + { + "type_ptr" : 129, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 325 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 136 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 134 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 136 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 140 + }, + { + "type_ptr" : 129 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 326 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 140 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 138 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 140 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 145 + }, + 144 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 183, + "desugared_type" : 145 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 327 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 152 + }, + { + "type_ptr" : 145, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 328 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 152 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 150 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 152 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 156 + }, + { + "type_ptr" : 145 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 329 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 156 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 154 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 156 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 164 + }, + 163 + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 186, + "desugared_type" : 164 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 330 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 171 + }, + { + "type_ptr" : 164, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 331 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 171 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 169 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 171 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 175 + }, + { + "type_ptr" : 164 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 332 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 175 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 173 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 175 + } + ] + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 333 + }, + { + "base_type" : 248 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 334 + }, + { + "type_ptr" : 333 + } + ]], + ["TypedefType" , [ + { + "pointer" : 335, + "desugared_type" : 334 + }, + { + "child_type" : { + "type_ptr" : 334 + }, + "decl_ptr" : 336 + } + ]], + ["TypedefType" , [ + { + "pointer" : 189, + "desugared_type" : 334 + }, + { + "child_type" : { + "type_ptr" : 335 + }, + "decl_ptr" : 188 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/this.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/this.cpp.exp new file mode 100644 index 000000000..5b128d533 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/this.cpp.exp @@ -0,0 +1,925 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/this.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ] + }, + { + "name" : "T", + "qual_name" : [ + "T" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 7 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "T", + "qual_name" : [ + "T", + "T" + ] + }, + 8, + [ + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["FieldDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_this_declaration_referenced" : true, + "access" : "Private" + }, + { + "name" : "age", + "qual_name" : [ + "age", + "T" + ] + }, + { + "type_ptr" : 11 + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 12, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 31 + } + ], + "access" : "Private" + }, + { + "name" : "foo", + "qual_name" : [ + "foo", + "T" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "8720790958451117971", + "is_cpp" : true, + "decl_ptr_with_body" : 12, + "body" : ["CompoundStmt" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 14 + }, + { + "column" : 31 + } + ] + }, + [ + ["BinaryOperator" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 28 + } + ] + }, + [ + ["MemberExpr" , [ + { + "pointer" : 16, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 22 + } + ] + }, + [ + ["CXXThisExpr" , [ + { + "pointer" : 17, + "source_range" : [ + { + "column" : 16 + }, + { + "column" : 16 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "age", + "qual_name" : [ + "age", + "T" + ] + }, + "decl_ref" : { + "kind" : "Field", + "decl_pointer" : 10, + "name" : { + "name" : "age", + "qual_name" : [ + "age", + "T" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]], + ["IntegerLiteral" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 28 + }, + { + "column" : 28 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : "LValue" + }, + { + "kind" : "Assign" + } + ]] + ] + ]] + }, + { + } + ]] + ], + { + }, + "TTK_Class", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 20, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/this.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 11 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 76 + } + ]], + ["ComplexType" , [ + { + "pointer" : 77 + } + ]], + ["ComplexType" , [ + { + "pointer" : 78 + } + ]], + ["ComplexType" , [ + { + "pointer" : 79 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 83 + }, + { + "type_ptr" : 22 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 86 + }, + 87 + ]], + ["PointerType" , [ + { + "pointer" : 88 + }, + { + "type_ptr" : 11, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 89 + }, + { + "type_ptr" : 24, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 90 + }, + { + "type_ptr" : 24 + } + ]], + ["RecordType" , [ + { + "pointer" : 91 + }, + 92 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 93 + }, + { + "element_type" : { + "type_ptr" : 91 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 18 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 13 + }, + { + "return_type" : { + "type_ptr" : 22 + } + }, + { + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 94 + }, + { + "base_type" : 80 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 95 + }, + { + "type_ptr" : 94 + } + ]], + ["TypedefType" , [ + { + "pointer" : 96, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 95 + }, + "decl_ptr" : 97 + } + ]], + ["TypedefType" , [ + { + "pointer" : 21, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 96 + }, + "decl_ptr" : 20 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/type_trait.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/type_trait.cpp.exp new file mode 100644 index 000000000..b6961c4a2 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/type_trait.cpp.exp @@ -0,0 +1,1548 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/type_trait.cpp", + "line" : 8, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "X", + "qual_name" : [ + "X" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 21 + } + ], + "access" : "Public" + }, + { + "name" : "f", + "qual_name" : [ + "f", + "X" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "3303503544906841191", + "is_cpp" : true, + "decl_ptr_with_body" : 10, + "body" : ["CompoundStmt" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 20 + }, + { + "column" : 21 + } + ] + }, + [ + ] + ]] + }, + { + "is_virtual" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 13, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "3547081667308014059", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 16 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 17, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "13578800157532850793", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 19, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 21, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + { + "type_ptr" : 22 + }, + { + "mangled_name" : "9850251229546392500", + "is_cpp" : true, + "is_inline" : true + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 21, + "name" : { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + ]], + ["FunctionTemplateDecl" , [ + { + "pointer" : 23, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ] + }, + { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + { + "specializations" : [ + ["FunctionDecl" , [ + { + "pointer" : 24, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "6359398518495646991", + "is_cpp" : true, + "decl_ptr_with_body" : 24, + "body" : ["CompoundStmt" , [ + { + "pointer" : 26, + "source_range" : [ + { + "line" : 13, + "column" : 15 + }, + { + "line" : 15, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 27, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 20 + } + ] + }, + [ + ["TypeTraitExpr" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "value" : true + } + ]] + ] + ]] + ] + ]], + "template_specialization" : { + "template_decl" : 23, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 30 + }] + ] + } + } + ]], + ["FunctionDecl" , [ + { + "pointer" : 31, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "6727385578282590887", + "is_cpp" : true, + "decl_ptr_with_body" : 31, + "body" : ["CompoundStmt" , [ + { + "pointer" : 32, + "source_range" : [ + { + "line" : 13, + "column" : 15 + }, + { + "line" : 15, + "column" : 1 + } + ] + }, + [ + ["ReturnStmt" , [ + { + "pointer" : 33, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 20 + } + ] + }, + [ + ["TypeTraitExpr" , [ + { + "pointer" : 34, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + } + ]] + ] + ]] + ] + ]], + "template_specialization" : { + "template_decl" : 23, + "specialization_args" : [ + ["Type" , { + "type_ptr" : 8 + }] + ] + } + } + ]] + ] + } + ]], + ["VarDecl" , [ + { + "pointer" : 35, + "source_range" : [ + { + "line" : 17, + "column" : 1 + }, + { + "column" : 22 + } + ] + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 29 + }, + { + "is_global" : true, + "init_expr" : ["CallExpr" , [ + { + "pointer" : 36, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 22 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 37, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 20 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 38, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 20 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 24, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "found_decl_ref" : { + "kind" : "FunctionTemplate", + "decl_pointer" : 23, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 39 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 29 + } + } + ]] + } + ]], + ["VarDecl" , [ + { + "pointer" : 40, + "source_range" : [ + { + "line" : 18, + "column" : 1 + }, + { + "column" : 20 + } + ] + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 29 + }, + { + "is_global" : true, + "init_expr" : ["CallExpr" , [ + { + "pointer" : 41, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 20 + } + ] + }, + [ + ["ImplicitCastExpr" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 18 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 43, + "source_range" : [ + { + "column" : 10 + }, + { + "column" : 18 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Function", + "decl_pointer" : 31, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "found_decl_ref" : { + "kind" : "FunctionTemplate", + "decl_pointer" : 23, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 39 + } + }, + { + "cast_kind" : "FunctionToPointerDecay", + "base_path" : [ + ] + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 29 + } + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 44, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 45, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/type_trait.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 99 + } + ]], + ["ComplexType" , [ + { + "pointer" : 100 + } + ]], + ["ComplexType" , [ + { + "pointer" : 101 + } + ]], + ["ComplexType" , [ + { + "pointer" : 102 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 106 + }, + { + "type_ptr" : 46 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 109 + }, + 110 + ]], + ["PointerType" , [ + { + "pointer" : 111 + }, + { + "type_ptr" : 30, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 112 + }, + { + "type_ptr" : 47, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 113 + }, + { + "type_ptr" : 47 + } + ]], + ["RecordType" , [ + { + "pointer" : 114 + }, + 115 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 116 + }, + { + "element_type" : { + "type_ptr" : 114 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 117 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 46 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 118 + }, + { + "type_ptr" : 8 + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 16 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 119 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + ]], + ["RValueReferenceType" , [ + { + "pointer" : 20 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 120 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 22 + }, + { + "return_type" : { + "type_ptr" : 46 + } + }, + { + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 121 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 122 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 25 + }, + { + "return_type" : { + "type_ptr" : 29 + } + }, + { + } + ]], + ["PointerType" , [ + { + "pointer" : 39 + }, + { + "type_ptr" : 25 + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 123, + "desugared_type" : 30 + } + ]], + ["SubstTemplateTypeParmType" , [ + { + "pointer" : 124, + "desugared_type" : 8 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 125 + }, + { + "base_type" : 103 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 126 + }, + { + "type_ptr" : 125 + } + ]], + ["TypedefType" , [ + { + "pointer" : 127, + "desugared_type" : 126 + }, + { + "child_type" : { + "type_ptr" : 126 + }, + "decl_ptr" : 128 + } + ]], + ["TypedefType" , [ + { + "pointer" : 45, + "desugared_type" : 126 + }, + { + "child_type" : { + "type_ptr" : 127 + }, + "decl_ptr" : 44 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/unresolved_lookup.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/unresolved_lookup.cpp.exp new file mode 100644 index 000000000..250d7ba89 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/unresolved_lookup.cpp.exp @@ -0,0 +1,760 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["ClassTemplateDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/unresolved_lookup.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 12, + "column" : 1 + } + ] + }, + { + "name" : "S", + "qual_name" : [ + "S" + ] + }, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 9, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/unresolved_lookup.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 10 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 11 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 12 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 13 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 14 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 15 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 16 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 17 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 65 + } + ]], + ["ComplexType" , [ + { + "pointer" : 66 + } + ]], + ["ComplexType" , [ + { + "pointer" : 67 + } + ]], + ["ComplexType" , [ + { + "pointer" : 68 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 72 + }, + { + "type_ptr" : 10 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 75 + }, + 76 + ]], + ["PointerType" , [ + { + "pointer" : 77 + }, + { + "type_ptr" : 15, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 78 + }, + { + "type_ptr" : 12, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 79 + }, + { + "type_ptr" : 12 + } + ]], + ["RecordType" , [ + { + "pointer" : 80 + }, + 81 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 82 + }, + { + "element_type" : { + "type_ptr" : 80 + }, + "stride" : 24 + }, + 1 + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 83 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 84 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 85 + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 86 + } + ]], + ["InjectedClassNameType" , [ + { + "pointer" : 87 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 88 + } + ]], + ["TemplateTypeParmType" , [ + { + "pointer" : 89 + } + ]], + ["PointerType" , [ + { + "pointer" : 90 + }, + { + "type_ptr" : 88 + } + ]], + ["PointerType" , [ + { + "pointer" : 91 + }, + { + "type_ptr" : 89 + } + ]], + ["PointerType" , [ + { + "pointer" : 92 + }, + { + "type_ptr" : 87 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 93 + }, + { + "return_type" : { + "type_ptr" : 15 + } + }, + { + "params_type" : [ + { + "type_ptr" : 90 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 94 + }, + { + "return_type" : { + "type_ptr" : 15 + } + }, + { + "params_type" : [ + { + "type_ptr" : 91 + } + ] + } + ]], + ["TemplateSpecializationType" , [ + { + "pointer" : 95, + "desugared_type" : 87 + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 96 + }, + { + "base_type" : 69 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 97 + }, + { + "type_ptr" : 96 + } + ]], + ["TypedefType" , [ + { + "pointer" : 98, + "desugared_type" : 97 + }, + { + "child_type" : { + "type_ptr" : 97 + }, + "decl_ptr" : 99 + } + ]], + ["TypedefType" , [ + { + "pointer" : 9, + "desugared_type" : 97 + }, + { + "child_type" : { + "type_ptr" : 98 + }, + "decl_ptr" : 8 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/using_directive.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/using_directive.cpp.exp new file mode 100644 index 000000000..7d4335663 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/using_directive.cpp.exp @@ -0,0 +1,920 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["NamespaceDecl" , [ + { + "pointer" : 7, + "source_range" : [ + { + "file" : "tests/using_directive.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ] + }, + { + "name" : "nsa", + "qual_name" : [ + "nsa" + ] + }, + [ + ["NamespaceDecl" , [ + { + "pointer" : 8, + "source_range" : [ + { + "line" : 8, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ] + }, + { + "name" : "nsb", + "qual_name" : [ + "nsb", + "nsa" + ] + }, + [ + ["VarDecl" , [ + { + "pointer" : 9, + "source_range" : [ + { + "line" : 9, + "column" : 1 + }, + { + "column" : 5 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a", + "nsb", + "nsa" + ] + }, + { + "type_ptr" : 10 + }, + { + "is_global" : true + } + ]] + ], + { + }, + { + } + ]] + ], + { + }, + { + } + ]], + ["UsingDirectiveDecl" , [ + { + "pointer" : 11, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "column" : 22 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "using_location" : { + "column" : 1 + }, + "namespace_key_location" : { + "column" : 7 + }, + "nested_name_specifier_locs" : [ + { + "kind" : "Namespace", + "ref" : { + "kind" : "Namespace", + "decl_pointer" : 7, + "name" : { + "name" : "nsa", + "qual_name" : [ + "nsa" + ] + } + } + } + ], + "nominated_namespace" : { + "kind" : "Namespace", + "decl_pointer" : 8, + "name" : { + "name" : "nsb", + "qual_name" : [ + "nsb", + "nsa" + ] + } + } + } + ]], + ["NamespaceAliasDecl" , [ + { + "pointer" : 12, + "source_range" : [ + { + "line" : 13, + "column" : 1 + }, + { + "column" : 20 + } + ] + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + { + "namespace_loc" : { + "column" : 1 + }, + "target_name_loc" : { + "column" : 20 + }, + "nested_name_specifier_locs" : [ + { + "kind" : "Namespace", + "ref" : { + "kind" : "Namespace", + "decl_pointer" : 7, + "name" : { + "name" : "nsa", + "qual_name" : [ + "nsa" + ] + } + } + } + ], + "namespace" : { + "kind" : "Namespace", + "decl_pointer" : 8, + "name" : { + "name" : "nsb", + "qual_name" : [ + "nsb", + "nsa" + ] + } + } + } + ]], + ["VarDecl" , [ + { + "pointer" : 13, + "source_range" : [ + { + "line" : 14, + "column" : 1 + }, + { + "column" : 9 + } + ] + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 10 + }, + { + "is_global" : true, + "init_expr" : ["ImplicitCastExpr" , [ + { + "pointer" : 14, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ["DeclRefExpr" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 9 + }, + { + "column" : 9 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : "LValue" + }, + { + "decl_ref" : { + "kind" : "Var", + "decl_pointer" : 9, + "name" : { + "name" : "a", + "qual_name" : [ + "a", + "nsb", + "nsa" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + ]] + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : "LValueToRValue", + "base_path" : [ + ] + } + ]] + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 16, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 17, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/using_directive.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 18 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 19 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 20 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 21 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 22 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 10 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 23 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 24 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 25 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 26 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 27 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 28 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 29 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 30 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 31 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 32 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 33 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 34 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 35 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 36 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 37 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 38 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 39 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 40 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 41 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 42 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 43 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 44 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 45 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 46 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 47 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 48 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 49 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 50 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 51 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 52 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 53 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 54 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 55 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 56 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 57 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 58 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 59 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 60 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 61 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 62 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 63 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 64 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 65 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 66 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 67 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 68 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 69 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 70 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 72 + } + ]], + ["ComplexType" , [ + { + "pointer" : 73 + } + ]], + ["ComplexType" , [ + { + "pointer" : 74 + } + ]], + ["ComplexType" , [ + { + "pointer" : 75 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 79 + }, + { + "type_ptr" : 18 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 82 + }, + 83 + ]], + ["PointerType" , [ + { + "pointer" : 84 + }, + { + "type_ptr" : 10, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 85 + }, + { + "type_ptr" : 20, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 86 + }, + { + "type_ptr" : 20 + } + ]], + ["RecordType" , [ + { + "pointer" : 87 + }, + 88 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 89 + }, + { + "element_type" : { + "type_ptr" : 87 + }, + "stride" : 24 + }, + 1 + ]], + ["ObjCObjectType" , [ + { + "pointer" : 90 + }, + { + "base_type" : 76 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 91 + }, + { + "type_ptr" : 90 + } + ]], + ["TypedefType" , [ + { + "pointer" : 92, + "desugared_type" : 91 + }, + { + "child_type" : { + "type_ptr" : 91 + }, + "decl_ptr" : 93 + } + ]], + ["TypedefType" , [ + { + "pointer" : 17, + "desugared_type" : 91 + }, + { + "child_type" : { + "type_ptr" : 92 + }, + "decl_ptr" : 16 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/JsonASTExporter/virtual_bases.cpp.exp b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/virtual_bases.cpp.exp new file mode 100644 index 000000000..6be9bc1c2 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/JsonASTExporter/virtual_bases.cpp.exp @@ -0,0 +1,2539 @@ +["TranslationUnitDecl" , [ + { + "pointer" : 1, + "source_range" : [ + { + }, + { + } + ] + }, + [ + ["TypedefDecl" , [ + { + "pointer" : 2, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 3, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 4, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 5, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 6, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : [ + { + "file" : "tests/virtual_bases.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 8, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 8, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 8, + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "14779025497907219583", + "is_cpp" : true, + "decl_ptr_with_body" : 10, + "body" : ["CompoundStmt" , [ + { + "pointer" : 12, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 7 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 13, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 9, + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "5328378654181921475", + "is_cpp" : true, + "decl_ptr_with_body" : 13, + "body" : ["CompoundStmt" , [ + { + "pointer" : 15, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 16, + "parent_pointer" : 7, + "source_range" : [ + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 17 + }, + { + "mangled_name" : "3430056695640597274", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 18, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 19 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 20, + "parent_pointer" : 7, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "A" + ] + }, + { + "type_ptr" : 21 + }, + { + "mangled_name" : "4916027756641681778", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 22, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 19 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 13, + "name" : { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 14 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 23, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 24, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 25, + "parent_pointer" : 23, + "source_range" : [ + { + "line" : 12, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 24, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 26, + "parent_pointer" : 23, + "source_range" : [ + { + "line" : 13, + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "10798876524598897542", + "is_cpp" : true, + "decl_ptr_with_body" : 26, + "body" : ["CompoundStmt" , [ + { + "pointer" : 27, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 7 + } + ] + }, + [ + ] + ]] + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : ["BaseClass" , [ + 8, + true + ]], + "source_range" : [ + { + }, + { + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 28, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 10, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + } + ] + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 29, + "parent_pointer" : 23, + "source_range" : [ + { + "line" : 14, + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~B", + "qual_name" : [ + "~B", + "B" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "7876366742276079110", + "is_cpp" : true, + "decl_ptr_with_body" : 29, + "body" : ["CompoundStmt" , [ + { + "pointer" : 30, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 31, + "parent_pointer" : 23, + "source_range" : [ + { + "line" : 12, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 32 + }, + { + "mangled_name" : "7710293714478488613", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 33, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 34 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 35, + "parent_pointer" : 23, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "B" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "12683202677887858481", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 37, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 34 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 23, + "is_complete_definition" : true + }, + { + "vbases" : [ + 8 + ], + "transitive_vbases" : [ + 8 + ], + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 29, + "name" : { + "name" : "~B", + "qual_name" : [ + "~B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 14 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 17, + "column" : 1 + }, + { + "line" : 20, + "column" : 1 + } + ], + "is_this_declaration_referenced" : true + }, + { + "name" : "C", + "qual_name" : [ + "C" + ] + }, + 39, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 40, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 17, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "C", + "qual_name" : [ + "C", + "C" + ] + }, + 39, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 41, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 18, + "column" : 3 + }, + { + "column" : 7 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "C", + "qual_name" : [ + "C", + "C" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "5740611327153041165", + "is_cpp" : true, + "decl_ptr_with_body" : 41, + "body" : ["CompoundStmt" , [ + { + "pointer" : 42, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 7 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 43, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 19, + "column" : 3 + }, + { + "column" : 8 + } + ], + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "~C", + "qual_name" : [ + "~C", + "C" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "8663121109475859597", + "is_cpp" : true, + "decl_ptr_with_body" : 43, + "body" : ["CompoundStmt" , [ + { + "pointer" : 44, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 45, + "parent_pointer" : 38, + "source_range" : [ + { + "line" : 17, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "C", + "qual_name" : [ + "C", + "C" + ] + }, + { + "type_ptr" : 46 + }, + { + "mangled_name" : "13331393607183256536", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 47, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 48 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + "is_constexpr" : true + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 49, + "parent_pointer" : 38, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "C" + ] + }, + { + "type_ptr" : 50 + }, + { + "mangled_name" : "2982129361942595904", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 51, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 48 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 38, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 43, + "name" : { + "name" : "~C", + "qual_name" : [ + "~C", + "C" + ] + }, + "qual_type" : { + "type_ptr" : 14 + } + } + } + ]], + ["CXXRecordDecl" , [ + { + "pointer" : 52, + "parent_pointer" : 1, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "line" : 25, + "column" : 1 + } + ] + }, + { + "name" : "E", + "qual_name" : [ + "E" + ] + }, + 53, + [ + ["CXXRecordDecl" , [ + { + "pointer" : 54, + "parent_pointer" : 52, + "source_range" : [ + { + "line" : 22, + "column" : 1 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : "Public" + }, + { + "name" : "E", + "qual_name" : [ + "E", + "E" + ] + }, + 53, + [ + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 0 + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 55, + "parent_pointer" : 52, + "source_range" : [ + { + "line" : 23, + "column" : 3 + }, + { + "column" : 7 + } + ], + "access" : "Public" + }, + { + "name" : "E", + "qual_name" : [ + "E", + "E" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "7886195349376518403", + "is_cpp" : true, + "decl_ptr_with_body" : 55, + "body" : ["CompoundStmt" , [ + { + "pointer" : 56, + "source_range" : [ + { + "column" : 6 + }, + { + "column" : 7 + } + ] + }, + [ + ] + ]] + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : ["BaseClass" , [ + 8, + true + ]], + "source_range" : [ + { + }, + { + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 57, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 10, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + }, + { + "subject" : ["BaseClass" , [ + 39, + true + ]], + "source_range" : [ + { + }, + { + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 58, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 39 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 41, + "name" : { + "name" : "C", + "qual_name" : [ + "C", + "C" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + }, + { + "subject" : ["BaseClass" , [ + 24, + false + ]], + "source_range" : [ + { + }, + { + } + ], + "init_expr" : ["CXXConstructExpr" , [ + { + "pointer" : 59, + "source_range" : [ + { + "column" : 3 + }, + { + "column" : 3 + } + ] + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 24 + } + }, + { + "decl_ref" : { + "kind" : "CXXConstructor", + "decl_pointer" : 26, + "name" : { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + ]] + } + ] + } + ]], + ["CXXDestructorDecl" , [ + { + "pointer" : 60, + "parent_pointer" : 52, + "source_range" : [ + { + "line" : 24, + "column" : 3 + }, + { + "column" : 8 + } + ], + "access" : "Public" + }, + { + "name" : "~E", + "qual_name" : [ + "~E", + "E" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "2987579715549688623", + "is_cpp" : true, + "decl_ptr_with_body" : 60, + "body" : ["CompoundStmt" , [ + { + "pointer" : 61, + "source_range" : [ + { + "column" : 7 + }, + { + "column" : 8 + } + ] + }, + [ + ] + ]] + }, + { + } + ]], + ["CXXConstructorDecl" , [ + { + "pointer" : 62, + "parent_pointer" : 52, + "source_range" : [ + { + "line" : 22, + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "E", + "qual_name" : [ + "E", + "E" + ] + }, + { + "type_ptr" : 63 + }, + { + "mangled_name" : "13411848558695892246", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 64, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 65 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]], + ["CXXMethodDecl" , [ + { + "pointer" : 66, + "parent_pointer" : 52, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ], + "is_implicit" : true, + "access" : "Public" + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "E" + ] + }, + { + "type_ptr" : 67 + }, + { + "mangled_name" : "14000323037812966926", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + ["ParmVarDecl" , [ + { + "pointer" : 68, + "source_range" : [ + { + "column" : 8 + }, + { + "column" : 8 + } + ] + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 65 + }, + { + "parm_index_in_function" : 0 + } + ]] + ] + }, + { + } + ]] + ], + { + }, + "TTK_Struct", + { + "definition_ptr" : 52, + "is_complete_definition" : true + }, + { + "bases" : [ + 24 + ], + "vbases" : [ + 39 + ], + "transitive_vbases" : [ + 8, + 39 + ], + "destructor" : { + "kind" : "CXXDestructor", + "decl_pointer" : 60, + "name" : { + "name" : "~E", + "qual_name" : [ + "~E", + "E" + ] + }, + "qual_type" : { + "type_ptr" : 14 + } + } + } + ]], + ["TypedefDecl" , [ + { + "pointer" : 69, + "source_range" : [ + { + }, + { + } + ], + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 70, + { + } + ]] + ], + { + }, + { + "input_path" : "tests/virtual_bases.cpp", + "input_kind" : "IK_CXX", + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + ["BuiltinType" , [ + { + "pointer" : 71 + }, + "Void" + ]], + ["BuiltinType" , [ + { + "pointer" : 72 + }, + "Bool" + ]], + ["BuiltinType" , [ + { + "pointer" : 73 + }, + "Char_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 74 + }, + "SChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 75 + }, + "Short" + ]], + ["BuiltinType" , [ + { + "pointer" : 76 + }, + "Int" + ]], + ["BuiltinType" , [ + { + "pointer" : 77 + }, + "Long" + ]], + ["BuiltinType" , [ + { + "pointer" : 78 + }, + "LongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 79 + }, + "UChar" + ]], + ["BuiltinType" , [ + { + "pointer" : 80 + }, + "UShort" + ]], + ["BuiltinType" , [ + { + "pointer" : 81 + }, + "UInt" + ]], + ["BuiltinType" , [ + { + "pointer" : 82 + }, + "ULong" + ]], + ["BuiltinType" , [ + { + "pointer" : 83 + }, + "ULongLong" + ]], + ["BuiltinType" , [ + { + "pointer" : 84 + }, + "Float" + ]], + ["BuiltinType" , [ + { + "pointer" : 85 + }, + "Double" + ]], + ["BuiltinType" , [ + { + "pointer" : 86 + }, + "LongDouble" + ]], + ["BuiltinType" , [ + { + "pointer" : 87 + }, + "Float128" + ]], + ["BuiltinType" , [ + { + "pointer" : 88 + }, + "Float16" + ]], + ["BuiltinType" , [ + { + "pointer" : 89 + }, + "ShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 90 + }, + "Accum" + ]], + ["BuiltinType" , [ + { + "pointer" : 91 + }, + "LongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 92 + }, + "UShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 93 + }, + "UAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 94 + }, + "ULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 95 + }, + "ShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 96 + }, + "Fract" + ]], + ["BuiltinType" , [ + { + "pointer" : 97 + }, + "LongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 98 + }, + "UShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 99 + }, + "UFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 100 + }, + "ULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 101 + }, + "SatShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 102 + }, + "SatAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 103 + }, + "SatLongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 104 + }, + "SatUShortAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 105 + }, + "SatUAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 106 + }, + "SatULongAccum" + ]], + ["BuiltinType" , [ + { + "pointer" : 107 + }, + "SatShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 108 + }, + "SatFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 109 + }, + "SatLongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 110 + }, + "SatUShortFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 111 + }, + "SatUFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 112 + }, + "SatULongFract" + ]], + ["BuiltinType" , [ + { + "pointer" : 113 + }, + "Int128" + ]], + ["BuiltinType" , [ + { + "pointer" : 114 + }, + "UInt128" + ]], + ["BuiltinType" , [ + { + "pointer" : 115 + }, + "WChar_S" + ]], + ["BuiltinType" , [ + { + "pointer" : 116 + }, + "Char8" + ]], + ["BuiltinType" , [ + { + "pointer" : 117 + }, + "Char16" + ]], + ["BuiltinType" , [ + { + "pointer" : 118 + }, + "Char32" + ]], + ["BuiltinType" , [ + { + "pointer" : 119 + }, + "Dependent" + ]], + ["BuiltinType" , [ + { + "pointer" : 120 + }, + "Overload" + ]], + ["BuiltinType" , [ + { + "pointer" : 121 + }, + "BoundMember" + ]], + ["BuiltinType" , [ + { + "pointer" : 122 + }, + "PseudoObject" + ]], + ["BuiltinType" , [ + { + "pointer" : 123 + }, + "UnknownAny" + ]], + ["BuiltinType" , [ + { + "pointer" : 124 + }, + "ARCUnbridgedCast" + ]], + ["BuiltinType" , [ + { + "pointer" : 125 + }, + "BuiltinFn" + ]], + ["ComplexType" , [ + { + "pointer" : 126 + } + ]], + ["ComplexType" , [ + { + "pointer" : 127 + } + ]], + ["ComplexType" , [ + { + "pointer" : 128 + } + ]], + ["ComplexType" , [ + { + "pointer" : 129 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 130 + }, + "ObjCId" + ]], + ["BuiltinType" , [ + { + "pointer" : 131 + }, + "ObjCClass" + ]], + ["BuiltinType" , [ + { + "pointer" : 132 + }, + "ObjCSel" + ]], + ["PointerType" , [ + { + "pointer" : 133 + }, + { + "type_ptr" : 71 + } + ]], + ["BuiltinType" , [ + { + "pointer" : 134 + }, + "NullPtr" + ]], + ["BuiltinType" , [ + { + "pointer" : 135 + }, + "Half" + ]], + ["RecordType" , [ + { + "pointer" : 136 + }, + 137 + ]], + ["PointerType" , [ + { + "pointer" : 138 + }, + { + "type_ptr" : 76, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 139 + }, + { + "type_ptr" : 73, + "is_const" : true + } + ]], + ["PointerType" , [ + { + "pointer" : 140 + }, + { + "type_ptr" : 73 + } + ]], + ["RecordType" , [ + { + "pointer" : 141 + }, + 142 + ]], + ["ConstantArrayType" , [ + { + "pointer" : 143 + }, + { + "element_type" : { + "type_ptr" : 141 + }, + "stride" : 24 + }, + 1 + ]], + ["RecordType" , [ + { + "pointer" : 8 + }, + 7 + ]], + ["PointerType" , [ + { + "pointer" : 144 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 145 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 24 + }, + 23 + ]], + ["PointerType" , [ + { + "pointer" : 146 + }, + { + "type_ptr" : 24 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 147 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 34 + }, + { + "type_ptr" : 24, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 148 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 32 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 19 + }, + { + "type_ptr" : 8, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 149 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 19 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 17 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 19 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 150 + }, + { + "type_ptr" : 24 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 151 + }, + { + "return_type" : { + "type_ptr" : 150 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 150 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 152 + }, + { + "type_ptr" : 8 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 153 + }, + { + "return_type" : { + "type_ptr" : 152 + } + }, + { + "params_type" : [ + { + "type_ptr" : 19 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 21 + }, + { + "return_type" : { + "type_ptr" : 152 + } + }, + { + "params_type" : [ + { + "type_ptr" : 19 + } + ] + } + ]], + ["RecordType" , [ + { + "pointer" : 39 + }, + 38 + ]], + ["PointerType" , [ + { + "pointer" : 154 + }, + { + "type_ptr" : 39 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 155 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + } + ]], + ["RecordType" , [ + { + "pointer" : 53 + }, + 52 + ]], + ["PointerType" , [ + { + "pointer" : 156 + }, + { + "type_ptr" : 53 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 157 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 65 + }, + { + "type_ptr" : 53, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 158 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 65 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 63 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 65 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 48 + }, + { + "type_ptr" : 39, + "is_const" : true + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 159 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 48 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 46 + }, + { + "return_type" : { + "type_ptr" : 71 + } + }, + { + "params_type" : [ + { + "type_ptr" : 48 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 160 + }, + { + "type_ptr" : 53 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 161 + }, + { + "return_type" : { + "type_ptr" : 160 + } + }, + { + "params_type" : [ + { + "type_ptr" : 65 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 67 + }, + { + "return_type" : { + "type_ptr" : 160 + } + }, + { + "params_type" : [ + { + "type_ptr" : 65 + } + ] + } + ]], + ["LValueReferenceType" , [ + { + "pointer" : 162 + }, + { + "type_ptr" : 39 + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 163 + }, + { + "return_type" : { + "type_ptr" : 162 + } + }, + { + "params_type" : [ + { + "type_ptr" : 48 + } + ] + } + ]], + ["FunctionProtoType" , [ + { + "pointer" : 50 + }, + { + "return_type" : { + "type_ptr" : 162 + } + }, + { + "params_type" : [ + { + "type_ptr" : 48 + } + ] + } + ]], + ["ObjCObjectType" , [ + { + "pointer" : 164 + }, + { + "base_type" : 130 + } + ]], + ["ObjCObjectPointerType" , [ + { + "pointer" : 165 + }, + { + "type_ptr" : 164 + } + ]], + ["TypedefType" , [ + { + "pointer" : 166, + "desugared_type" : 165 + }, + { + "child_type" : { + "type_ptr" : 165 + }, + "decl_ptr" : 167 + } + ]], + ["TypedefType" , [ + { + "pointer" : 70, + "desugared_type" : 165 + }, + { + "child_type" : { + "type_ptr" : 166 + }, + "decl_ptr" : 69 + } + ]], + ["NoneType" , [ + { + "pointer" : 0 + } + ]] + ] + } +]] diff --git a/facebook-clang-plugins/libtooling/tests/ObjCBridgeTransferTest.m b/facebook-clang-plugins/libtooling/tests/ObjCBridgeTransferTest.m new file mode 100644 index 000000000..49c98e433 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/ObjCBridgeTransferTest.m @@ -0,0 +1,27 @@ +/* + * 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 "FoundationStub.h" + +typedef struct ABFDataRef { +} ABFDataRef; + +@interface ABFData +@end + +ABFDataRef* ABFDataCreate(); + +@interface A : NSObject +@end + +@implementation A + +- (void)bridge_transfer_example { + ABFData* someData = (__bridge_transfer ABFData*)ABFDataCreate(); +} + +@end diff --git a/facebook-clang-plugins/libtooling/tests/ObjCTest.m b/facebook-clang-plugins/libtooling/tests/ObjCTest.m new file mode 100644 index 000000000..c8cbf741a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/ObjCTest.m @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2013-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. + */ + +#include "FoundationStub.h" + +@protocol MyProtocol +@property(nonatomic, copy) NSString *str; +@end + +@protocol SomeProtocol; + +@interface MyClass : NSObject + +@property(nonatomic, copy) NSString *str; + +@property(nonatomic, assign) void *x; +@property(nonatomic, assign) int y; +@property(nonatomic, assign) NSObject *delegate; + +@end + +@interface MyClass () + +- (void)foo:(NSString *__nonnull)s; + +@end + +@implementation MyClass + +- (void)foo:(NSString *__nonnull)s { + + NSLog(@"%s\n", @encode(int **)); + + NSLog(@"%d\n", [self respondsToSelector:@selector(foo:)]); + + NSLog(@"%d\n", [[self class] conformsToProtocol:@protocol(MyProtocol)]); + + NSUInteger (^block)(NSString *x) = ^(NSString *x) { + self.str = x; + return [x length]; + }; + + @try { + NSArray *a = @[ @YES ]; + NSLog(@"%@\n", a[0]); + + NSDictionary *d = @{@"key" : @1}; + NSLog(@"%@\n", d[@"wrong key"]); + } @catch (NSException *e) { + NSLog(@"Exception: %@", e); + } @finally { + NSLog(@"finally"); + } + + goto theend; + return; +theend: + NSLog(@"jumped"); +} + +@end + +@interface MyClass (MyCategory) + +- (void)bar:(NSString *)s; + +@end + +@implementation MyClass (MyCategory) + +- (void)bar:(NSString *)s { + self.x = NULL; + self.y = 0; + self.delegate = nil; +} + +@end + +@interface MyClassGenerics : NSObject + +@end + +@interface BarGenerics : NSObject ++ (instancetype)newWithCs:(MyClassGenerics *)Cs; +@end + +@interface MySubclass : MyClass +@end + +@implementation MySubclass + +- (void)bar:(NSString *)s { + [super bar:s]; +} + +- (void)foo:(NSString *__nonnull)s { + [super foo:s]; +} + +@end + +int main(int argc, char **argv) { + @autoreleasepool { + [[[MyClass alloc] init] foo:@"hello"]; + [[MyClass new] bar:@"hello"]; + } + return 0; +} diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/Hello.m.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/Hello.m.exp new file mode 100644 index 000000000..06a01b631 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/Hello.m.exp @@ -0,0 +1,3463 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 9, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 1, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "file" : "tests/FoundationStub.h", + "line" : 8, + "column" : 1 + }, + { + "column" : 13 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "BOOL", + "qual_name" : [ + "BOOL" + ] + }, + 15, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "column" : 22 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "NSUInteger", + "qual_name" : [ + "NSUInteger" + ] + }, + 17, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "line" : 27, + "column" : 2 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 22 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 20, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "alloc", + "qual_name" : [ + "alloc", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject alloc]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "column" : 20 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 23, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "new", + "qual_name" : [ + "new", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject new]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 20, + "column" : 1 + }, + { + "column" : 28 + } + ) + }, + { + "name" : "autorelease", + "qual_name" : [ + "autorelease", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject autorelease]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 25, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "column" : 21 + } + ), + "attributes" : [ + <"NSConsumesSelfAttr" : ( + { + "pointer" : 26, + "source_range" : ( + { + }, + { + } + ) + } + )>, + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 27, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "init", + "qual_name" : [ + "init", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject init]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "column" : 15 + } + ) + }, + { + "name" : "class", + "qual_name" : [ + "class", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 9 + }, + "mangled_name" : "-[NSObject class]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 29, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 24, + "column" : 1 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "respondsToSelector:", + "qual_name" : [ + "respondsToSelector:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 33 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 5 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSObject respondsToSelector:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 25, + "column" : 1 + }, + { + "column" : 41 + } + ) + }, + { + "name" : "conformsToProtocol:", + "qual_name" : [ + "conformsToProtocol:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 40 + } + ) + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 33 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSObject conformsToProtocol:]" + } + )> + ], + { + }, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 29, + "column" : 1 + }, + { + "line" : 31, + "column" : 2 + } + ) + }, + { + "name" : "NSNumber", + "qual_name" : [ + "NSNumber" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 35, + "parent_pointer" : 34, + "source_range" : ( + { + "line" : 30, + "column" : 1 + }, + { + "column" : 37 + } + ) + }, + { + "name" : "numberWithInt:", + "qual_name" : [ + "numberWithInt:", + "NSNumber" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 32 + }, + { + "column" : 36 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "+[NSNumber numberWithInt:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 33, + "column" : 1 + }, + { + "line" : 35, + "column" : 2 + } + ) + }, + { + "name" : "NSString", + "qual_name" : [ + "NSString" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 39, + "parent_pointer" : 38, + "source_range" : ( + { + "line" : 34, + "column" : 1 + }, + { + "column" : 21 + } + ) + }, + { + "name" : "length", + "qual_name" : [ + "length", + "NSString" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "mangled_name" : "-[NSString length]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 40, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 37, + "column" : 1 + }, + { + "line" : 42, + "column" : 2 + } + ) + }, + { + "name" : "NSDictionary", + "qual_name" : [ + "NSDictionary" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 41, + "parent_pointer" : 40, + "source_range" : ( + { + "line" : 38, + "column" : 1 + }, + { + "line" : 40, + "column" : 56 + } + ) + }, + { + "name" : "dictionaryWithObjects:forKeys:count:", + "qual_name" : [ + "dictionaryWithObjects:forKeys:count:", + "NSDictionary" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "line" : 38, + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "objects", + "qual_name" : [ + "objects" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 44, + "source_range" : ( + { + "line" : 39, + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "keys", + "qual_name" : [ + "keys" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 1 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 45, + "source_range" : ( + { + "line" : 40, + "column" : 40 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "count", + "qual_name" : [ + "count" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 2 + } + )> + ], + "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 46, + "parent_pointer" : 40, + "source_range" : ( + { + "line" : 41, + "column" : 1 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "objectForKeyedSubscript:", + "qual_name" : [ + "objectForKeyedSubscript:", + "NSDictionary" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 32 + }, + { + "column" : 35 + } + ) + }, + { + "name" : "key", + "qual_name" : [ + "key" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 44, + "column" : 1 + }, + { + "line" : 47, + "column" : 2 + } + ) + }, + { + "name" : "NSArray", + "qual_name" : [ + "NSArray" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 49, + "parent_pointer" : 48, + "source_range" : ( + { + "line" : 45, + "column" : 1 + }, + { + "column" : 64 + } + ) + }, + { + "name" : "arrayWithObjects:count:", + "qual_name" : [ + "arrayWithObjects:count:", + "NSArray" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 40 + } + ) + }, + { + "name" : "objs", + "qual_name" : [ + "objs" + ] + }, + { + "type_ptr" : 51 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 52 + }, + { + "column" : 61 + } + ) + }, + { + "name" : "cnt", + "qual_name" : [ + "cnt" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "mangled_name" : "+[NSArray arrayWithObjects:count:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 54, + "parent_pointer" : 48, + "source_range" : ( + { + "line" : 46, + "column" : 1 + }, + { + "column" : 49 + } + ) + }, + { + "name" : "objectAtIndexedSubscript:", + "qual_name" : [ + "objectAtIndexedSubscript:", + "NSArray" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 44 + } + ) + }, + { + "name" : "index", + "qual_name" : [ + "index" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 56, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 49, + "column" : 1 + }, + { + "line" : 50, + "column" : 2 + } + ) + }, + { + "name" : "NSException", + "qual_name" : [ + "NSException" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 57, + "source_range" : ( + { + "line" : 52, + "column" : 13 + }, + { + "column" : 13 + } + ), + "is_implicit" : true, + "is_used" : true, + "attributes" : [ + <"FormatAttr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + } + )> + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 60, + "source_range" : ( + { + }, + { + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 34 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + <"FormatAttr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + } + )> + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 28 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 65, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/Hello.m", + "line" : 10, + "column" : 1 + }, + { + "line" : 12, + "column" : 2 + } + ) + }, + { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 66, + "parent_pointer" : 65, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "column" : 19 + } + ) + }, + { + "name" : "say:", + "qual_name" : [ + "say:", + "Hello" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 67 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 68, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 18 + } + ) + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[Hello say:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 69, + "name" : { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 69, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "line" : 20, + "column" : 1 + } + ) + }, + { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 70, + "parent_pointer" : 69, + "source_range" : ( + { + "line" : 15, + "column" : 1 + }, + { + "line" : 19, + "column" : 1 + } + ) + }, + { + "name" : "say:", + "qual_name" : [ + "say:", + "Hello" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 67 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 71, + "source_range" : ( + { + "line" : 15, + "column" : 14 + }, + { + "column" : 18 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 72, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 73, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 74, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 20 + }, + { + "line" : 19, + "column" : 1 + } + ) + }, + [ + <"IfStmt" : ( + { + "pointer" : 76, + "source_range" : ( + { + "line" : 16, + "column" : 3 + }, + { + "line" : 18, + "column" : 3 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 77, + "source_range" : ( + { + "line" : 16, + "column" : 7 + }, + { + "column" : 11 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 71, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 80, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : <"GT"> + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 14 + }, + { + "line" : 18, + "column" : 3 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 82, + "source_range" : ( + { + "line" : 17, + "column" : 5 + }, + { + "column" : 35 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 85 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 89 + }, + "value_kind" : <"LValue"> + }, + [ + "Hello, world! (%d)" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 71, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + } + )> + ] + )> + ], + { + "cond" : 77, + "then" : 81 + } + )> + ] + )>, + "mangled_name" : "-[Hello say:]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 65, + "name" : { + "name" : "Hello", + "qual_name" : [ + "Hello" + ] + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 92, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "line" : 29, + "column" : 1 + } + ) + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 93 + }, + { + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 94, + "source_range" : ( + { + "line" : 22, + "column" : 10 + }, + { + "column" : 14 + } + ) + }, + { + "name" : "argc", + "qual_name" : [ + "argc" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 95, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 31 + } + ) + }, + { + "name" : "argv", + "qual_name" : [ + "argv" + ] + }, + { + "type_ptr" : 96 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "decl_ptr_with_body" : 92, + "body" : <"CompoundStmt" : ( + { + "pointer" : 97, + "source_range" : ( + { + "column" : 34 + }, + { + "line" : 29, + "column" : 1 + } + ) + }, + [ + <"ForStmt" : ( + { + "pointer" : 98, + "source_range" : ( + { + "line" : 23, + "column" : 3 + }, + { + "line" : 27, + "column" : 3 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 99, + "source_range" : ( + { + "line" : 23, + "column" : 8 + }, + { + "column" : 17 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 100, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 101, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 16 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 37 + }, + { + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 100, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )> + ] + )>, + <"NullStmt" : ( + { + "pointer" : 102, + "source_range" : ( + { + }, + { + } + ) + }, + [ + ] + )>, + <"BinaryOperator" : ( + { + "pointer" : 103, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 23 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 104, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 105, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 101, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : <"LT"> + } + )>, + <"UnaryOperator" : ( + { + "pointer" : 107, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 27 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 108, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 101, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : <"PostInc">, + "is_postfix" : true + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 109, + "source_range" : ( + { + "column" : 31 + }, + { + "line" : 27, + "column" : 3 + } + ) + }, + [ + <"ObjCAutoreleasePoolStmt" : ( + { + "pointer" : 110, + "source_range" : ( + { + "line" : 24, + "column" : 5 + }, + { + "line" : 26, + "column" : 5 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 111, + "source_range" : ( + { + "line" : 24, + "column" : 22 + }, + { + "line" : 26, + "column" : 5 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 112, + "source_range" : ( + { + "line" : 25, + "column" : 7 + }, + { + "column" : 25 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 113, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 25 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 114, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 18 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 115, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "selector" : "new", + "decl_pointer" : 22, + "receiver_kind" : <"Class" : { + "type_ptr" : 116 + }> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "cast_kind" : <"ARCConsumeObject">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 117, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 118, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 101, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "selector" : "say:", + "is_definition_found" : true, + "decl_pointer" : 70 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + } + )> + ] + )> + ] + )> + ] + )> + ] + )>, + <"ReturnStmt" : ( + { + "pointer" : 119, + "source_range" : ( + { + "line" : 28, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 120, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 121, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + )> + ], + { + }, + { + "input_path" : "tests/Hello.m", + "input_kind" : <"IK_ObjC">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 123 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 124 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 139 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 140 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 141 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 142 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 143 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 144 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 145 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 146 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 149 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 150 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 151 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 152 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 153 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 154 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 155 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 156 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 157 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 158 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 159 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 160 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 161 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 162 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 163 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 164 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 165 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 166 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 167 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 168 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 169 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 170 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 171 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 172 + } + )>, + <"ComplexType" : ( + { + "pointer" : 173 + } + )>, + <"ComplexType" : ( + { + "pointer" : 174 + } + )>, + <"ComplexType" : ( + { + "pointer" : 175 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 176 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 177 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 178 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 179 + }, + { + "type_ptr" : 67 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 180 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 181 + }, + <"Half"> + )>, + <"PointerType" : ( + { + "pointer" : 182 + }, + { + "type_ptr" : 178 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 183 + }, + { + "base_type" : 176 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 184 + }, + { + "type_ptr" : 183 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 185 + }, + { + "base_type" : 177 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 186 + }, + { + "type_ptr" : 185 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 187 + }, + 10 + )>, + <"RecordType" : ( + { + "pointer" : 188 + }, + 189 + )>, + <"PointerType" : ( + { + "pointer" : 190 + }, + { + "type_ptr" : 37, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 191 + }, + { + "type_ptr" : 123, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 192 + }, + { + "type_ptr" : 123 + } + )>, + <"RecordType" : ( + { + "pointer" : 193 + }, + 194 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 195 + }, + { + "element_type" : { + "type_ptr" : 193 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 196 + }, + 18 + )>, + <"TypedefType" : ( + { + "pointer" : 7, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 184 + }, + "decl_ptr" : 6 + } + )>, + <"TypedefType" : ( + { + "pointer" : 21, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 121 + } + )>, + <"TypedefType" : ( + { + "pointer" : 9, + "desugared_type" : 186 + }, + { + "child_type" : { + "type_ptr" : 186 + }, + "decl_ptr" : 8 + } + )>, + <"TypedefType" : ( + { + "pointer" : 15, + "desugared_type" : 37 + }, + { + "child_type" : { + "type_ptr" : 37 + }, + "decl_ptr" : 14 + } + )>, + <"TypedefType" : ( + { + "pointer" : 5, + "desugared_type" : 182 + }, + { + "child_type" : { + "type_ptr" : 182 + }, + "decl_ptr" : 4 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 33 + }, + { + "type_ptr" : 187 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 197 + }, + 34 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 198 + }, + 38 + )>, + <"TypedefType" : ( + { + "pointer" : 17, + "desugared_type" : 53 + }, + { + "child_type" : { + "type_ptr" : 53 + }, + "decl_ptr" : 16 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 199 + }, + 40 + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 200 + }, + { + "element_type" : { + "type_ptr" : 184 + }, + "stride" : 8 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 201 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 202 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 203 + }, + { + "type_ptr" : 184, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 204 + }, + { + "type_ptr" : 7, + "is_const" : true + } + )>, + <"DecayedType" : ( + { + "pointer" : 43, + "desugared_type" : 204 + }, + { + "type_ptr" : 204 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 205 + }, + 48 + )>, + <"PointerType" : ( + { + "pointer" : 206 + }, + { + "type_ptr" : 184 + } + )>, + <"PointerType" : ( + { + "pointer" : 51 + }, + { + "type_ptr" : 7 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 207 + }, + 56 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 64 + }, + { + "type_ptr" : 198 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 208 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 209 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 210 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 184 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 59 + }, + { + "return_type" : { + "type_ptr" : 67 + } + }, + { + "params_type" : [ + { + "type_ptr" : 7 + } + ] + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 116 + }, + 65 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 73 + }, + { + "type_ptr" : 116 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 89 + }, + { + "element_type" : { + "type_ptr" : 123 + }, + "stride" : 1 + }, + 19 + )>, + <"PointerType" : ( + { + "pointer" : 211 + }, + { + "type_ptr" : 210 + } + )>, + <"PointerType" : ( + { + "pointer" : 85 + }, + { + "type_ptr" : 59 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 212 + }, + { + "element_type" : { + "type_ptr" : 192 + }, + "stride" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 213 + }, + { + "type_ptr" : 192 + } + )>, + <"DecayedType" : ( + { + "pointer" : 96, + "desugared_type" : 213 + }, + { + "type_ptr" : 213 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 214 + }, + { + "return_type" : { + "type_ptr" : 37 + } + }, + { + "params_type" : [ + { + "type_ptr" : 37 + }, + { + "type_ptr" : 213 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 93 + }, + { + "return_type" : { + "type_ptr" : 37 + } + }, + { + "params_type" : [ + { + "type_ptr" : 37 + }, + { + "type_ptr" : 96 + } + ] + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCBridgeTransferTest.m.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCBridgeTransferTest.m.exp new file mode 100644 index 000000000..5a60b67ce --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCBridgeTransferTest.m.exp @@ -0,0 +1,2840 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 9, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 1, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "file" : "tests/FoundationStub.h", + "line" : 8, + "column" : 1 + }, + { + "column" : 13 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "BOOL", + "qual_name" : [ + "BOOL" + ] + }, + 15, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "column" : 22 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "NSUInteger", + "qual_name" : [ + "NSUInteger" + ] + }, + 17, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "line" : 27, + "column" : 2 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 22 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 20, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "alloc", + "qual_name" : [ + "alloc", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject alloc]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "column" : 20 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 23, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "new", + "qual_name" : [ + "new", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject new]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 20, + "column" : 1 + }, + { + "column" : 28 + } + ) + }, + { + "name" : "autorelease", + "qual_name" : [ + "autorelease", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject autorelease]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 25, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "column" : 21 + } + ), + "attributes" : [ + <"NSConsumesSelfAttr" : ( + { + "pointer" : 26, + "source_range" : ( + { + }, + { + } + ) + } + )>, + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 27, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "init", + "qual_name" : [ + "init", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject init]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "column" : 15 + } + ) + }, + { + "name" : "class", + "qual_name" : [ + "class", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 9 + }, + "mangled_name" : "-[NSObject class]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 29, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 24, + "column" : 1 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "respondsToSelector:", + "qual_name" : [ + "respondsToSelector:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 33 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 5 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSObject respondsToSelector:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 25, + "column" : 1 + }, + { + "column" : 41 + } + ) + }, + { + "name" : "conformsToProtocol:", + "qual_name" : [ + "conformsToProtocol:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 40 + } + ) + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 33 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSObject conformsToProtocol:]" + } + )> + ], + { + }, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 29, + "column" : 1 + }, + { + "line" : 31, + "column" : 2 + } + ) + }, + { + "name" : "NSNumber", + "qual_name" : [ + "NSNumber" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 35, + "parent_pointer" : 34, + "source_range" : ( + { + "line" : 30, + "column" : 1 + }, + { + "column" : 37 + } + ) + }, + { + "name" : "numberWithInt:", + "qual_name" : [ + "numberWithInt:", + "NSNumber" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 32 + }, + { + "column" : 36 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "+[NSNumber numberWithInt:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 33, + "column" : 1 + }, + { + "line" : 35, + "column" : 2 + } + ) + }, + { + "name" : "NSString", + "qual_name" : [ + "NSString" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 39, + "parent_pointer" : 38, + "source_range" : ( + { + "line" : 34, + "column" : 1 + }, + { + "column" : 21 + } + ) + }, + { + "name" : "length", + "qual_name" : [ + "length", + "NSString" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "mangled_name" : "-[NSString length]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 40, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 37, + "column" : 1 + }, + { + "line" : 42, + "column" : 2 + } + ) + }, + { + "name" : "NSDictionary", + "qual_name" : [ + "NSDictionary" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 41, + "parent_pointer" : 40, + "source_range" : ( + { + "line" : 38, + "column" : 1 + }, + { + "line" : 40, + "column" : 56 + } + ) + }, + { + "name" : "dictionaryWithObjects:forKeys:count:", + "qual_name" : [ + "dictionaryWithObjects:forKeys:count:", + "NSDictionary" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "line" : 38, + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "objects", + "qual_name" : [ + "objects" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 44, + "source_range" : ( + { + "line" : 39, + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "keys", + "qual_name" : [ + "keys" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 1 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 45, + "source_range" : ( + { + "line" : 40, + "column" : 40 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "count", + "qual_name" : [ + "count" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 2 + } + )> + ], + "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 46, + "parent_pointer" : 40, + "source_range" : ( + { + "line" : 41, + "column" : 1 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "objectForKeyedSubscript:", + "qual_name" : [ + "objectForKeyedSubscript:", + "NSDictionary" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 32 + }, + { + "column" : 35 + } + ) + }, + { + "name" : "key", + "qual_name" : [ + "key" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 44, + "column" : 1 + }, + { + "line" : 47, + "column" : 2 + } + ) + }, + { + "name" : "NSArray", + "qual_name" : [ + "NSArray" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 49, + "parent_pointer" : 48, + "source_range" : ( + { + "line" : 45, + "column" : 1 + }, + { + "column" : 64 + } + ) + }, + { + "name" : "arrayWithObjects:count:", + "qual_name" : [ + "arrayWithObjects:count:", + "NSArray" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 40 + } + ) + }, + { + "name" : "objs", + "qual_name" : [ + "objs" + ] + }, + { + "type_ptr" : 51 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 52 + }, + { + "column" : 61 + } + ) + }, + { + "name" : "cnt", + "qual_name" : [ + "cnt" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "mangled_name" : "+[NSArray arrayWithObjects:count:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 54, + "parent_pointer" : 48, + "source_range" : ( + { + "line" : 46, + "column" : 1 + }, + { + "column" : 49 + } + ) + }, + { + "name" : "objectAtIndexedSubscript:", + "qual_name" : [ + "objectAtIndexedSubscript:", + "NSArray" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 44 + } + ) + }, + { + "name" : "index", + "qual_name" : [ + "index" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 56, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 49, + "column" : 1 + }, + { + "line" : 50, + "column" : 2 + } + ) + }, + { + "name" : "NSException", + "qual_name" : [ + "NSException" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 57, + "source_range" : ( + { + "line" : 52, + "column" : 13 + }, + { + "column" : 13 + } + ), + "is_implicit" : true, + "attributes" : [ + <"FormatAttr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + } + )> + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 60, + "source_range" : ( + { + }, + { + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 34 + } + ), + "attributes" : [ + <"FormatAttr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + } + )> + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 28 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"RecordDecl" : ( + { + "pointer" : 65, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/ObjCBridgeTransferTest.m", + "line" : 10, + "column" : 9 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "ABFDataRef", + "qual_name" : [ + "ABFDataRef" + ] + }, + 66, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 65, + "is_complete_definition" : true + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 67, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "line" : 11, + "column" : 3 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "ABFDataRef", + "qual_name" : [ + "ABFDataRef" + ] + }, + 68, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 69, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 14, + "column" : 2 + } + ) + }, + { + "name" : "ABFData", + "qual_name" : [ + "ABFData" + ] + }, + [ + ], + { + }, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 70, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "column" : 27 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ABFDataCreate", + "qual_name" : [ + "ABFDataCreate" + ] + }, + { + "type_ptr" : 71 + }, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 72, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "line" : 19, + "column" : 2 + } + ) + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 73, + "name" : { + "name" : "A", + "qual_name" : [ + "A" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 73, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ) + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 74, + "parent_pointer" : 73, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "line" : 25, + "column" : 1 + } + ) + }, + { + "name" : "bridge_transfer_example", + "qual_name" : [ + "bridge_transfer_example", + "A" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 75 + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 76, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 77, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 78, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 79, + "source_range" : ( + { + "line" : 23, + "column" : 33 + }, + { + "line" : 25, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 80, + "source_range" : ( + { + "line" : 24, + "column" : 3 + }, + { + "column" : 66 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 65 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 82, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 65 + } + ) + }, + [ + <"ObjCBridgedCastExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 65 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 65 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 51 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 51 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 70, + "name" : { + "name" : "ABFDataCreate", + "qual_name" : [ + "ABFDataCreate" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 88 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : <"CPointerToObjCPointerCast">, + "base_path" : [ + ] + }, + { + "type_ptr" : 89 + }, + { + "cast_kind" : <"OBC_BridgeTransfer"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : <"ARCConsumeObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 65 + } + ) + }, + { + "name" : "someData", + "qual_name" : [ + "someData" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 65 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 82, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 65 + } + ) + }, + [ + <"ObjCBridgedCastExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 65 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 65 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 51 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 51 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 70, + "name" : { + "name" : "ABFDataCreate", + "qual_name" : [ + "ABFDataCreate" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 88 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : <"CPointerToObjCPointerCast">, + "base_path" : [ + ] + }, + { + "type_ptr" : 89 + }, + { + "cast_kind" : <"OBC_BridgeTransfer"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : <"ARCConsumeObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + } + )> + } + )> + ] + )> + ] + )>, + "mangled_name" : "-[A bridge_transfer_example]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 72, + "name" : { + "name" : "A", + "qual_name" : [ + "A" + ] + } + } + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 91, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + )> + ], + { + }, + { + "input_path" : "tests/ObjCBridgeTransferTest.m", + "input_kind" : <"IK_ObjC">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 99 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 101 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 102 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 106 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 107 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 108 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 109 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 110 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 111 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 112 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 113 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 114 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 115 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 116 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 117 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 120 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 121 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 123 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 124 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 139 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 140 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 141 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 142 + } + )>, + <"ComplexType" : ( + { + "pointer" : 143 + } + )>, + <"ComplexType" : ( + { + "pointer" : 144 + } + )>, + <"ComplexType" : ( + { + "pointer" : 145 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 146 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 149 + }, + { + "type_ptr" : 75 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 150 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 151 + }, + <"Half"> + )>, + <"PointerType" : ( + { + "pointer" : 152 + }, + { + "type_ptr" : 148 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 153 + }, + { + "base_type" : 146 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 154 + }, + { + "type_ptr" : 153 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 155 + }, + { + "base_type" : 147 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 156 + }, + { + "type_ptr" : 155 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 157 + }, + 10 + )>, + <"RecordType" : ( + { + "pointer" : 158 + }, + 159 + )>, + <"PointerType" : ( + { + "pointer" : 160 + }, + { + "type_ptr" : 37, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 161 + }, + { + "type_ptr" : 93, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 162 + }, + { + "type_ptr" : 93 + } + )>, + <"RecordType" : ( + { + "pointer" : 163 + }, + 164 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 165 + }, + { + "element_type" : { + "type_ptr" : 163 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 166 + }, + 18 + )>, + <"TypedefType" : ( + { + "pointer" : 7, + "desugared_type" : 154 + }, + { + "child_type" : { + "type_ptr" : 154 + }, + "decl_ptr" : 6 + } + )>, + <"TypedefType" : ( + { + "pointer" : 21, + "desugared_type" : 154 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 91 + } + )>, + <"TypedefType" : ( + { + "pointer" : 9, + "desugared_type" : 156 + }, + { + "child_type" : { + "type_ptr" : 156 + }, + "decl_ptr" : 8 + } + )>, + <"TypedefType" : ( + { + "pointer" : 15, + "desugared_type" : 37 + }, + { + "child_type" : { + "type_ptr" : 37 + }, + "decl_ptr" : 14 + } + )>, + <"TypedefType" : ( + { + "pointer" : 5, + "desugared_type" : 152 + }, + { + "child_type" : { + "type_ptr" : 152 + }, + "decl_ptr" : 4 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 33 + }, + { + "type_ptr" : 157 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 167 + }, + 34 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 168 + }, + 38 + )>, + <"TypedefType" : ( + { + "pointer" : 17, + "desugared_type" : 53 + }, + { + "child_type" : { + "type_ptr" : 53 + }, + "decl_ptr" : 16 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 169 + }, + 40 + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 170 + }, + { + "element_type" : { + "type_ptr" : 154 + }, + "stride" : 8 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 171 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 172 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 173 + }, + { + "type_ptr" : 154, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 174 + }, + { + "type_ptr" : 7, + "is_const" : true + } + )>, + <"DecayedType" : ( + { + "pointer" : 43, + "desugared_type" : 174 + }, + { + "type_ptr" : 174 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 175 + }, + 48 + )>, + <"PointerType" : ( + { + "pointer" : 176 + }, + { + "type_ptr" : 154 + } + )>, + <"PointerType" : ( + { + "pointer" : 51 + }, + { + "type_ptr" : 7 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 177 + }, + 56 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 64 + }, + { + "type_ptr" : 168 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 178 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 179 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 180 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 154 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 59 + }, + { + "return_type" : { + "type_ptr" : 75 + } + }, + { + "params_type" : [ + { + "type_ptr" : 7 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 66 + }, + 65 + )>, + <"ElaboratedType" : ( + { + "pointer" : 181, + "desugared_type" : 66 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 182 + }, + 69 + )>, + <"TypedefType" : ( + { + "pointer" : 68, + "desugared_type" : 66 + }, + { + "child_type" : { + "type_ptr" : 181 + }, + "decl_ptr" : 67 + } + )>, + <"PointerType" : ( + { + "pointer" : 183 + }, + { + "type_ptr" : 66 + } + )>, + <"PointerType" : ( + { + "pointer" : 88 + }, + { + "type_ptr" : 68 + } + )>, + <"FunctionNoProtoType" : ( + { + "pointer" : 184 + }, + { + "return_type" : { + "type_ptr" : 183 + } + } + )>, + <"FunctionNoProtoType" : ( + { + "pointer" : 71 + }, + { + "return_type" : { + "type_ptr" : 88 + } + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 185 + }, + 72 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 77 + }, + { + "type_ptr" : 185 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 89 + }, + { + "type_ptr" : 182 + } + )>, + <"PointerType" : ( + { + "pointer" : 186 + }, + { + "type_ptr" : 184 + } + )>, + <"PointerType" : ( + { + "pointer" : 87 + }, + { + "type_ptr" : 71 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCTest.m.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCTest.m.exp new file mode 100644 index 000000000..cc3541e64 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/ObjCTest.m.exp @@ -0,0 +1,13483 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 9, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 1, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "file" : "tests/FoundationStub.h", + "line" : 8, + "column" : 1 + }, + { + "column" : 13 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "BOOL", + "qual_name" : [ + "BOOL" + ] + }, + 15, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "column" : 22 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "NSUInteger", + "qual_name" : [ + "NSUInteger" + ] + }, + 17, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "line" : 27, + "column" : 2 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 22 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 20, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "alloc", + "qual_name" : [ + "alloc", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject alloc]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "column" : 20 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 23, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "new", + "qual_name" : [ + "new", + "NSObject" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "+[NSObject new]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 20, + "column" : 1 + }, + { + "column" : 28 + } + ) + }, + { + "name" : "autorelease", + "qual_name" : [ + "autorelease", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject autorelease]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 25, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "column" : 21 + } + ), + "attributes" : [ + <"NSConsumesSelfAttr" : ( + { + "pointer" : 26, + "source_range" : ( + { + }, + { + } + ) + } + )>, + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 27, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "init", + "qual_name" : [ + "init", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 21 + }, + "mangled_name" : "-[NSObject init]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "column" : 15 + } + ) + }, + { + "name" : "class", + "qual_name" : [ + "class", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 9 + }, + "mangled_name" : "-[NSObject class]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 29, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 24, + "column" : 1 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "respondsToSelector:", + "qual_name" : [ + "respondsToSelector:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 33 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 5 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSObject respondsToSelector:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 25, + "column" : 1 + }, + { + "column" : 41 + } + ) + }, + { + "name" : "conformsToProtocol:", + "qual_name" : [ + "conformsToProtocol:", + "NSObject" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 15 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 40 + } + ) + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 33 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSObject conformsToProtocol:]" + } + )> + ], + { + }, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 29, + "column" : 1 + }, + { + "line" : 31, + "column" : 2 + } + ) + }, + { + "name" : "NSNumber", + "qual_name" : [ + "NSNumber" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 35, + "parent_pointer" : 34, + "source_range" : ( + { + "line" : 30, + "column" : 1 + }, + { + "column" : 37 + } + ) + }, + { + "name" : "numberWithInt:", + "qual_name" : [ + "numberWithInt:", + "NSNumber" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 32 + }, + { + "column" : 36 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "+[NSNumber numberWithInt:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 33, + "column" : 1 + }, + { + "line" : 35, + "column" : 2 + } + ) + }, + { + "name" : "NSString", + "qual_name" : [ + "NSString" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 39, + "parent_pointer" : 38, + "source_range" : ( + { + "line" : 34, + "column" : 1 + }, + { + "column" : 21 + } + ) + }, + { + "name" : "length", + "qual_name" : [ + "length", + "NSString" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "mangled_name" : "-[NSString length]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 40, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 37, + "column" : 1 + }, + { + "line" : 42, + "column" : 2 + } + ) + }, + { + "name" : "NSDictionary", + "qual_name" : [ + "NSDictionary" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 41, + "parent_pointer" : 40, + "source_range" : ( + { + "line" : 38, + "column" : 1 + }, + { + "line" : 40, + "column" : 56 + } + ) + }, + { + "name" : "dictionaryWithObjects:forKeys:count:", + "qual_name" : [ + "dictionaryWithObjects:forKeys:count:", + "NSDictionary" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "line" : 38, + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "objects", + "qual_name" : [ + "objects" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 44, + "source_range" : ( + { + "line" : 39, + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "keys", + "qual_name" : [ + "keys" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 1 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 45, + "source_range" : ( + { + "line" : 40, + "column" : 40 + }, + { + "column" : 51 + } + ) + }, + { + "name" : "count", + "qual_name" : [ + "count" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 2 + } + )> + ], + "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 46, + "parent_pointer" : 40, + "source_range" : ( + { + "line" : 41, + "column" : 1 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "objectForKeyedSubscript:", + "qual_name" : [ + "objectForKeyedSubscript:", + "NSDictionary" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 32 + }, + { + "column" : 35 + } + ) + }, + { + "name" : "key", + "qual_name" : [ + "key" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 44, + "column" : 1 + }, + { + "line" : 47, + "column" : 2 + } + ) + }, + { + "name" : "NSArray", + "qual_name" : [ + "NSArray" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 49, + "parent_pointer" : 48, + "source_range" : ( + { + "line" : 45, + "column" : 1 + }, + { + "column" : 64 + } + ) + }, + { + "name" : "arrayWithObjects:count:", + "qual_name" : [ + "arrayWithObjects:count:", + "NSArray" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 40 + } + ) + }, + { + "name" : "objs", + "qual_name" : [ + "objs" + ] + }, + { + "type_ptr" : 51 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 52 + }, + { + "column" : 61 + } + ) + }, + { + "name" : "cnt", + "qual_name" : [ + "cnt" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "mangled_name" : "+[NSArray arrayWithObjects:count:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 54, + "parent_pointer" : 48, + "source_range" : ( + { + "line" : 46, + "column" : 1 + }, + { + "column" : 49 + } + ) + }, + { + "name" : "objectAtIndexedSubscript:", + "qual_name" : [ + "objectAtIndexedSubscript:", + "NSArray" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 7 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 44 + } + ) + }, + { + "name" : "index", + "qual_name" : [ + "index" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 56, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 49, + "column" : 1 + }, + { + "line" : 50, + "column" : 2 + } + ) + }, + { + "name" : "NSException", + "qual_name" : [ + "NSException" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 57, + "source_range" : ( + { + "line" : 52, + "column" : 13 + }, + { + "column" : 13 + } + ), + "is_implicit" : true, + "is_used" : true, + "attributes" : [ + <"FormatAttr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + } + )> + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 60, + "source_range" : ( + { + }, + { + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 7 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 34 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + <"FormatAttr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + } + )> + ] + }, + { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + { + "type_ptr" : 59 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 28 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"ObjCProtocolDecl" : ( + { + "pointer" : 65, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/ObjCTest.m", + "line" : 10, + "column" : 1 + }, + { + "line" : 12, + "column" : 2 + } + ) + }, + { + "name" : "MyProtocol", + "qual_name" : [ + "MyProtocol" + ] + }, + [ + <"ObjCPropertyDecl" : ( + { + "pointer" : 66, + "parent_pointer" : 65, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + }, + { + "qual_type" : { + "type_ptr" : 64 + }, + "getter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 67, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + } + }, + "setter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 68, + "name" : { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyProtocol" + ] + } + }, + "property_attributes" : [ + <"Readwrite">, + <"Copy">, + <"Nonatomic"> + ] + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 67, + "parent_pointer" : 65, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ), + "is_implicit" : true + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 64 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 66, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + } + }, + "mangled_name" : "-[MyProtocol str]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 68, + "parent_pointer" : 65, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ), + "is_implicit" : true + }, + { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyProtocol" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 66, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyProtocol" + ] + } + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "str", + "qual_name" : [ + "str" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[MyProtocol setStr:]" + } + )> + ], + { + }, + { + } + )>, + <"ObjCProtocolDecl" : ( + { + "pointer" : 71, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "column" : 11 + } + ) + }, + { + "name" : "SomeProtocol", + "qual_name" : [ + "SomeProtocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 72, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "line" : 24, + "column" : 2 + } + ) + }, + { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + }, + [ + <"ObjCPropertyDecl" : ( + { + "pointer" : 73, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 64 + }, + "getter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 74, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 75, + "name" : { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 76, + "name" : { + "name" : "_str", + "qual_name" : [ + "_str", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + }, + "property_attributes" : [ + <"Readwrite">, + <"Copy">, + <"Nonatomic"> + ] + } + )>, + <"ObjCPropertyDecl" : ( + { + "pointer" : 77, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 20, + "column" : 1 + }, + { + "column" : 36 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 78 + }, + "getter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 79, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 80, + "name" : { + "name" : "setX:", + "qual_name" : [ + "setX:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 81, + "name" : { + "name" : "_x", + "qual_name" : [ + "_x", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 78 + } + }, + "property_attributes" : [ + <"Assign">, + <"Readwrite">, + <"Nonatomic">, + <"Unsafe_unretained"> + ] + } + )>, + <"ObjCPropertyDecl" : ( + { + "pointer" : 82, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 37 + }, + "getter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 83, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 84, + "name" : { + "name" : "setY:", + "qual_name" : [ + "setY:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 85, + "name" : { + "name" : "_y", + "qual_name" : [ + "_y", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + }, + "property_attributes" : [ + <"Assign">, + <"Readwrite">, + <"Nonatomic">, + <"Unsafe_unretained"> + ] + } + )>, + <"ObjCPropertyDecl" : ( + { + "pointer" : 86, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "column" : 54 + } + ) + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + }, + { + "qual_type" : { + "type_ptr" : 87 + }, + "getter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 88, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "setter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 89, + "name" : { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 90, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 87 + } + }, + "property_attributes" : [ + <"Assign">, + <"Readwrite">, + <"Nonatomic">, + <"Unsafe_unretained"> + ] + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 74, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 18, + "column" : 38 + }, + { + "column" : 38 + } + ), + "is_implicit" : true + }, + { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 64 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 91, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 93, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "is_overriding" : true, + "mangled_name" : "-[MyClass str]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 75, + "parent_pointer" : 72, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ), + "is_implicit" : true + }, + { + "name" : "setStr:", + "qual_name" : [ + "setStr:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "str", + "qual_name" : [ + "str" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 95, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 96, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "is_overriding" : true, + "mangled_name" : "-[MyClass setStr:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 79, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 20, + "column" : 36 + }, + { + "column" : 36 + } + ), + "is_implicit" : true + }, + { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 78 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 97, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 98, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[MyClass x]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 80, + "parent_pointer" : 72, + "source_range" : ( + { + "column" : 36 + }, + { + "column" : 36 + } + ), + "is_implicit" : true + }, + { + "name" : "setX:", + "qual_name" : [ + "setX:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 99, + "source_range" : ( + { + "column" : 36 + }, + { + "column" : 36 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 78 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 100, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 101, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[MyClass setX:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 83, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 21, + "column" : 34 + }, + { + "column" : 34 + } + ), + "is_implicit" : true + }, + { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 37 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 102, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 103, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[MyClass y]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 84, + "parent_pointer" : 72, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ), + "is_implicit" : true + }, + { + "name" : "setY:", + "qual_name" : [ + "setY:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 104, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 105, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 106, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[MyClass setY:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 88, + "parent_pointer" : 72, + "source_range" : ( + { + "line" : 22, + "column" : 54 + }, + { + "column" : 54 + } + ), + "is_implicit" : true + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 87 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 107, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 108, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[MyClass delegate]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 89, + "parent_pointer" : 72, + "source_range" : ( + { + "column" : 54 + }, + { + "column" : 54 + } + ), + "is_implicit" : true + }, + { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 109, + "source_range" : ( + { + "column" : 54 + }, + { + "column" : 54 + } + ) + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate" + ] + }, + { + "type_ptr" : 87 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 110, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 111, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[MyClass setDelegate:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 112, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "protocols" : [ + { + "kind" : <"ObjCProtocol">, + "decl_pointer" : 65, + "name" : { + "name" : "MyProtocol", + "qual_name" : [ + "MyProtocol" + ] + } + } + ], + "known_categories" : [ + { + "kind" : <"ObjCCategory">, + "decl_pointer" : 113, + "name" : { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + } + }, + { + "kind" : <"ObjCCategory">, + "decl_pointer" : 114, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + } + } + ] + } + )>, + <"ObjCCategoryDecl" : ( + { + "pointer" : 114, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 26, + "column" : 1 + }, + { + "line" : 30, + "column" : 2 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 115, + "parent_pointer" : 114, + "source_range" : ( + { + "line" : 28, + "column" : 1 + }, + { + "column" : 35 + } + ) + }, + { + "name" : "foo:", + "qual_name" : [ + "foo:", + "" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 116, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 117 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[ foo:]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 112, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 32, + "column" : 1 + }, + { + "line" : 65, + "column" : 1 + } + ) + }, + { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 118, + "parent_pointer" : 112, + "source_range" : ( + { + "line" : 34, + "column" : 1 + }, + { + "line" : 63, + "column" : 1 + } + ) + }, + { + "name" : "foo:", + "qual_name" : [ + "foo:", + "MyClass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 119, + "source_range" : ( + { + "line" : 34, + "column" : 14 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 117 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 120, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 121, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 122, + "source_range" : ( + { + "column" : 36 + }, + { + "line" : 63, + "column" : 1 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 123, + "source_range" : ( + { + "line" : 36, + "column" : 3 + }, + { + "column" : 33 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 124, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 125, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 127, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 128, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 129, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "%s\n" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 131, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 32 + } + ) + }, + [ + <"ObjCEncodeExpr" : ( + { + "pointer" : 132, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 32 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + { + "qual_type" : { + "type_ptr" : 133 + }, + "raw" : "int **" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 134 + } + }, + { + "cast_kind" : <"ArrayToPointerDecay">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )>, + <"CallExpr" : ( + { + "pointer" : 135, + "source_range" : ( + { + "line" : 38, + "column" : 3 + }, + { + "column" : 59 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 136, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 137, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 138, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 139, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 140, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "%d\n" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 141, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 58 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 142, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 143, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"ObjCSelectorExpr" : ( + { + "pointer" : 144, + "source_range" : ( + { + "column" : 43 + }, + { + "column" : 57 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 5 + } + }, + "foo:" + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "selector" : "respondsToSelector:", + "decl_pointer" : 29 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )>, + <"CallExpr" : ( + { + "pointer" : 145, + "source_range" : ( + { + "line" : 40, + "column" : 3 + }, + { + "column" : 73 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 146, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 147, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 148, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 149, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 150, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "%d\n" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 151, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 72 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 152, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 153, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 154, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 9 + } + }, + { + "selector" : "class", + "decl_pointer" : 28 + } + )>, + <"ObjCProtocolExpr" : ( + { + "pointer" : 155, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 71 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "kind" : <"ObjCProtocol">, + "decl_pointer" : 65, + "name" : { + "name" : "MyProtocol", + "qual_name" : [ + "MyProtocol" + ] + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "selector" : "conformsToProtocol:", + "decl_pointer" : 31 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )>, + <"DeclStmt" : ( + { + "pointer" : 156, + "source_range" : ( + { + "line" : 42, + "column" : 3 + }, + { + "line" : 45, + "column" : 4 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 157, + "source_range" : ( + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + [ + <"BlockExpr" : ( + { + "pointer" : 158, + "source_range" : ( + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + <"BlockDecl" : ( + { + "pointer" : 160, + "parent_pointer" : 118, + "source_range" : ( + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + { + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 161, + "source_range" : ( + { + "line" : 42, + "column" : 40 + }, + { + "column" : 50 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "captured_variables" : [ + { + "variable" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 162, + "source_range" : ( + { + "column" : 53 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + [ + <"PseudoObjectExpr" : ( + { + "pointer" : 163, + "source_range" : ( + { + "line" : 43, + "column" : 5 + }, + { + "column" : 16 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 164, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 16 + } + ) + }, + [ + <"ObjCPropertyRefExpr" : ( + { + "pointer" : 165, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 10 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 166, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 168, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCProperty"> + }, + { + "kind" : <"PropertyRef" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }>, + "is_messaging_setter" : true + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 166, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 168, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 172, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 173, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 174, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 166, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 168, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 172, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 173, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setStr:", + "decl_pointer" : 75 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )>, + <"ReturnStmt" : ( + { + "pointer" : 175, + "source_range" : ( + { + "line" : 44, + "column" : 5 + }, + { + "column" : 21 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 176, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 21 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 177, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 178, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "selector" : "length", + "decl_pointer" : 39 + } + )> + ] + )> + ] + )>, + "mangled_name" : "__15-[MyClass foo:]_block_invoke" + } + )> + )> + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + { + "decl_refs" : [ + { + "kind" : <"Block">, + "decl_pointer" : 160 + } + ] + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 179, + "source_range" : ( + { + "line" : 42, + "column" : 3 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + { + "name" : "block", + "qual_name" : [ + "block" + ] + }, + { + "type_ptr" : 180 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 157, + "source_range" : ( + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + [ + <"BlockExpr" : ( + { + "pointer" : 158, + "source_range" : ( + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + <"BlockDecl" : ( + { + "pointer" : 160, + "parent_pointer" : 118, + "source_range" : ( + { + "line" : 42, + "column" : 38 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + { + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 161, + "source_range" : ( + { + "line" : 42, + "column" : 40 + }, + { + "column" : 50 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "captured_variables" : [ + { + "variable" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 162, + "source_range" : ( + { + "column" : 53 + }, + { + "line" : 45, + "column" : 3 + } + ) + }, + [ + <"PseudoObjectExpr" : ( + { + "pointer" : 163, + "source_range" : ( + { + "line" : 43, + "column" : 5 + }, + { + "column" : 16 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 164, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 16 + } + ) + }, + [ + <"ObjCPropertyRefExpr" : ( + { + "pointer" : 165, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 10 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 166, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 168, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCProperty"> + }, + { + "kind" : <"PropertyRef" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }>, + "is_messaging_setter" : true + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 166, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 168, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 172, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 173, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 174, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 166, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 168, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 120, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 172, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 173, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "source_expr" : <"DeclRefExpr" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setStr:", + "decl_pointer" : 75 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )>, + <"ReturnStmt" : ( + { + "pointer" : 175, + "source_range" : ( + { + "line" : 44, + "column" : 5 + }, + { + "column" : 21 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 176, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 21 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 177, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 178, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 161, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "selector" : "length", + "decl_pointer" : 39 + } + )> + ] + )> + ] + )>, + "mangled_name" : "__15-[MyClass foo:]_block_invoke" + } + )> + )> + ], + { + "qual_type" : { + "type_ptr" : 159 + } + }, + { + "decl_refs" : [ + { + "kind" : <"Block">, + "decl_pointer" : 160 + } + ] + } + )> + } + )> + ] + )>, + <"ObjCAtTryStmt" : ( + { + "pointer" : 181, + "source_range" : ( + { + "line" : 47, + "column" : 3 + }, + { + "line" : 57, + "column" : 3 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 182, + "source_range" : ( + { + "line" : 47, + "column" : 8 + }, + { + "line" : 53, + "column" : 3 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 183, + "source_range" : ( + { + "line" : 48, + "column" : 5 + }, + { + "column" : 27 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 184, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 26 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 185, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 26 + } + ) + }, + [ + <"ObjCArrayLiteral" : ( + { + "pointer" : 186, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 26 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 187, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 22 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 188, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 22 + } + ) + }, + [ + <"ObjCBoxedExpr" : ( + { + "pointer" : 189, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 22 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 190, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "array_method" : 49 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 193, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 26 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 192 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 184, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 26 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 185, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 26 + } + ) + }, + [ + <"ObjCArrayLiteral" : ( + { + "pointer" : 186, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 26 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 187, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 22 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 188, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 22 + } + ) + }, + [ + <"ObjCBoxedExpr" : ( + { + "pointer" : 189, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 22 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 190, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "array_method" : 49 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + } + )> + } + )> + ] + )>, + <"ExprWithCleanups" : ( + { + "pointer" : 194, + "source_range" : ( + { + "line" : 49, + "column" : 5 + }, + { + "column" : 24 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 195, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 24 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 196, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 197, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 198, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 199, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 200, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "%@\n" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"PseudoObjectExpr" : ( + { + "pointer" : 201, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 23 + } + ) + }, + [ + <"ObjCSubscriptRefExpr" : ( + { + "pointer" : 202, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 23 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 203, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 204, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 205, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 193, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 192 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 206, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : <"IntegerLiteral" : ( + { + "pointer" : 207, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCSubscript"> + }, + { + "kind" : <"ArraySubscript"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 203, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 204, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 205, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 193, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 192 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 206, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : <"IntegerLiteral" : ( + { + "pointer" : 207, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 208, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 209, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 203, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 204, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 205, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 192 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 193, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 192 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 192 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 210, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 206, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : <"IntegerLiteral" : ( + { + "pointer" : 207, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "selector" : "objectAtIndexedSubscript:", + "decl_pointer" : 54 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + )>, + <"DeclStmt" : ( + { + "pointer" : 211, + "source_range" : ( + { + "line" : 51, + "column" : 5 + }, + { + "column" : 37 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 212, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 36 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 213, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 36 + } + ) + }, + [ + <"ObjCDictionaryLiteral" : ( + { + "pointer" : 214, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 36 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 215, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 26 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 216, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 26 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 217, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "key" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 218, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 35 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 219, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 35 + } + ) + }, + [ + <"ObjCBoxedExpr" : ( + { + "pointer" : 220, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 35 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 221, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 35 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "dict_method" : 41 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 223, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 36 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + { + "type_ptr" : 222 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 212, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 36 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 213, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 36 + } + ) + }, + [ + <"ObjCDictionaryLiteral" : ( + { + "pointer" : 214, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 36 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 215, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 26 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 216, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 26 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 217, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "key" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 218, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 35 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 219, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 35 + } + ) + }, + [ + <"ObjCBoxedExpr" : ( + { + "pointer" : 220, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 35 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 221, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 35 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "boxing_method" : "numberWithInt:" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 191 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "dict_method" : 41 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + } + )> + } + )> + ] + )>, + <"ExprWithCleanups" : ( + { + "pointer" : 224, + "source_range" : ( + { + "line" : 52, + "column" : 5 + }, + { + "column" : 35 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 225, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 35 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 226, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 227, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 228, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 229, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 230, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + [ + "%@\n" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"PseudoObjectExpr" : ( + { + "pointer" : 231, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 34 + } + ) + }, + [ + <"ObjCSubscriptRefExpr" : ( + { + "pointer" : 232, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 34 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 233, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 234, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 235, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 223, + "name" : { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + "qual_type" : { + "type_ptr" : 222 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 236, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ObjCStringLiteral" : ( + { + "pointer" : 237, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 238, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 239 + }, + "value_kind" : <"LValue"> + }, + [ + "wrong key" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCSubscript"> + }, + { + "kind" : <"DictionarySubscript"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 233, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 234, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 235, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 223, + "name" : { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + "qual_type" : { + "type_ptr" : 222 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 236, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ObjCStringLiteral" : ( + { + "pointer" : 237, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 238, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 239 + }, + "value_kind" : <"LValue"> + }, + [ + "wrong key" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 240, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 241, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 233, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 234, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 235, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 222 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 223, + "name" : { + "name" : "d", + "qual_name" : [ + "d" + ] + }, + "qual_type" : { + "type_ptr" : 222 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 222 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 242, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 236, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "source_expr" : <"ObjCStringLiteral" : ( + { + "pointer" : 237, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 23 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 238, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 239 + }, + "value_kind" : <"LValue"> + }, + [ + "wrong key" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "selector" : "objectForKeyedSubscript:", + "decl_pointer" : 46 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + )> + ] + )>, + <"ObjCAtCatchStmt" : ( + { + "pointer" : 243, + "source_range" : ( + { + "line" : 53, + "column" : 5 + }, + { + "line" : 55, + "column" : 3 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 244, + "source_range" : ( + { + "line" : 53, + "column" : 29 + }, + { + "line" : 55, + "column" : 3 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 245, + "source_range" : ( + { + "line" : 54, + "column" : 5 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 246, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 247, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 248, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 249, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 250, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 251 + }, + "value_kind" : <"LValue"> + }, + [ + "Exception: %@" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 252, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 253, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 254 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 255, + "name" : { + "name" : "e", + "qual_name" : [ + "e" + ] + }, + "qual_type" : { + "type_ptr" : 254 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 254 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )> + ] + )> + ], + <"CatchParam" : <"VarDecl" : ( + { + "pointer" : 255, + "source_range" : ( + { + "line" : 53, + "column" : 13 + }, + { + "column" : 26 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "e", + "qual_name" : [ + "e" + ] + }, + { + "type_ptr" : 254 + }, + { + } + )>> + )>, + <"ObjCAtFinallyStmt" : ( + { + "pointer" : 256, + "source_range" : ( + { + "line" : 55, + "column" : 5 + }, + { + "line" : 57, + "column" : 3 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 257, + "source_range" : ( + { + "line" : 55, + "column" : 14 + }, + { + "line" : 57, + "column" : 3 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 258, + "source_range" : ( + { + "line" : 56, + "column" : 5 + }, + { + "column" : 21 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 259, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 260, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 261, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 262, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 263, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 264 + }, + "value_kind" : <"LValue"> + }, + [ + "finally" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )> + ] + )> + ] + )> + ] + )>, + <"GotoStmt" : ( + { + "pointer" : 265, + "source_range" : ( + { + "line" : 59, + "column" : 3 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "label" : "theend", + "pointer" : 266 + } + )>, + <"ReturnStmt" : ( + { + "pointer" : 267, + "source_range" : ( + { + "line" : 60, + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ] + )>, + <"LabelStmt" : ( + { + "pointer" : 268, + "source_range" : ( + { + "line" : 61, + "column" : 1 + }, + { + "line" : 62, + "column" : 18 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 269, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 18 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 270, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 271, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 59 + } + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 61, + "name" : { + "name" : "NSLog", + "qual_name" : [ + "NSLog" + ] + }, + "qual_type" : { + "type_ptr" : 59 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 126 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 272, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"ObjCStringLiteral" : ( + { + "pointer" : 273, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 10 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 274, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 275 + }, + "value_kind" : <"LValue"> + }, + [ + "jumped" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + } + )> + ], + "theend" + )> + ] + )>, + "mangled_name" : "-[MyClass foo:]" + } + )>, + <"ObjCIvarDecl" : ( + { + "pointer" : 76, + "parent_pointer" : 112, + "source_range" : ( + { + "line" : 18, + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + { + "name" : "_str", + "qual_name" : [ + "_str", + "MyClass" + ] + }, + { + "type_ptr" : 64 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : <"Private"> + } + )>, + <"ObjCPropertyImplDecl" : ( + { + "pointer" : 276, + "source_range" : ( + { + }, + { + "column" : 38 + } + ) + }, + { + "implementation" : <"Synthesize">, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 73, + "name" : { + "name" : "str", + "qual_name" : [ + "str", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 76, + "name" : { + "name" : "_str", + "qual_name" : [ + "_str", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )>, + <"ObjCIvarDecl" : ( + { + "pointer" : 81, + "parent_pointer" : 112, + "source_range" : ( + { + "line" : 20, + "column" : 36 + }, + { + "column" : 36 + } + ) + }, + { + "name" : "_x", + "qual_name" : [ + "_x", + "MyClass" + ] + }, + { + "type_ptr" : 78 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : <"Private"> + } + )>, + <"ObjCPropertyImplDecl" : ( + { + "pointer" : 277, + "source_range" : ( + { + }, + { + "column" : 36 + } + ) + }, + { + "implementation" : <"Synthesize">, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 81, + "name" : { + "name" : "_x", + "qual_name" : [ + "_x", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 78 + } + } + } + )>, + <"ObjCIvarDecl" : ( + { + "pointer" : 85, + "parent_pointer" : 112, + "source_range" : ( + { + "line" : 21, + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "_y", + "qual_name" : [ + "_y", + "MyClass" + ] + }, + { + "type_ptr" : 37 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : <"Private"> + } + )>, + <"ObjCPropertyImplDecl" : ( + { + "pointer" : 278, + "source_range" : ( + { + }, + { + "column" : 34 + } + ) + }, + { + "implementation" : <"Synthesize">, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 85, + "name" : { + "name" : "_y", + "qual_name" : [ + "_y", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )>, + <"ObjCIvarDecl" : ( + { + "pointer" : 90, + "parent_pointer" : 112, + "source_range" : ( + { + "line" : 22, + "column" : 54 + }, + { + "column" : 54 + } + ) + }, + { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "MyClass" + ] + }, + { + "type_ptr" : 87 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : <"Private"> + } + )>, + <"ObjCPropertyImplDecl" : ( + { + "pointer" : 279, + "source_range" : ( + { + }, + { + "column" : 54 + } + ) + }, + { + "implementation" : <"Synthesize">, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 90, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "MyClass" + ] + }, + "qual_type" : { + "type_ptr" : 87 + } + } + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + } + } + )>, + <"ObjCCategoryDecl" : ( + { + "pointer" : 113, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 67, + "column" : 1 + }, + { + "line" : 71, + "column" : 2 + } + ) + }, + { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 280, + "parent_pointer" : 113, + "source_range" : ( + { + "line" : 69, + "column" : 1 + }, + { + "column" : 26 + } + ) + }, + { + "name" : "bar:", + "qual_name" : [ + "bar:", + "MyCategory" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 281, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 25 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "-[MyCategory bar:]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "implementation" : { + "kind" : <"ObjCCategoryImpl">, + "decl_pointer" : 282, + "name" : { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + } + } + } + )>, + <"ObjCCategoryImplDecl" : ( + { + "pointer" : 282, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 73, + "column" : 1 + }, + { + "line" : 81, + "column" : 1 + } + ) + }, + { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 283, + "parent_pointer" : 282, + "source_range" : ( + { + "line" : 75, + "column" : 1 + }, + { + "line" : 79, + "column" : 1 + } + ) + }, + { + "name" : "bar:", + "qual_name" : [ + "bar:", + "MyCategory" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 284, + "source_range" : ( + { + "line" : 75, + "column" : 14 + }, + { + "column" : 25 + } + ) + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 285, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 92, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 286, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 287, + "source_range" : ( + { + "column" : 27 + }, + { + "line" : 79, + "column" : 1 + } + ) + }, + [ + <"PseudoObjectExpr" : ( + { + "pointer" : 288, + "source_range" : ( + { + "line" : 76, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 289, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCPropertyRefExpr" : ( + { + "pointer" : 290, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 291, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 292, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 293, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCProperty"> + }, + { + "kind" : <"PropertyRef" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 77, + "name" : { + "name" : "x", + "qual_name" : [ + "x", + "MyClass" + ] + } + }>, + "is_messaging_setter" : true + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 294, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 295, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 296, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 297, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 78 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "kind" : <"Assign"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 291, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 292, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 293, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 294, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 295, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 296, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 297, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 78 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + )> + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 298, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 291, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 292, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 293, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 294, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 295, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 296, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 297, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 78 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setX:", + "decl_pointer" : 80 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + } + )>, + <"PseudoObjectExpr" : ( + { + "pointer" : 299, + "source_range" : ( + { + "line" : 77, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 300, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"ObjCPropertyRefExpr" : ( + { + "pointer" : 301, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 302, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 303, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 304, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCProperty"> + }, + { + "kind" : <"PropertyRef" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 82, + "name" : { + "name" : "y", + "qual_name" : [ + "y", + "MyClass" + ] + } + }>, + "is_messaging_setter" : true + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 305, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : <"IntegerLiteral" : ( + { + "pointer" : 306, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "kind" : <"Assign"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 302, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 303, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 304, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 305, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : <"IntegerLiteral" : ( + { + "pointer" : 306, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 307, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 302, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 303, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 304, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 305, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "source_expr" : <"IntegerLiteral" : ( + { + "pointer" : 306, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setY:", + "decl_pointer" : 84 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 37 + } + } + )>, + <"PseudoObjectExpr" : ( + { + "pointer" : 308, + "source_range" : ( + { + "line" : 78, + "column" : 3 + }, + { + "column" : 19 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 309, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 19 + } + ) + }, + [ + <"ObjCPropertyRefExpr" : ( + { + "pointer" : 310, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 311, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 312, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 313, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 169 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCProperty"> + }, + { + "kind" : <"PropertyRef" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 86, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "MyClass" + ] + } + }>, + "is_messaging_setter" : true + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 314, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 315, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 316, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 317, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "kind" : <"Assign"> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 311, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 312, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 313, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 314, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 315, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 316, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 317, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 318, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 319, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 314, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 315, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 316, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 317, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + } + )>, + <"ObjCMessageExpr" : ( + { + "pointer" : 320, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 311, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 312, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 313, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 285, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 318, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 319, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 314, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "source_expr" : <"ParenExpr" : ( + { + "pointer" : 315, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"CStyleCastExpr" : ( + { + "pointer" : 316, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 317, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + }, + { + "cast_kind" : <"NullToPointer">, + "base_path" : [ + ] + }, + { + "type_ptr" : 7 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 7 + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "setDelegate:", + "decl_pointer" : 89 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + } + )> + ] + )>, + "mangled_name" : "-[MyClass(MyCategory) bar:]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "category_decl" : { + "kind" : <"ObjCCategory">, + "decl_pointer" : 113, + "name" : { + "name" : "MyCategory", + "qual_name" : [ + "MyCategory" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 321, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 83, + "column" : 1 + }, + { + "line" : 85, + "column" : 2 + } + ) + }, + { + "name" : "MyClassGenerics", + "qual_name" : [ + "MyClassGenerics" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 322, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 87, + "column" : 1 + }, + { + "line" : 89, + "column" : 2 + } + ) + }, + { + "name" : "BarGenerics", + "qual_name" : [ + "BarGenerics" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 323, + "parent_pointer" : 322, + "source_range" : ( + { + "line" : 88, + "column" : 1 + }, + { + "column" : 60 + } + ), + "attributes" : [ + <"NSReturnsRetainedAttr" : ( + { + "pointer" : 324, + "source_range" : ( + { + }, + { + } + ) + } + )> + ] + }, + { + "name" : "newWithCs:", + "qual_name" : [ + "newWithCs:", + "BarGenerics" + ] + }, + { + "result_type" : { + "type_ptr" : 21 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 325, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 58 + } + ) + }, + { + "name" : "Cs", + "qual_name" : [ + "Cs" + ] + }, + { + "type_ptr" : 326 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "mangled_name" : "+[BarGenerics newWithCs:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 327, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 91, + "column" : 1 + }, + { + "line" : 92, + "column" : 2 + } + ) + }, + { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 72, + "name" : { + "name" : "MyClass", + "qual_name" : [ + "MyClass" + ] + } + }, + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 328, + "name" : { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 328, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 94, + "column" : 1 + }, + { + "line" : 104, + "column" : 1 + } + ) + }, + { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 329, + "parent_pointer" : 328, + "source_range" : ( + { + "line" : 96, + "column" : 1 + }, + { + "line" : 98, + "column" : 1 + } + ) + }, + { + "name" : "bar:", + "qual_name" : [ + "bar:", + "MySubclass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 330, + "source_range" : ( + { + "line" : 96, + "column" : 14 + }, + { + "column" : 25 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 64 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 331, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 332, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 333, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "is_overriding" : true, + "body" : <"CompoundStmt" : ( + { + "pointer" : 334, + "source_range" : ( + { + "column" : 27 + }, + { + "line" : 98, + "column" : 1 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 335, + "source_range" : ( + { + "line" : 97, + "column" : 3 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 336, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 337, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 64 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 330, + "name" : { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + "qual_type" : { + "type_ptr" : 64 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "bar:", + "is_definition_found" : true, + "decl_pointer" : 283, + "receiver_kind" : <"SuperInstance"> + } + )> + ] + )>, + "mangled_name" : "-[MySubclass bar:]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 338, + "parent_pointer" : 328, + "source_range" : ( + { + "line" : 100, + "column" : 1 + }, + { + "line" : 102, + "column" : 1 + } + ) + }, + { + "name" : "foo:", + "qual_name" : [ + "foo:", + "MySubclass" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 69 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 339, + "source_range" : ( + { + "line" : 100, + "column" : 14 + }, + { + "column" : 34 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 117 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 340, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 332, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 341, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "is_overriding" : true, + "body" : <"CompoundStmt" : ( + { + "pointer" : 342, + "source_range" : ( + { + "column" : 36 + }, + { + "line" : 102, + "column" : 1 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 343, + "source_range" : ( + { + "line" : 101, + "column" : 3 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 344, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 345, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 117 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 339, + "name" : { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + "qual_type" : { + "type_ptr" : 117 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 117 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "foo:", + "is_definition_found" : true, + "decl_pointer" : 118, + "receiver_kind" : <"SuperInstance"> + } + )> + ] + )>, + "mangled_name" : "-[MySubclass foo:]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 327, + "name" : { + "name" : "MySubclass", + "qual_name" : [ + "MySubclass" + ] + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 346, + "source_range" : ( + { + "line" : 106, + "column" : 1 + }, + { + "line" : 112, + "column" : 1 + } + ) + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 347 + }, + { + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 348, + "source_range" : ( + { + "line" : 106, + "column" : 10 + }, + { + "column" : 14 + } + ) + }, + { + "name" : "argc", + "qual_name" : [ + "argc" + ] + }, + { + "type_ptr" : 37 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 349, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 27 + } + ) + }, + { + "name" : "argv", + "qual_name" : [ + "argv" + ] + }, + { + "type_ptr" : 350 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "decl_ptr_with_body" : 346, + "body" : <"CompoundStmt" : ( + { + "pointer" : 351, + "source_range" : ( + { + "column" : 33 + }, + { + "line" : 112, + "column" : 1 + } + ) + }, + [ + <"ObjCAutoreleasePoolStmt" : ( + { + "pointer" : 352, + "source_range" : ( + { + "line" : 107, + "column" : 3 + }, + { + "line" : 110, + "column" : 3 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 353, + "source_range" : ( + { + "line" : 107, + "column" : 20 + }, + { + "line" : 110, + "column" : 3 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 354, + "source_range" : ( + { + "line" : 108, + "column" : 5 + }, + { + "column" : 41 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 355, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 41 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 356, + "source_range" : ( + { + "column" : 6 + }, + { + "column" : 27 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 357, + "source_range" : ( + { + "column" : 6 + }, + { + "column" : 27 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 358, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 21 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 359, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "selector" : "alloc", + "decl_pointer" : 19, + "receiver_kind" : <"Class" : { + "type_ptr" : 360 + }> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"ARCConsumeObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "selector" : "init", + "decl_pointer" : 25 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"ARCConsumeObject">, + "base_path" : [ + ] + } + )>, + <"ObjCStringLiteral" : ( + { + "pointer" : 361, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 34 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 362, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 363 + }, + "value_kind" : <"LValue"> + }, + [ + "hello" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "foo:", + "is_definition_found" : true, + "decl_pointer" : 118 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + )>, + <"ExprWithCleanups" : ( + { + "pointer" : 364, + "source_range" : ( + { + "line" : 109, + "column" : 5 + }, + { + "column" : 32 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 365, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 32 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 366, + "source_range" : ( + { + "column" : 6 + }, + { + "column" : 18 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 367, + "source_range" : ( + { + "column" : 6 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "selector" : "new", + "decl_pointer" : 22, + "receiver_kind" : <"Class" : { + "type_ptr" : 360 + }> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"ARCConsumeObject">, + "base_path" : [ + ] + } + )>, + <"ObjCStringLiteral" : ( + { + "pointer" : 368, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 25 + } + ) + }, + [ + <"StringLiteral" : ( + { + "pointer" : 369, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 25 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 363 + }, + "value_kind" : <"LValue"> + }, + [ + "hello" + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 64 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "selector" : "bar:", + "is_definition_found" : true, + "decl_pointer" : 283 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + } + )> + ] + )> + ] + )>, + <"ReturnStmt" : ( + { + "pointer" : 370, + "source_range" : ( + { + "line" : 111, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 371, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 372, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + )> + ], + { + }, + { + "input_path" : "tests/ObjCTest.m", + "input_kind" : <"IK_ObjC">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 373 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 374 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 375 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 376 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 377 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 378 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 379 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 380 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 381 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 382 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 383 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 384 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 385 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 386 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 387 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 388 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 389 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 390 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 391 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 392 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 393 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 394 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 395 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 396 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 397 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 398 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 399 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 400 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 401 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 402 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 403 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 404 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 405 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 406 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 407 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 408 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 409 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 410 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 411 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 412 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 413 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 414 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 415 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 416 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 417 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 418 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 169 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 419 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 420 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 421 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 422 + } + )>, + <"ComplexType" : ( + { + "pointer" : 423 + } + )>, + <"ComplexType" : ( + { + "pointer" : 424 + } + )>, + <"ComplexType" : ( + { + "pointer" : 425 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 426 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 427 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 428 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 78 + }, + { + "type_ptr" : 69 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 429 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 430 + }, + <"Half"> + )>, + <"PointerType" : ( + { + "pointer" : 431 + }, + { + "type_ptr" : 428 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 432 + }, + { + "base_type" : 426 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 433 + }, + { + "type_ptr" : 432 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 434 + }, + { + "base_type" : 427 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 435 + }, + { + "type_ptr" : 434 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 436 + }, + 10 + )>, + <"RecordType" : ( + { + "pointer" : 437 + }, + 438 + )>, + <"PointerType" : ( + { + "pointer" : 439 + }, + { + "type_ptr" : 37, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 440 + }, + { + "type_ptr" : 374, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 134 + }, + { + "type_ptr" : 374 + } + )>, + <"RecordType" : ( + { + "pointer" : 441 + }, + 442 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 443 + }, + { + "element_type" : { + "type_ptr" : 441 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 444 + }, + 18 + )>, + <"TypedefType" : ( + { + "pointer" : 7, + "desugared_type" : 433 + }, + { + "child_type" : { + "type_ptr" : 433 + }, + "decl_ptr" : 6 + } + )>, + <"TypedefType" : ( + { + "pointer" : 21, + "desugared_type" : 433 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 372 + } + )>, + <"TypedefType" : ( + { + "pointer" : 9, + "desugared_type" : 435 + }, + { + "child_type" : { + "type_ptr" : 435 + }, + "decl_ptr" : 8 + } + )>, + <"TypedefType" : ( + { + "pointer" : 15, + "desugared_type" : 37 + }, + { + "child_type" : { + "type_ptr" : 37 + }, + "decl_ptr" : 14 + } + )>, + <"TypedefType" : ( + { + "pointer" : 5, + "desugared_type" : 431 + }, + { + "child_type" : { + "type_ptr" : 431 + }, + "decl_ptr" : 4 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 33 + }, + { + "type_ptr" : 436 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 445 + }, + 34 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 446 + }, + 38 + )>, + <"TypedefType" : ( + { + "pointer" : 17, + "desugared_type" : 53 + }, + { + "child_type" : { + "type_ptr" : 53 + }, + "decl_ptr" : 16 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 447 + }, + 40 + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 448 + }, + { + "element_type" : { + "type_ptr" : 433 + }, + "stride" : 8 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 449 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + )>, + <"IncompleteArrayType" : ( + { + "pointer" : 450 + }, + { + "element_type" : { + "type_ptr" : 7, + "is_const" : true + }, + "stride" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 451 + }, + { + "type_ptr" : 433, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 452 + }, + { + "type_ptr" : 7, + "is_const" : true + } + )>, + <"DecayedType" : ( + { + "pointer" : 43, + "desugared_type" : 452 + }, + { + "type_ptr" : 452 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 453 + }, + 48 + )>, + <"PointerType" : ( + { + "pointer" : 454 + }, + { + "type_ptr" : 433 + } + )>, + <"PointerType" : ( + { + "pointer" : 51 + }, + { + "type_ptr" : 7 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 455 + }, + 56 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 64 + }, + { + "type_ptr" : 446 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 456 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 457 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 458 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 433 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 59 + }, + { + "return_type" : { + "type_ptr" : 69 + } + }, + { + "params_type" : [ + { + "type_ptr" : 7 + } + ] + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 360 + }, + 72 + )>, + <"ObjCObjectType" : ( + { + "pointer" : 459 + }, + { + "base_type" : 444, + "protocol_decls_ptr" : [ + 71 + ] + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 87 + }, + { + "type_ptr" : 459 + } + )>, + <"AttributedType" : ( + { + "pointer" : 117, + "desugared_type" : 64 + }, + { + "attr_kind" : <"TypeNonNullAttrKind"> + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 92 + }, + { + "type_ptr" : 360 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 130 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 4 + )>, + <"PointerType" : ( + { + "pointer" : 460 + }, + { + "type_ptr" : 37 + } + )>, + <"PointerType" : ( + { + "pointer" : 133 + }, + { + "type_ptr" : 460 + } + )>, + <"PointerType" : ( + { + "pointer" : 461 + }, + { + "type_ptr" : 458 + } + )>, + <"PointerType" : ( + { + "pointer" : 126 + }, + { + "type_ptr" : 59 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 462 + }, + { + "return_type" : { + "type_ptr" : 53 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 463 + }, + { + "return_type" : { + "type_ptr" : 17 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"ParenType" : ( + { + "pointer" : 464, + "desugared_type" : 463 + }, + { + "type_ptr" : 463 + } + )>, + <"BlockPointerType" : ( + { + "pointer" : 465 + }, + { + "type_ptr" : 462 + } + )>, + <"BlockPointerType" : ( + { + "pointer" : 180 + }, + { + "type_ptr" : 464 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 466 + }, + { + "return_type" : { + "type_ptr" : 416 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 467 + }, + { + "return_type" : { + "type_ptr" : 416 + } + }, + { + "params_type" : [ + { + "type_ptr" : 64 + } + ] + } + )>, + <"BlockPointerType" : ( + { + "pointer" : 159 + }, + { + "type_ptr" : 463 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 192 + }, + { + "type_ptr" : 453 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 191 + }, + { + "type_ptr" : 445 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 222 + }, + { + "type_ptr" : 447 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 239 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 10 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 254 + }, + { + "type_ptr" : 455 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 251 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 14 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 264 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 8 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 275 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 7 + )>, + <"ObjCTypeParamType" : ( + { + "pointer" : 468, + "desugared_type" : 433 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 469 + }, + 321 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 470 + }, + 322 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 471 + }, + { + "type_ptr" : 444 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 472 + }, + { + "base_type" : 469, + "type_args" : [ + { + "type_ptr" : 471 + } + ] + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 326 + }, + { + "type_ptr" : 472 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 473 + }, + 327 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 332 + }, + { + "type_ptr" : 473 + } + )>, + <"PointerType" : ( + { + "pointer" : 350 + }, + { + "type_ptr" : 134 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 347 + }, + { + "return_type" : { + "type_ptr" : 37 + } + }, + { + "params_type" : [ + { + "type_ptr" : 37 + }, + { + "type_ptr" : 350 + } + ] + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 363 + }, + { + "element_type" : { + "type_ptr" : 374 + }, + "stride" : 1 + }, + 6 + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/available_expression.m.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/available_expression.m.exp new file mode 100644 index 000000000..77b5e6117 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/available_expression.m.exp @@ -0,0 +1,1216 @@ +tests/available_expression.m:8:12: warning: class 'NSObject' defined without specifying a base class [-Wobjc-root-class] +@interface NSObject + ^ +tests/available_expression.m:8:20: note: add a super class to fix this problem +@interface NSObject + ^ + : NSObject +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 0, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 1, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 13, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/available_expression.m", + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 2 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ], + { + }, + { + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 14, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 14, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 13, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 15, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 15, + "column" : 2 + } + ) + }, + { + "name" : "available_expression", + "qual_name" : [ + "available_expression" + ] + }, + [ + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 13, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 16, + "name" : { + "name" : "available_expression", + "qual_name" : [ + "available_expression" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 16, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 17, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ) + }, + { + "name" : "available_expression", + "qual_name" : [ + "available_expression" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 16, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "line" : 25, + "column" : 1 + } + ) + }, + { + "name" : "test_no_bug:and:", + "qual_name" : [ + "test_no_bug:and:", + "available_expression" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 18 + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 19, + "source_range" : ( + { + "line" : 19, + "column" : 22 + }, + { + "column" : 26 + } + ) + }, + { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 56 + } + ) + }, + { + "name" : "data", + "qual_name" : [ + "data" + ] + }, + { + "type_ptr" : 22 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 23, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 22, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 24, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 61 + }, + { + "line" : 25, + "column" : 1 + } + ) + }, + [ + <"IfStmt" : ( + { + "pointer" : 26, + "source_range" : ( + { + "line" : 20, + "column" : 3 + }, + { + "line" : 21, + "column" : 3 + } + ) + }, + [ + <"ObjCAvailabilityCheckExpr" : ( + { + "pointer" : 27, + "source_range" : ( + { + "line" : 20, + "column" : 7 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 28 + } + }, + { + "version" : "11.0" + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 29, + "source_range" : ( + { + "column" : 45 + }, + { + "line" : 21, + "column" : 3 + } + ) + }, + [ + ] + )> + ], + { + "cond" : 27, + "then" : 29 + } + )>, + <"IfStmt" : ( + { + "pointer" : 30, + "source_range" : ( + { + "line" : 23, + "column" : 3 + }, + { + "line" : 24, + "column" : 3 + } + ) + }, + [ + <"ObjCAvailabilityCheckExpr" : ( + { + "pointer" : 31, + "source_range" : ( + { + "line" : 23, + "column" : 7 + }, + { + "column" : 48 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 28 + } + }, + { + "version" : "8" + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 51 + }, + { + "line" : 24, + "column" : 3 + } + ) + }, + [ + ] + )> + ], + { + "cond" : 31, + "then" : 32 + } + )> + ] + )>, + "mangled_name" : "-[available_expression test_no_bug:and:]" + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 15, + "name" : { + "name" : "available_expression", + "qual_name" : [ + "available_expression" + ] + } + } + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 33, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 34, + { + } + )> + ], + { + }, + { + "input_path" : "tests/available_expression.m", + "input_kind" : <"IK_ObjC">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 85 + } + )>, + <"ComplexType" : ( + { + "pointer" : 86 + } + )>, + <"ComplexType" : ( + { + "pointer" : 87 + } + )>, + <"ComplexType" : ( + { + "pointer" : 88 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 92 + }, + { + "type_ptr" : 18 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"Half"> + )>, + <"PointerType" : ( + { + "pointer" : 95 + }, + { + "type_ptr" : 91 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 96 + }, + { + "base_type" : 89 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 97 + }, + { + "type_ptr" : 96 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 98 + }, + { + "base_type" : 90 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 99 + }, + { + "type_ptr" : 98 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 100 + }, + 9 + )>, + <"RecordType" : ( + { + "pointer" : 101 + }, + 102 + )>, + <"PointerType" : ( + { + "pointer" : 103 + }, + { + "type_ptr" : 20, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 104 + }, + { + "type_ptr" : 35, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 105 + }, + { + "type_ptr" : 35 + } + )>, + <"RecordType" : ( + { + "pointer" : 106 + }, + 107 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 108 + }, + { + "element_type" : { + "type_ptr" : 106 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 109 + }, + 13 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 110 + }, + 15 + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 22 + }, + { + "type_ptr" : 110 + } + )>, + <"TypedefType" : ( + { + "pointer" : 7, + "desugared_type" : 97 + }, + { + "child_type" : { + "type_ptr" : 97 + }, + "decl_ptr" : 6 + } + )>, + <"TypedefType" : ( + { + "pointer" : 34, + "desugared_type" : 97 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 33 + } + )>, + <"TypedefType" : ( + { + "pointer" : 5, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 95 + }, + "decl_ptr" : 4 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> +1 warning generated. diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/bind_temporary.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/bind_temporary.cpp.exp new file mode 100644 index 000000000..3aa7f4d47 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/bind_temporary.cpp.exp @@ -0,0 +1,1373 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/bind_temporary.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "S", + "qual_name" : [ + "S" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 8, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 11, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 9, + "column" : 3 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "320519083853435709", + "is_cpp" : true, + "decl_ptr_with_body" : 11, + "body" : <"CompoundStmt" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 14, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 9 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~S", + "qual_name" : [ + "~S", + "S" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "3243028866176254141", + "is_cpp" : true, + "decl_ptr_with_body" : 14, + "body" : <"CompoundStmt" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 9 + } + ) + }, + [ + ] + )> + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "1635307583371793064", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 14, + "name" : { + "name" : "~S", + "qual_name" : [ + "~S", + "S" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 21, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ) + }, + { + "name" : "test", + "qual_name" : [ + "test" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "18241244337164948030", + "is_cpp" : true, + "decl_ptr_with_body" : 21, + "body" : <"CompoundStmt" : ( + { + "pointer" : 22, + "source_range" : ( + { + "line" : 12, + "column" : 13 + }, + { + "line" : 14, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 23, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 23 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 26, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 27, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"CXXTemporaryObjectExpr" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 11, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 29 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 30, + "name" : { + "name" : "s_ref", + "qual_name" : [ + "s_ref" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 22 + } + ) + }, + { + "name" : "s_ref", + "qual_name" : [ + "s_ref" + ] + }, + { + "type_ptr" : 20 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 26, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 27, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + <"CXXTemporaryObjectExpr" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 22 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 11, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 29 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 30, + "name" : { + "name" : "s_ref", + "qual_name" : [ + "s_ref" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 31, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 32, + { + } + )> + ], + { + }, + { + "input_path" : "tests/bind_temporary.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 88 + } + )>, + <"ComplexType" : ( + { + "pointer" : 89 + } + )>, + <"ComplexType" : ( + { + "pointer" : 90 + } + )>, + <"ComplexType" : ( + { + "pointer" : 91 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 95 + }, + { + "type_ptr" : 33 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 98 + }, + 99 + )>, + <"PointerType" : ( + { + "pointer" : 100 + }, + { + "type_ptr" : 38, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 101 + }, + { + "type_ptr" : 35, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 102 + }, + { + "type_ptr" : 35 + } + )>, + <"RecordType" : ( + { + "pointer" : 103 + }, + 104 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 105 + }, + { + "element_type" : { + "type_ptr" : 103 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 106 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 107 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 20 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 108 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 33 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 109 + }, + { + "base_type" : 92 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 110 + }, + { + "type_ptr" : 109 + } + )>, + <"TypedefType" : ( + { + "pointer" : 111, + "desugared_type" : 110 + }, + { + "child_type" : { + "type_ptr" : 110 + }, + "decl_ptr" : 112 + } + )>, + <"TypedefType" : ( + { + "pointer" : 32, + "desugared_type" : 110 + }, + { + "child_type" : { + "type_ptr" : 111 + }, + "decl_ptr" : 31 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_attributes.c.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_attributes.c.exp new file mode 100644 index 000000000..1e9df569f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_attributes.c.exp @@ -0,0 +1,715 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/c_attributes.c", + "line" : 7, + "column" : 1 + }, + { + "column" : 60 + } + ), + "attributes" : [ + <"SentinelAttr" : ( + { + "pointer" : 8, + "source_range" : ( + { + "column" : 45 + }, + { + "column" : 58 + } + ) + }, + { + "sentinel" : 0, + "null_pos" : 1 + } + )> + ] + }, + { + "name" : "add_all_ints", + "qual_name" : [ + "add_all_ints" + ] + }, + { + "type_ptr" : 9 + }, + { + "is_variadic" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 22 + } + ) + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 13, + { + } + )> + ], + { + }, + { + "input_path" : "tests/c_attributes.c", + "input_kind" : <"IK_C">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 14 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 15 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 16 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 11 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 66 + } + )>, + <"ComplexType" : ( + { + "pointer" : 67 + } + )>, + <"ComplexType" : ( + { + "pointer" : 68 + } + )>, + <"ComplexType" : ( + { + "pointer" : 69 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 73 + }, + { + "type_ptr" : 14 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 76 + }, + 77 + )>, + <"PointerType" : ( + { + "pointer" : 78 + }, + { + "type_ptr" : 11, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 79 + }, + { + "type_ptr" : 16, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 80 + }, + { + "type_ptr" : 16 + } + )>, + <"RecordType" : ( + { + "pointer" : 81 + }, + 82 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 83 + }, + { + "element_type" : { + "type_ptr" : 81 + }, + "stride" : 24 + }, + 1 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 9 + }, + { + "return_type" : { + "type_ptr" : 11 + } + }, + { + "params_type" : [ + { + "type_ptr" : 11 + } + ] + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 84 + }, + { + "base_type" : 70 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 85 + }, + { + "type_ptr" : 84 + } + )>, + <"TypedefType" : ( + { + "pointer" : 86, + "desugared_type" : 85 + }, + { + "child_type" : { + "type_ptr" : 85 + }, + "decl_ptr" : 87 + } + )>, + <"TypedefType" : ( + { + "pointer" : 13, + "desugared_type" : 85 + }, + { + "child_type" : { + "type_ptr" : 86 + }, + "decl_ptr" : 12 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_cast.cpp.exp new file mode 100644 index 000000000..0f2c91337 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/c_cast.cpp.exp @@ -0,0 +1,971 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"VarDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/c_cast.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 9 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_global" : true, + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 9, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "column" : 16 + } + ) + }, + { + "name" : "l", + "qual_name" : [ + "l" + ] + }, + { + "type_ptr" : 11 + }, + { + "is_global" : true, + "init_expr" : <"CStyleCastExpr" : ( + { + "pointer" : 12, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 16 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 7, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 11 + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "column" : 16 + } + ) + }, + { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + { + "type_ptr" : 11 + }, + { + "is_global" : true, + "init_expr" : <"CXXFunctionalCastExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 16 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 7, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 11 + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 21, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 22, + { + } + )> + ], + { + }, + { + "input_path" : "tests/c_cast.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 8 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 11 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 76 + } + )>, + <"ComplexType" : ( + { + "pointer" : 77 + } + )>, + <"ComplexType" : ( + { + "pointer" : 78 + } + )>, + <"ComplexType" : ( + { + "pointer" : 79 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 83 + }, + { + "type_ptr" : 23 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 86 + }, + 87 + )>, + <"PointerType" : ( + { + "pointer" : 88 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 89 + }, + { + "type_ptr" : 25, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 90 + }, + { + "type_ptr" : 25 + } + )>, + <"RecordType" : ( + { + "pointer" : 91 + }, + 92 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 93 + }, + { + "element_type" : { + "type_ptr" : 91 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCObjectType" : ( + { + "pointer" : 94 + }, + { + "base_type" : 80 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 95 + }, + { + "type_ptr" : 94 + } + )>, + <"TypedefType" : ( + { + "pointer" : 96, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 95 + }, + "decl_ptr" : 97 + } + )>, + <"TypedefType" : ( + { + "pointer" : 22, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 96 + }, + "decl_ptr" : 21 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/class_template.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/class_template.cpp.exp new file mode 100644 index 000000000..8b1e1c6a7 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/class_template.cpp.exp @@ -0,0 +1,2826 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"NamespaceDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/class_template.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ) + }, + { + "name" : "N", + "qual_name" : [ + "N" + ] + }, + [ + <"ClassTemplateDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "S", + "qual_name" : [ + "S", + "N" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ) + }, + { + "name" : "S", + "qual_name" : [ + "S *>", + "N" + ] + }, + 10, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 11, + "parent_pointer" : 9, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + 10, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 9 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 12, + "parent_pointer" : 9, + "source_range" : ( + { + "line" : 15, + "column" : 3 + }, + { + "column" : 5 + } + ), + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + { + "type_ptr" : 13 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 14, + "parent_pointer" : 9, + "source_range" : ( + { + "line" : 14, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "7066629788491464130", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 14, + "body" : <"CompoundStmt" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 12, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + }>, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 18, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + ] + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 9, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "11949468677960817094", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 22 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 9, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "14813278630171558444", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 26 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 9, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "15160212752071097404", + { + "template_decl" : 8, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 27 + }> + ] + } + )> + ] + } + )>, + <"ClassTemplatePartialSpecializationDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ) + }, + { + "name" : "S", + "qual_name" : [ + "S", + "N" + ] + }, + 29, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 28, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + 29, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0, + "is_dependent_type" : true + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 28, + "source_range" : ( + { + "line" : 15, + "column" : 3 + }, + { + "column" : 5 + } + ), + "access" : <"Public"> + }, + { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + { + "type_ptr" : 32 + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 28, + "is_complete_definition" : true, + "is_dependent_type" : true + }, + { + }, + "15216485236755079891", + { + "template_decl" : 8, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 33 + }> + ] + } + )>, + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "line" : 21, + "column" : 1 + } + ) + }, + { + "name" : "S", + "qual_name" : [ + "S", + "N" + ] + }, + 35, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 36, + "parent_pointer" : 34, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + 35, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 37, + "parent_pointer" : 34, + "source_range" : ( + { + "line" : 20, + "column" : 3 + }, + { + "column" : 7 + } + ), + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + { + "type_ptr" : 38 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 34, + "source_range" : ( + { + "line" : 19, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "13141222913637319333", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 18, + "body" : <"CompoundStmt" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 40, + "parent_pointer" : 34, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~S", + "qual_name" : [ + "~S", + "S", + "N" + ] + }, + { + "type_ptr" : 41 + }, + { + "mangled_name" : "16063732695960137765", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 42, + "parent_pointer" : 34, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + { + "type_ptr" : 43 + }, + { + "mangled_name" : "16241844907223898831", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 45 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 46, + "parent_pointer" : 34, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "S", + "qual_name" : [ + "S", + "S", + "N" + ] + }, + { + "type_ptr" : 47 + }, + { + "mangled_name" : "6117498947183732003", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 48, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 49 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 50, + "parent_pointer" : 34, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "S", + "N" + ] + }, + { + "type_ptr" : 51 + }, + { + "mangled_name" : "16979568942442152295", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 45 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 50, + "body" : <"CompoundStmt" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 56, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 27 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 38 + }, + "value_kind" : <"LValue"> + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 37, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 38 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 57, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 35, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 52, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 45 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 38, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 37, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 38 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 38 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )>, + <"ReturnStmt" : ( + { + "pointer" : 60, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 27 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 35 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ] + )> + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 63, + "parent_pointer" : 34, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "S", + "N" + ] + }, + { + "type_ptr" : 64 + }, + { + "mangled_name" : "12620087123913755403", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 65, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 49 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 34, + "is_complete_definition" : true + }, + { + "is_pod" : true, + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 40, + "name" : { + "name" : "~S", + "qual_name" : [ + "~S", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 41 + } + } + }, + "9300085993929073917", + { + "template_decl" : 8, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 38 + }> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 66, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + { + "name" : "test", + "qual_name" : [ + "test", + "N" + ] + }, + { + "type_ptr" : 67 + }, + { + "mangled_name" : "3452486497056904182", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 68, + "source_range" : ( + { + "line" : 23, + "column" : 11 + }, + { + "column" : 18 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 69 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 66, + "body" : <"CompoundStmt" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 21 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 71, + "source_range" : ( + { + "line" : 24, + "column" : 3 + }, + { + "column" : 18 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 72, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 14, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 15 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "val", + "qual_name" : [ + "val" + ] + }, + { + "type_ptr" : 73 + }, + { + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 72, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 14, + "name" : { + "name" : "S", + "qual_name" : [ + "S", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )> + ] + )>, + <"CXXOperatorCallExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "line" : 25, + "column" : 3 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 51 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 50, + "name" : { + "name" : "operator=", + "qual_name" : [ + "operator=", + "S", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 51 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 78 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"MemberExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 7 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 80, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 73 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 74, + "name" : { + "name" : "val", + "qual_name" : [ + "val" + ] + }, + "qual_type" : { + "type_ptr" : 73 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 13 + }, + "value_kind" : <"LValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 12, + "name" : { + "name" : "field", + "qual_name" : [ + "field", + "S *>", + "N" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 82, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 15 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 69 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 68, + "name" : { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + "qual_type" : { + "type_ptr" : 69 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 35 + }, + "value_kind" : <"LValue"> + } + )> + ] + )> + } + )> + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 83, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 84, + { + } + )> + ], + { + }, + { + "input_path" : "tests/class_template.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 99 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 101 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 102 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 106 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 107 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 108 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 109 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 110 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 111 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 112 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 113 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 114 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 115 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 116 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 117 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 120 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 121 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 123 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 124 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 139 + } + )>, + <"ComplexType" : ( + { + "pointer" : 140 + } + )>, + <"ComplexType" : ( + { + "pointer" : 141 + } + )>, + <"ComplexType" : ( + { + "pointer" : 142 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 143 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 144 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 145 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 146 + }, + { + "type_ptr" : 85 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 149 + }, + 150 + )>, + <"PointerType" : ( + { + "pointer" : 151 + }, + { + "type_ptr" : 38, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 152 + }, + { + "type_ptr" : 87, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 153 + }, + { + "type_ptr" : 87 + } + )>, + <"RecordType" : ( + { + "pointer" : 154 + }, + 155 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 156 + }, + { + "element_type" : { + "type_ptr" : 154 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 157 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 158 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 159 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 160 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 161 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 32 + } + )>, + <"PointerType" : ( + { + "pointer" : 33 + }, + { + "type_ptr" : 157 + } + )>, + <"PointerType" : ( + { + "pointer" : 162 + }, + { + "type_ptr" : 32 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 163 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 164 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 29 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 165 + } + )>, + <"RecordType" : ( + { + "pointer" : 35 + }, + 34 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 166, + "desugared_type" : 35 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 69, + "desugared_type" : 35 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 167 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 35 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 67 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 69 + } + ] + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 168, + "desugared_type" : 35 + } + )>, + <"PointerType" : ( + { + "pointer" : 27 + }, + { + "type_ptr" : 35 + } + )>, + <"PointerType" : ( + { + "pointer" : 169 + }, + { + "type_ptr" : 168 + } + )>, + <"RecordType" : ( + { + "pointer" : 10 + }, + 9 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 73, + "desugared_type" : 10 + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 13, + "desugared_type" : 35 + } + )>, + <"PointerType" : ( + { + "pointer" : 170 + }, + { + "type_ptr" : 13 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 171 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 172 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 173 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 41 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 22 + }, + { + "type_ptr" : 10, + "is_const" : true + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 45 + }, + { + "type_ptr" : 35, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 174 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 43 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 49 + }, + { + "type_ptr" : 35 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 175 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 47 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 176 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 26 + }, + { + "type_ptr" : 10 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 177 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 85 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 178 + }, + { + "type_ptr" : 35 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 179 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 180 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 181 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 64 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 51 + }, + { + "return_type" : { + "type_ptr" : 178 + } + }, + { + "params_type" : [ + { + "type_ptr" : 45 + } + ] + } + )>, + <"PointerType" : ( + { + "pointer" : 182 + }, + { + "type_ptr" : 179 + } + )>, + <"PointerType" : ( + { + "pointer" : 78 + }, + { + "type_ptr" : 51 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 183 + }, + { + "base_type" : 143 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 184 + }, + { + "type_ptr" : 183 + } + )>, + <"TypedefType" : ( + { + "pointer" : 185, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 184 + }, + "decl_ptr" : 186 + } + )>, + <"TypedefType" : ( + { + "pointer" : 84, + "desugared_type" : 184 + }, + { + "child_type" : { + "type_ptr" : 185 + }, + "decl_ptr" : 83 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/comments.c.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/comments.c.exp new file mode 100644 index 000000000..8cea7f13e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/comments.c.exp @@ -0,0 +1,680 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/comments.c", + "line" : 8, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "foo", + "qual_name" : [ + "foo" + ] + }, + { + "type_ptr" : 8 + }, + { + "decl_ptr_with_body" : 7, + "body" : <"CompoundStmt" : ( + { + "pointer" : 9, + "source_range" : ( + { + "line" : 8, + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + [ + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 11, + { + } + )> + ], + { + }, + { + "input_path" : "tests/comments.c", + "input_kind" : <"IK_C">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 12 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 13 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 14 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 15 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 16 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 65 + } + )>, + <"ComplexType" : ( + { + "pointer" : 66 + } + )>, + <"ComplexType" : ( + { + "pointer" : 67 + } + )>, + <"ComplexType" : ( + { + "pointer" : 68 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 72 + }, + { + "type_ptr" : 12 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 75 + }, + 76 + )>, + <"PointerType" : ( + { + "pointer" : 77 + }, + { + "type_ptr" : 17, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 78 + }, + { + "type_ptr" : 14, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 79 + }, + { + "type_ptr" : 14 + } + )>, + <"RecordType" : ( + { + "pointer" : 80 + }, + 81 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 82 + }, + { + "element_type" : { + "type_ptr" : 80 + }, + "stride" : 24 + }, + 1 + )>, + <"FunctionNoProtoType" : ( + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 12 + } + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 83 + }, + { + "base_type" : 69 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 84 + }, + { + "type_ptr" : 83 + } + )>, + <"TypedefType" : ( + { + "pointer" : 85, + "desugared_type" : 84 + }, + { + "child_type" : { + "type_ptr" : 84 + }, + "decl_ptr" : 86 + } + )>, + <"TypedefType" : ( + { + "pointer" : 11, + "desugared_type" : 84 + }, + { + "child_type" : { + "type_ptr" : 85 + }, + "decl_ptr" : 10 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/const_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/const_cast.cpp.exp new file mode 100644 index 000000000..0bb01706e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/const_cast.cpp.exp @@ -0,0 +1,1251 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/const_cast.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "Foo", + "qual_name" : [ + "Foo" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Foo", + "qual_name" : [ + "Foo", + "Foo" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 8, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 11, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 9, + "column" : 3 + }, + { + "column" : 16 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "func", + "qual_name" : [ + "func", + "Foo" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "999725558640074098", + "is_cpp" : true, + "decl_ptr_with_body" : 11, + "body" : <"CompoundStmt" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 16 + } + ) + }, + [ + ] + )> + }, + { + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + { + "name" : "someFunction", + "qual_name" : [ + "someFunction" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "9689270513361838995", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 12, + "column" : 19 + }, + { + "column" : 30 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 17 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 14, + "body" : <"CompoundStmt" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 33 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 19, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 35 + } + ) + }, + [ + <"CXXConstCastExpr" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 34 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 33 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 16, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 17 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 22 + }, + "const_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 23, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 34 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "fRef", + "qual_name" : [ + "fRef" + ] + }, + { + "type_ptr" : 22 + }, + { + "init_expr" : <"CXXConstCastExpr" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 34 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 33 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 16, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 17 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 22 + }, + "const_cast" + )> + } + )> + ] + )>, + <"CXXMemberCallExpr" : ( + { + "pointer" : 24, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 13 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 26, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 23, + "name" : { + "name" : "fRef", + "qual_name" : [ + "fRef" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 27 + } + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "func", + "qual_name" : [ + "func", + "Foo" + ] + }, + "decl_ref" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 11, + "name" : { + "name" : "func", + "qual_name" : [ + "func", + "Foo" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 28 + } + } + )> + ] + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 29, + "source_range" : ( + { + "line" : 17, + "column" : 1 + }, + { + "column" : 19 + } + ) + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 30, + "is_const" : true + }, + { + "is_global" : true, + "is_const_expr" : true, + "is_init_ice" : true, + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 31, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 30 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 32, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 33, + { + } + )> + ], + { + }, + { + "input_path" : "tests/const_cast.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 86 + } + )>, + <"ComplexType" : ( + { + "pointer" : 87 + } + )>, + <"ComplexType" : ( + { + "pointer" : 88 + } + )>, + <"ComplexType" : ( + { + "pointer" : 89 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 93 + }, + { + "type_ptr" : 28 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 96 + }, + 97 + )>, + <"PointerType" : ( + { + "pointer" : 98 + }, + { + "type_ptr" : 30, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 99 + }, + { + "type_ptr" : 35, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 100 + }, + { + "type_ptr" : 35 + } + )>, + <"RecordType" : ( + { + "pointer" : 101 + }, + 102 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 103 + }, + { + "element_type" : { + "type_ptr" : 101 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 104 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 28 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 17 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 28 + } + }, + { + "params_type" : [ + { + "type_ptr" : 17 + } + ] + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 22 + }, + { + "type_ptr" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 105 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 106 + }, + { + "base_type" : 90 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 107 + }, + { + "type_ptr" : 106 + } + )>, + <"TypedefType" : ( + { + "pointer" : 108, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 107 + }, + "decl_ptr" : 109 + } + )>, + <"TypedefType" : ( + { + "pointer" : 33, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 108 + }, + "decl_ptr" : 32 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/dynamic_cast.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/dynamic_cast.cpp.exp new file mode 100644 index 000000000..e3276a902 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/dynamic_cast.cpp.exp @@ -0,0 +1,4054 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/dynamic_cast.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 3 + }, + { + "column" : 21 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "f", + "qual_name" : [ + "f", + "A" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "1453848921539526524", + "is_cpp" : true, + "decl_ptr_with_body" : 10, + "body" : <"CompoundStmt" : ( + { + "pointer" : 12, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 21 + } + ) + }, + [ + ] + )> + }, + { + "is_virtual" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 13, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "A" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "4916027756641681778", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 16 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "A" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "1130122404358677750", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 21, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + { + "type_ptr" : 22 + }, + { + "mangled_name" : "5328378654181921475", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "14779025497907219583", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 23, + "body" : <"CompoundStmt" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "3430056695640597274", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 16 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 29, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 30 + }, + { + "mangled_name" : "1361265890968139694", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 31, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 21, + "name" : { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 32, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "column" : 22 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 33, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 33, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 35, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "B" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "12683202677887858481", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 37, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 38 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 39, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "B" + ] + }, + { + "type_ptr" : 40 + }, + { + "mangled_name" : "4655428711165100535", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 42 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 43, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~B", + "qual_name" : [ + "~B", + "B" + ] + }, + { + "type_ptr" : 44 + }, + { + "mangled_name" : "7876366742276079110", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 45, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "10798876524598897542", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 45, + "body" : <"CompoundStmt" : ( + { + "pointer" : 46, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : <"BaseClass" : ( + 8, + false + )>, + "source_range" : ( + { + }, + { + } + ), + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 23, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + )> + } + ] + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 48, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 49 + }, + { + "mangled_name" : "7710293714478488613", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 38 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 51, + "parent_pointer" : 32, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 52 + }, + { + "mangled_name" : "16903082029399050859", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 42 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 32, + "is_complete_definition" : true + }, + { + "bases" : [ + 8 + ], + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 43, + "name" : { + "name" : "~B", + "qual_name" : [ + "~B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 44 + } + } + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 54, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "column" : 11 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "C", + "qual_name" : [ + "C" + ] + }, + 55, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 56, + "parent_pointer" : 54, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "C", + "qual_name" : [ + "C", + "C" + ] + }, + 55, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 54, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 57, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 25, + "column" : 1 + } + ) + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "4928059564287848975", + "is_cpp" : true, + "decl_ptr_with_body" : 57, + "body" : <"CompoundStmt" : ( + { + "pointer" : 58, + "source_range" : ( + { + "line" : 13, + "column" : 10 + }, + { + "line" : 25, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 59, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 6 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 60, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 23, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 5 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 8 + }, + { + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 60, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 23, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 62, + "source_range" : ( + { + "line" : 15, + "column" : 3 + }, + { + "column" : 6 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 45, + "name" : { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 64, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 5 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 33 + }, + { + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 45, + "name" : { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 65, + "source_range" : ( + { + "line" : 17, + "column" : 3 + }, + { + "column" : 13 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 67, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 68, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 64, + "name" : { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + "qual_type" : { + "type_ptr" : 33 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "kind" : <"AddrOf"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"DerivedToBase">, + "base_path" : [ + { + "name" : "A" + } + ] + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 71, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 12 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + { + "type_ptr" : 70 + }, + { + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 67, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 68, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 64, + "name" : { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + "qual_type" : { + "type_ptr" : 33 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "kind" : <"AddrOf"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"DerivedToBase">, + "base_path" : [ + { + "name" : "A" + } + ] + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 72, + "source_range" : ( + { + "line" : 18, + "column" : 3 + }, + { + "column" : 32 + } + ) + }, + [ + <"CXXDynamicCastExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 31 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 61, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "kind" : <"AddrOf"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 31 + } + ) + }, + { + "name" : "b1", + "qual_name" : [ + "b1" + ] + }, + { + "type_ptr" : 69 + }, + { + "init_expr" : <"CXXDynamicCastExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 31 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 61, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "kind" : <"AddrOf"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 77, + "source_range" : ( + { + "line" : 19, + "column" : 3 + }, + { + "column" : 32 + } + ) + }, + [ + <"CXXDynamicCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 31 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 80, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 31 + } + ) + }, + { + "name" : "b2", + "qual_name" : [ + "b2" + ] + }, + { + "type_ptr" : 69 + }, + { + "init_expr" : <"CXXDynamicCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 31 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 80, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 69 + } + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 69 + }, + "dynamic_cast" + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 82, + "source_range" : ( + { + "line" : 20, + "column" : 3 + }, + { + "column" : 31 + } + ) + }, + [ + <"CXXDynamicCastExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 86 + } + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 86 + }, + "dynamic_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 30 + } + ) + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 86 + }, + { + "init_expr" : <"CXXDynamicCastExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 86 + } + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 86 + }, + "dynamic_cast" + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 88, + "source_range" : ( + { + "line" : 22, + "column" : 3 + }, + { + "column" : 33 + } + ) + }, + [ + <"CXXDynamicCastExpr" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 32 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 92, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 93 + }, + "dynamic_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 32 + } + ) + }, + { + "name" : "ar", + "qual_name" : [ + "ar" + ] + }, + { + "type_ptr" : 93 + }, + { + "init_expr" : <"CXXDynamicCastExpr" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 32 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 92, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 93 + }, + "dynamic_cast" + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 95, + "source_range" : ( + { + "line" : 23, + "column" : 3 + }, + { + "column" : 33 + } + ) + }, + [ + <"CXXDynamicCastExpr" : ( + { + "pointer" : 96, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 32 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 97, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 98, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 99, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 100 + }, + "dynamic_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 101, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 32 + } + ) + }, + { + "name" : "br", + "qual_name" : [ + "br" + ] + }, + { + "type_ptr" : 100 + }, + { + "init_expr" : <"CXXDynamicCastExpr" : ( + { + "pointer" : 96, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 32 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 97, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 98, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 99, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 33 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 100 + }, + "dynamic_cast" + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 102, + "source_range" : ( + { + "line" : 24, + "column" : 3 + }, + { + "column" : 33 + } + ) + }, + [ + <"CXXDynamicCastExpr" : ( + { + "pointer" : 103, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 32 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 104, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 105, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 107 + }, + "dynamic_cast" + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 108, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 32 + } + ) + }, + { + "name" : "cr", + "qual_name" : [ + "cr" + ] + }, + { + "type_ptr" : 107 + }, + { + "init_expr" : <"CXXDynamicCastExpr" : ( + { + "pointer" : 103, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 32 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 104, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 30 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 105, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 71, + "name" : { + "name" : "ap", + "qual_name" : [ + "ap" + ] + }, + "qual_type" : { + "type_ptr" : 70 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 70 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Deref"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"Dynamic">, + "base_path" : [ + ] + }, + { + "type_ptr" : 107 + }, + "dynamic_cast" + )> + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 109, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 110, + { + } + )> + ], + { + }, + { + "input_path" : "tests/dynamic_cast.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 111 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 112 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 113 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 114 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 115 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 116 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 117 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 120 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 121 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 123 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 124 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 139 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 140 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 141 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 142 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 143 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 144 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 145 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 146 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 149 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 150 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 151 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 152 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 153 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 154 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 155 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 156 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 157 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 158 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 159 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 160 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 161 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 162 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 163 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 164 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 165 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 166 + } + )>, + <"ComplexType" : ( + { + "pointer" : 167 + } + )>, + <"ComplexType" : ( + { + "pointer" : 168 + } + )>, + <"ComplexType" : ( + { + "pointer" : 169 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 170 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 171 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 172 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 173 + }, + { + "type_ptr" : 111 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 174 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 175 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 176 + }, + 177 + )>, + <"PointerType" : ( + { + "pointer" : 178 + }, + { + "type_ptr" : 116, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 179 + }, + { + "type_ptr" : 113, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 180 + }, + { + "type_ptr" : 113 + } + )>, + <"RecordType" : ( + { + "pointer" : 181 + }, + 182 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 183 + }, + { + "element_type" : { + "type_ptr" : 181 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 70 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 93 + }, + { + "type_ptr" : 8 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 16 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 184 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 20 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 185 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 93 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 22 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 33 + }, + 32 + )>, + <"LValueReferenceType" : ( + { + "pointer" : 100 + }, + { + "type_ptr" : 33 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 38 + }, + { + "type_ptr" : 33, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 186 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 42 + }, + { + "type_ptr" : 33 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 187 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 40 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 44 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 55 + }, + 54 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 188 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 189 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 190 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 30 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 191 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 192 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 49 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 193 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 52 + }, + { + "return_type" : { + "type_ptr" : 111 + } + }, + { + "params_type" : [ + { + "type_ptr" : 42 + } + ] + } + )>, + <"PointerType" : ( + { + "pointer" : 69 + }, + { + "type_ptr" : 33 + } + )>, + <"PointerType" : ( + { + "pointer" : 86 + }, + { + "type_ptr" : 55 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 107 + }, + { + "type_ptr" : 55 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 194 + }, + { + "base_type" : 170 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 195 + }, + { + "type_ptr" : 194 + } + )>, + <"TypedefType" : ( + { + "pointer" : 196, + "desugared_type" : 195 + }, + { + "child_type" : { + "type_ptr" : 195 + }, + "decl_ptr" : 197 + } + )>, + <"TypedefType" : ( + { + "pointer" : 110, + "desugared_type" : 195 + }, + { + "child_type" : { + "type_ptr" : 196 + }, + "decl_ptr" : 109 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/expr_with_cleanups.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/expr_with_cleanups.cpp.exp new file mode 100644 index 000000000..c07595a23 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/expr_with_cleanups.cpp.exp @@ -0,0 +1,4068 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/expr_with_cleanups.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 13, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "X", + "qual_name" : [ + "X" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 8, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 11, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 9, + "column" : 3 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "4951616904021883133", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 14 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 15, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 14 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + { + "type_ptr" : 16 + }, + { + "mangled_name" : "11474741413113936247", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 13 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 18 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 11, + "column" : 3 + }, + { + "column" : 25 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "3547081667308014059", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 24 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 18 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 6 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "9850251229546392500", + "is_cpp" : true + }, + { + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 22, + "name" : { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 23 + } + } + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "line" : 18, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + 25, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + 25, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 27, + "source_range" : ( + { + "line" : 15, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 16, + "column" : 3 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "14898886720565199942", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 29, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 14 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 17, + "column" : 3 + }, + { + "column" : 6 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~Y", + "qual_name" : [ + "~Y", + "Y" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "11799330211249239787", + "is_cpp" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 14, + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 32 + }, + { + "mangled_name" : "7125450473324676530", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 34 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 31, + "body" : <"CompoundStmt" : ( + { + "pointer" : 35, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 24, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 30, + "name" : { + "name" : "~Y", + "qual_name" : [ + "~Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 23 + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 36, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "column" : 6 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "10279154687993237354", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 8 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 39, + "source_range" : ( + { + "line" : 20, + "column" : 1 + }, + { + "column" : 6 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "g", + "qual_name" : [ + "g" + ] + }, + { + "type_ptr" : 40 + }, + { + "mangled_name" : "9626291071610925118", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 25 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + { + "name" : "h", + "qual_name" : [ + "h" + ] + }, + { + "type_ptr" : 43 + }, + { + "mangled_name" : "4941587955358707969", + "is_cpp" : true, + "decl_ptr_with_body" : 42, + "body" : <"CompoundStmt" : ( + { + "pointer" : 44, + "source_range" : ( + { + "line" : 21, + "column" : 10 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 45, + "source_range" : ( + { + "line" : 22, + "column" : 3 + }, + { + "column" : 9 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 46, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 8 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 48, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 8 + }, + { + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 46, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 8 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 49, + "source_range" : ( + { + "line" : 23, + "column" : 3 + }, + { + "column" : 16 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 56, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 57, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 36, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 58 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 60, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXFunctionalCastExpr" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 64, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 65, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 67 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : <"ConstructorConversion">, + "base_path" : [ + ] + }, + { + "type_ptr" : 8 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 68 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 69 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 15 + } + ) + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 8 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 56, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 57, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 36, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 58 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 60, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXFunctionalCastExpr" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 64, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 65, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 11, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 67 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cast_kind" : <"ConstructorConversion">, + "base_path" : [ + ] + }, + { + "type_ptr" : 8 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 68 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 69 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 71, + "source_range" : ( + { + "line" : 24, + "column" : 3 + }, + { + "column" : 16 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 72, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 40 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 39, + "name" : { + "name" : "g", + "qual_name" : [ + "g" + ] + }, + "qual_type" : { + "type_ptr" : 40 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 82, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXFunctionalCastExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 28, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 89 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : <"ConstructorConversion">, + "base_path" : [ + ] + }, + { + "type_ptr" : 25 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 90 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 91 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 92, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 15 + } + ) + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 25 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 72, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 15 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 40 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 39, + "name" : { + "name" : "g", + "qual_name" : [ + "g" + ] + }, + "qual_type" : { + "type_ptr" : 40 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 82, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXFunctionalCastExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 14 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 13 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 14 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 28, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 89 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : <"ConstructorConversion">, + "base_path" : [ + ] + }, + { + "type_ptr" : 25 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 90 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cxx_temporary" : 91 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 31, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 32 + } + }, + "is_elidable" : true, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + } + )> + } + )> + ] + )>, + <"ExprWithCleanups" : ( + { + "pointer" : 93, + "source_range" : ( + { + "line" : 25, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"CXXOperatorCallExpr" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 95, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 96, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 20 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 19, + "name" : { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 97 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"DeclRefExpr" : ( + { + "pointer" : 98, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 48, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )>, + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 99, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 100, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 10 + } + ) + }, + [ + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 101, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 10 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 102, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 103, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 104, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 37 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 36, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 58 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"CXXBindTemporaryExpr" : ( + { + "pointer" : 105, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 107, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 108, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 48, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 15, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 16 + } + }, + "is_copy_constructor" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 109 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "cxx_temporary" : 110 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + } + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + } + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 111, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 112, + { + } + )> + ], + { + }, + { + "input_path" : "tests/expr_with_cleanups.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 113 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 114 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 115 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 116 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 117 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 14 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 120 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 121 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 123 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 124 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 139 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 140 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 141 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 142 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 143 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 144 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 145 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 146 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 149 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 150 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 151 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 152 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 153 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 154 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 155 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 156 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 157 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 158 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 159 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 160 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 161 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 162 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 163 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 164 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 165 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 166 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 167 + } + )>, + <"ComplexType" : ( + { + "pointer" : 168 + } + )>, + <"ComplexType" : ( + { + "pointer" : 169 + } + )>, + <"ComplexType" : ( + { + "pointer" : 170 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 171 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 172 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 173 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 174 + }, + { + "type_ptr" : 113 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 175 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 176 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 177 + }, + 178 + )>, + <"PointerType" : ( + { + "pointer" : 179 + }, + { + "type_ptr" : 14, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 180 + }, + { + "type_ptr" : 115, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 181 + }, + { + "type_ptr" : 115 + } + )>, + <"RecordType" : ( + { + "pointer" : 182 + }, + 183 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 184 + }, + { + "element_type" : { + "type_ptr" : 182 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 185 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 14 + } + ] + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 18 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 16 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 186 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 186 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 43 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 187 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 25 + }, + 24 + )>, + <"PointerType" : ( + { + "pointer" : 188 + }, + { + "type_ptr" : 25 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 189 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 8 + } + }, + { + "params_type" : [ + { + "type_ptr" : 8 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 40 + }, + { + "return_type" : { + "type_ptr" : 25 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 23 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 58 + }, + { + "type_ptr" : 37 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 34 + }, + { + "type_ptr" : 25, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 190 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 191 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + )>, + <"PointerType" : ( + { + "pointer" : 80 + }, + { + "type_ptr" : 40 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 32 + }, + { + "return_type" : { + "type_ptr" : 113 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + )>, + <"PointerType" : ( + { + "pointer" : 97 + }, + { + "type_ptr" : 20 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 192 + }, + { + "base_type" : 171 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 193 + }, + { + "type_ptr" : 192 + } + )>, + <"TypedefType" : ( + { + "pointer" : 194, + "desugared_type" : 193 + }, + { + "child_type" : { + "type_ptr" : 193 + }, + "decl_ptr" : 195 + } + )>, + <"TypedefType" : ( + { + "pointer" : 112, + "desugared_type" : 193 + }, + { + "child_type" : { + "type_ptr" : 194 + }, + "decl_ptr" : 111 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/filter.sh b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/filter.sh new file mode 100755 index 000000000..ff6b1f183 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/filter.sh @@ -0,0 +1,6 @@ +#/bin/bash +# Copyright (c) 2014-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. +"$@" diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/friend.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/friend.cpp.exp new file mode 100644 index 000000000..132381c3a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/friend.cpp.exp @@ -0,0 +1,1382 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/friend.cpp", + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 22 + } + ) + }, + { + "name" : "AnotherClass", + "qual_name" : [ + "AnotherClass" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 22 + } + ) + }, + { + "name" : "AnotherClass", + "qual_name" : [ + "AnotherClass" + ] + }, + 9, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + }, + "8348715085918813141", + { + "template_decl" : 7, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 10 + }> + ] + } + )> + ] + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ) + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 12, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ) + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + 13, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 14, + "parent_pointer" : 12, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + 13, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 12 + }, + { + } + )>, + <"FriendDecl" : ( + { + "pointer" : 15, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 32 + } + ), + "access" : <"Public"> + }, + <"Type" : 16> + )>, + <"FriendDecl" : ( + { + "pointer" : 17, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "line" : 15, + "column" : 16 + } + ), + "access" : <"Public"> + }, + <"Decl" : <"ClassTemplateDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "line" : 15, + "column" : 16 + } + ) + }, + { + "name" : "AnotherClass", + "qual_name" : [ + "AnotherClass" + ] + }, + { + } + )>> + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 12, + "source_range" : ( + { + "line" : 12, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "17039860285578718334", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 19, + "body" : <"CompoundStmt" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 12, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "10269173081916450237", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 25 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 12, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "15856009432989426751", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 29 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 12, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "12207844931495093295", + { + "template_decl" : 11, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 30 + }> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 31, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "y1", + "qual_name" : [ + "y1" + ] + }, + { + "type_ptr" : 32 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 32 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 19, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 34, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 35, + { + } + )> + ], + { + }, + { + "input_path" : "tests/friend.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 90 + } + )>, + <"ComplexType" : ( + { + "pointer" : 91 + } + )>, + <"ComplexType" : ( + { + "pointer" : 92 + } + )>, + <"ComplexType" : ( + { + "pointer" : 93 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 97 + }, + { + "type_ptr" : 36 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 99 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 100 + }, + 101 + )>, + <"PointerType" : ( + { + "pointer" : 102 + }, + { + "type_ptr" : 30, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 103 + }, + { + "type_ptr" : 38, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 104 + }, + { + "type_ptr" : 38 + } + )>, + <"RecordType" : ( + { + "pointer" : 105 + }, + 106 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 107 + }, + { + "element_type" : { + "type_ptr" : 105 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 108 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 109 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 110 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 111 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 112 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 113 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 114 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 115 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 116 + } + )>, + <"PointerType" : ( + { + "pointer" : 117 + }, + { + "type_ptr" : 108 + } + )>, + <"PointerType" : ( + { + "pointer" : 118 + }, + { + "type_ptr" : 113 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 119 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 120 + } + )>, + <"ElaboratedType" : ( + { + "pointer" : 121, + "desugared_type" : 120 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 122 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 123 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 124 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 125 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 126 + } + )>, + <"RecordType" : ( + { + "pointer" : 13 + }, + 12 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 32, + "desugared_type" : 13 + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 127, + "desugared_type" : 30 + } + )>, + <"PointerType" : ( + { + "pointer" : 10 + }, + { + "type_ptr" : 30 + } + )>, + <"PointerType" : ( + { + "pointer" : 128 + }, + { + "type_ptr" : 127 + } + )>, + <"RecordType" : ( + { + "pointer" : 9 + }, + 8 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 129, + "desugared_type" : 9 + } + )>, + <"ElaboratedType" : ( + { + "pointer" : 16, + "desugared_type" : 9 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 130 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 131 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 132 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 25 + }, + { + "type_ptr" : 13, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 133 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 23 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 29 + }, + { + "type_ptr" : 13 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 134 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 29 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + "params_type" : [ + { + "type_ptr" : 29 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 36 + } + }, + { + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 135 + }, + { + "base_type" : 94 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 136 + }, + { + "type_ptr" : 135 + } + )>, + <"TypedefType" : ( + { + "pointer" : 137, + "desugared_type" : 136 + }, + { + "child_type" : { + "type_ptr" : 136 + }, + "decl_ptr" : 138 + } + )>, + <"TypedefType" : ( + { + "pointer" : 35, + "desugared_type" : 136 + }, + { + "child_type" : { + "type_ptr" : 137 + }, + "decl_ptr" : 34 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/function_template.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/function_template.cpp.exp new file mode 100644 index 000000000..b473f547c --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/function_template.cpp.exp @@ -0,0 +1,2163 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionTemplateDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/function_template.cpp", + "line" : 8, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "specializations" : [ + <"FunctionDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 9 + }, + { + "mangled_name" : "18441705267350886400", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 9, + "column" : 7 + }, + { + "column" : 9 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 8, + "body" : <"CompoundStmt" : ( + { + "pointer" : 12, + "source_range" : ( + { + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 13, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 10, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )>, + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 16 + }> + ] + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 17, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "1909523640421882241", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 19, + "source_range" : ( + { + "line" : 9, + "column" : 7 + }, + { + "column" : 9 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 17, + "body" : <"CompoundStmt" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 22, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 23, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 20 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 19, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )>, + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 25 + }> + ] + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 26, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "2862116284697721030", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 28, + "source_range" : ( + { + "line" : 9, + "column" : 7 + }, + { + "column" : 9 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 29 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 26, + "body" : <"CompoundStmt" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 12 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 31, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 29 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 28, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 29 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )>, + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 34 + }> + ] + } + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 35, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "line" : 17, + "column" : 1 + } + ) + }, + { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "8674435321115121355", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 37, + "source_range" : ( + { + "line" : 15, + "column" : 9 + }, + { + "column" : 13 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 38 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 35, + "body" : <"CompoundStmt" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 16 + }, + { + "line" : 17, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 40, + "source_range" : ( + { + "line" : 16, + "column" : 3 + }, + { + "column" : 14 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 14 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 42, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 43, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 38 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 37, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 38 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 38 + } + }, + { + "kind" : <"Mul"> + } + )> + ] + )> + ] + )>, + "template_specialization" : { + "template_decl" : 7, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 38 + }> + ] + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 45, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "line" : 27, + "column" : 1 + } + ) + }, + { + "name" : "test", + "qual_name" : [ + "test" + ] + }, + { + "type_ptr" : 46 + }, + { + "mangled_name" : "18241244337164948030", + "is_cpp" : true, + "decl_ptr_with_body" : 45, + "body" : <"CompoundStmt" : ( + { + "pointer" : 47, + "source_range" : ( + { + "line" : 22, + "column" : 13 + }, + { + "line" : 27, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 48, + "source_range" : ( + { + "line" : 23, + "column" : 3 + }, + { + "column" : 9 + } + ) + }, + [ + ], + [ + <"VarDecl" : ( + { + "pointer" : 49, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 25 + }, + { + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 50, + "source_range" : ( + { + "line" : 24, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + ], + [ + <"VarDecl" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 9 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 34 + }, + { + } + )> + ] + )>, + <"BinaryOperator" : ( + { + "pointer" : 52, + "source_range" : ( + { + "line" : 25, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 49, + "name" : { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + )>, + <"CallExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 12 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 56, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 17, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + "qual_type" : { + "type_ptr" : 18 + } + }, + "found_decl_ref" : { + "kind" : <"FunctionTemplate">, + "decl_pointer" : 7, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 57 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 49, + "name" : { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 20 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )>, + <"BinaryOperator" : ( + { + "pointer" : 60, + "source_range" : ( + { + "line" : 26, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 34 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 51, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 34 + } + } + } + )>, + <"CallExpr" : ( + { + "pointer" : 62, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 12 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 64, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 27 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 26, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + }, + "qual_type" : { + "type_ptr" : 27 + } + }, + "found_decl_ref" : { + "kind" : <"FunctionTemplate">, + "decl_pointer" : 7, + "name" : { + "name" : "get", + "qual_name" : [ + "get" + ] + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 65 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 67, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 34 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 51, + "name" : { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + "qual_type" : { + "type_ptr" : 34 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 34 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 29 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 34 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 68, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 69, + { + } + )> + ], + { + }, + { + "input_path" : "tests/function_template.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 16 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 99 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 101 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 102 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 106 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 107 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 108 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 109 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 110 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 111 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 112 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 113 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 114 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 115 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 116 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 117 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 120 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 121 + } + )>, + <"ComplexType" : ( + { + "pointer" : 122 + } + )>, + <"ComplexType" : ( + { + "pointer" : 123 + } + )>, + <"ComplexType" : ( + { + "pointer" : 124 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 128 + }, + { + "type_ptr" : 70 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 131 + }, + 132 + )>, + <"PointerType" : ( + { + "pointer" : 133 + }, + { + "type_ptr" : 38, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 134 + }, + { + "type_ptr" : 25, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 135 + }, + { + "type_ptr" : 25 + } + )>, + <"RecordType" : ( + { + "pointer" : 136 + }, + 137 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 138 + }, + { + "element_type" : { + "type_ptr" : 136 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 139 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 140 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 141 + }, + { + "return_type" : { + "type_ptr" : 139 + } + }, + { + "params_type" : [ + { + "type_ptr" : 139 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 142 + }, + { + "return_type" : { + "type_ptr" : 140 + } + }, + { + "params_type" : [ + { + "type_ptr" : 140 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 38 + } + }, + { + "params_type" : [ + { + "type_ptr" : 38 + } + ] + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 143, + "desugared_type" : 38 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 144 + }, + { + "return_type" : { + "type_ptr" : 143 + } + }, + { + "params_type" : [ + { + "type_ptr" : 143 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 145 + }, + { + "return_type" : { + "type_ptr" : 16 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 11, + "desugared_type" : 16 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 9 + }, + { + "return_type" : { + "type_ptr" : 11 + } + }, + { + "params_type" : [ + { + "type_ptr" : 11 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 46 + }, + { + "return_type" : { + "type_ptr" : 70 + } + }, + { + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 20, + "desugared_type" : 25 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 146 + }, + { + "return_type" : { + "type_ptr" : 25 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 20 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"PointerType" : ( + { + "pointer" : 147 + }, + { + "type_ptr" : 146 + } + )>, + <"PointerType" : ( + { + "pointer" : 57 + }, + { + "type_ptr" : 18 + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 29, + "desugared_type" : 34 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 148 + }, + { + "return_type" : { + "type_ptr" : 34 + } + }, + { + "params_type" : [ + { + "type_ptr" : 34 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 29 + } + }, + { + "params_type" : [ + { + "type_ptr" : 29 + } + ] + } + )>, + <"PointerType" : ( + { + "pointer" : 149 + }, + { + "type_ptr" : 148 + } + )>, + <"PointerType" : ( + { + "pointer" : 65 + }, + { + "type_ptr" : 27 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 150 + }, + { + "base_type" : 125 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 151 + }, + { + "type_ptr" : 150 + } + )>, + <"TypedefType" : ( + { + "pointer" : 152, + "desugared_type" : 151 + }, + { + "child_type" : { + "type_ptr" : 151 + }, + "decl_ptr" : 153 + } + )>, + <"TypedefType" : ( + { + "pointer" : 69, + "desugared_type" : 151 + }, + { + "child_type" : { + "type_ptr" : 152 + }, + "decl_ptr" : 68 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/generic_selector_expression.c.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/generic_selector_expression.c.exp new file mode 100644 index 000000000..dc07f2f06 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/generic_selector_expression.c.exp @@ -0,0 +1,1947 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/generic_selector_expression.c", + "line" : 9, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + { + "name" : "test_typename", + "qual_name" : [ + "test_typename" + ] + }, + { + "type_ptr" : 8 + }, + { + "decl_ptr_with_body" : 7, + "body" : <"CompoundStmt" : ( + { + "pointer" : 9, + "source_range" : ( + { + "line" : 9, + "column" : 25 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 9 + } + ) + }, + [ + ], + [ + <"VarDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 8 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + { + "type_ptr" : 12 + }, + { + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 13, + "source_range" : ( + { + "line" : 11, + "column" : 3 + }, + { + "column" : 8 + } + ) + }, + [ + ], + [ + <"VarDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 7 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 15 + }, + { + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 18 + } + ) + }, + [ + <"GenericSelectionExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ParenExpr" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 22, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 23, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "value" : <"IntegerLiteral" : ( + { + "pointer" : 22, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 11 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 15 + }, + { + "init_expr" : <"GenericSelectionExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ParenExpr" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "s", + "qual_name" : [ + "s" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 22, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 23, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "value" : <"IntegerLiteral" : ( + { + "pointer" : 22, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 26, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 18 + } + ) + }, + [ + <"GenericSelectionExpr" : ( + { + "pointer" : 27, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ParenExpr" : ( + { + "pointer" : 29, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 14, + "name" : { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + }, + "value_kind" : <"LValue"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 31, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "value" : <"IntegerLiteral" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 35, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 11 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "z", + "qual_name" : [ + "z" + ] + }, + { + "type_ptr" : 15 + }, + { + "init_expr" : <"GenericSelectionExpr" : ( + { + "pointer" : 27, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"ParenExpr" : ( + { + "pointer" : 29, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 14, + "name" : { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + }, + "value_kind" : <"LValue"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 31, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "value" : <"IntegerLiteral" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + } + )> + } + )> + ] + )>, + <"ReturnStmt" : ( + { + "pointer" : 36, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 14 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 37, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 14 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 25, + "name" : { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 35, + "name" : { + "name" : "z", + "qual_name" : [ + "z" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "kind" : <"Add"> + } + )> + ] + )> + ] + )> + } + )>, + <"EmptyDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "line" : 15, + "column" : 2 + }, + { + "column" : 2 + } + ) + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 43, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 44, + { + } + )> + ], + { + }, + { + "input_path" : "tests/generic_selector_expression.c", + "input_kind" : <"IK_C">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 12 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 15 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 96 + } + )>, + <"ComplexType" : ( + { + "pointer" : 97 + } + )>, + <"ComplexType" : ( + { + "pointer" : 98 + } + )>, + <"ComplexType" : ( + { + "pointer" : 99 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 101 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 102 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 103 + }, + { + "type_ptr" : 45 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 106 + }, + 107 + )>, + <"PointerType" : ( + { + "pointer" : 108 + }, + { + "type_ptr" : 15, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 109 + }, + { + "type_ptr" : 12, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 110 + }, + { + "type_ptr" : 12 + } + )>, + <"RecordType" : ( + { + "pointer" : 111 + }, + 112 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 113 + }, + { + "element_type" : { + "type_ptr" : 111 + }, + "stride" : 24 + }, + 1 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 15 + } + }, + { + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 114 + }, + { + "base_type" : 100 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 115 + }, + { + "type_ptr" : 114 + } + )>, + <"TypedefType" : ( + { + "pointer" : 116, + "desugared_type" : 115 + }, + { + "child_type" : { + "type_ptr" : 115 + }, + "decl_ptr" : 117 + } + )>, + <"TypedefType" : ( + { + "pointer" : 44, + "desugared_type" : 115 + }, + { + "child_type" : { + "type_ptr" : 116 + }, + "decl_ptr" : 43 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheritance.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheritance.cpp.exp new file mode 100644 index 000000000..7fc516db3 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheritance.cpp.exp @@ -0,0 +1,3479 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/inheritance.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 26 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "sqrt", + "qual_name" : [ + "sqrt" + ] + }, + { + "type_ptr" : 8 + }, + { + "mangled_name" : "4816046332438161094", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 9, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 20 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "column" : 33 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "pow", + "qual_name" : [ + "pow" + ] + }, + { + "type_ptr" : 12 + }, + { + "mangled_name" : "13660907022155764957", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 1 + } + )> + ] + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 15, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "line" : 21, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "Form", + "qual_name" : [ + "Form" + ] + }, + 16, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Form", + "qual_name" : [ + "Form", + "Form" + ] + }, + 16, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 18, + "source_range" : ( + { + "line" : 11, + "column" : 2 + }, + { + "column" : 9 + } + ), + "access" : <"Private"> + } + )>, + <"FieldDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 10 + } + ), + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + { + "type_ptr" : 10 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 20, + "source_range" : ( + { + "line" : 14, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"FieldDecl" : ( + { + "pointer" : 21, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 15, + "column" : 3 + }, + { + "column" : 7 + } + ), + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "color", + "qual_name" : [ + "color", + "Form" + ] + }, + { + "type_ptr" : 22 + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 16, + "column" : 3 + }, + { + "column" : 27 + } + ), + "access" : <"Public"> + }, + { + "name" : "vmethod", + "qual_name" : [ + "vmethod", + "Form" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "9163681093625571351", + "is_cpp" : true, + "decl_ptr_with_body" : 23, + "body" : <"CompoundStmt" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 27 + } + ) + }, + [ + ] + )> + }, + { + "is_virtual" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 18, + "column" : 3 + }, + { + "column" : 41 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "getArea", + "qual_name" : [ + "getArea", + "Form" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "261422336308970065", + "is_cpp" : true, + "decl_ptr_with_body" : 26, + "body" : <"CompoundStmt" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 41 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 29, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 35 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 30, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 35 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 31, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 35 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 19, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 20, + "column" : 3 + }, + { + "column" : 50 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "setArea", + "qual_name" : [ + "setArea", + "Form" + ] + }, + { + "type_ptr" : 35 + }, + { + "mangled_name" : "5322570675579474415", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 23 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "area", + "qual_name" : [ + "area" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 34, + "body" : <"CompoundStmt" : ( + { + "pointer" : 37, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 50 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 44 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 37 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 31 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 33 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 19, + "name" : { + "name" : "area", + "qual_name" : [ + "area", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 44 + }, + { + "column" : 44 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 42, + "source_range" : ( + { + "column" : 44 + }, + { + "column" : 44 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 36, + "name" : { + "name" : "area", + "qual_name" : [ + "area" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )> + ] + )> + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 43, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 10, + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Form" + ] + }, + { + "type_ptr" : 44 + }, + { + "mangled_name" : "4640576070247419134", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 45, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 46 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 47, + "parent_pointer" : 15, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Form" + ] + }, + { + "type_ptr" : 48 + }, + { + "mangled_name" : "2917574045643344002", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 49, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 50 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 51, + "parent_pointer" : 15, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~Form", + "qual_name" : [ + "~Form", + "Form" + ] + }, + { + "type_ptr" : 52 + }, + { + "mangled_name" : "7469005664164565375", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 15, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 51, + "name" : { + "name" : "~Form", + "qual_name" : [ + "~Form", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 52 + } + } + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 53, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "line" : 35, + "column" : 1 + } + ) + }, + { + "name" : "Circle", + "qual_name" : [ + "Circle" + ] + }, + 54, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 55, + "parent_pointer" : 53, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Circle", + "qual_name" : [ + "Circle", + "Circle" + ] + }, + 54, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 56, + "source_range" : ( + { + "line" : 24, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 57, + "parent_pointer" : 53, + "source_range" : ( + { + "line" : 25, + "column" : 3 + }, + { + "column" : 28 + } + ), + "attributes" : [ + <"OverrideAttr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + } + )> + ], + "access" : <"Public"> + }, + { + "name" : "vmethod", + "qual_name" : [ + "vmethod", + "Circle" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "5817484235031938003", + "is_cpp" : true, + "decl_ptr_with_body" : 57, + "body" : <"CompoundStmt" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 28 + } + ) + }, + [ + ] + )> + }, + { + "is_virtual" : true, + "overriden_methods" : [ + { + "kind" : <"CXXMethod">, + "decl_pointer" : 23, + "name" : { + "name" : "vmethod", + "qual_name" : [ + "vmethod", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 24 + } + } + ] + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 60, + "parent_pointer" : 53, + "source_range" : ( + { + "line" : 26, + "column" : 3 + }, + { + "line" : 30, + "column" : 3 + } + ), + "access" : <"Public"> + }, + { + "name" : "getRatio", + "qual_name" : [ + "getRatio", + "Circle" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "6347748275554434892", + "is_cpp" : true, + "decl_ptr_with_body" : 60, + "body" : <"CompoundStmt" : ( + { + "pointer" : 61, + "source_range" : ( + { + "line" : 26, + "column" : 21 + }, + { + "line" : 30, + "column" : 3 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 62, + "source_range" : ( + { + "line" : 27, + "column" : 5 + }, + { + "column" : 13 + } + ) + }, + [ + ], + [ + <"VarDecl" : ( + { + "pointer" : 63, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 12 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 10 + }, + { + } + )> + ] + )>, + <"BinaryOperator" : ( + { + "pointer" : 64, + "source_range" : ( + { + "line" : 28, + "column" : 5 + }, + { + "column" : 17 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 65, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 63, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )>, + <"CXXMemberCallExpr" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 17 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 67, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 68, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 69, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "cast_kind" : <"UncheckedDerivedToBase">, + "base_path" : [ + { + "name" : "Form" + } + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "getArea", + "qual_name" : [ + "getArea", + "Form" + ] + }, + "decl_ref" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 26, + "name" : { + "name" : "getArea", + "qual_name" : [ + "getArea", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 27 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )>, + <"ReturnStmt" : ( + { + "pointer" : 72, + "source_range" : ( + { + "line" : 29, + "column" : 5 + }, + { + "column" : 29 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 7, + "name" : { + "name" : "sqrt", + "qual_name" : [ + "sqrt" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 76 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"BinaryOperator" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 25 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 21 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 17 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 80, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 17 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 63, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 82, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"IntegralToFloating">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : <"Div"> + } + )>, + <"FloatingLiteral" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 25 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + "3.1400000000000001" + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : <"Mul"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 84, + "parent_pointer" : 53, + "source_range" : ( + { + "line" : 32, + "column" : 3 + }, + { + "column" : 76 + } + ), + "access" : <"Public"> + }, + { + "name" : "setRatio", + "qual_name" : [ + "setRatio", + "Circle" + ] + }, + { + "type_ptr" : 35 + }, + { + "mangled_name" : "8248811014851696566", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 24 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "diameter", + "qual_name" : [ + "diameter" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 84, + "body" : <"CompoundStmt" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 76 + } + ) + }, + [ + <"CXXMemberCallExpr" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 36 + }, + { + "column" : 73 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 36 + }, + { + "column" : 36 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 36 + }, + { + "column" : 36 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 36 + }, + { + "column" : 36 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "cast_kind" : <"UncheckedDerivedToBase">, + "base_path" : [ + { + "name" : "Form" + } + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 71 + } + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "setArea", + "qual_name" : [ + "setArea", + "Form" + ] + }, + "decl_ref" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 34, + "name" : { + "name" : "setArea", + "qual_name" : [ + "setArea", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 35 + } + } + } + )>, + <"BinaryOperator" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 44 + }, + { + "column" : 69 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 92, + "source_range" : ( + { + "column" : 44 + }, + { + "column" : 65 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 93, + "source_range" : ( + { + "column" : 44 + }, + { + "column" : 44 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 44 + }, + { + "column" : 44 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 11, + "name" : { + "name" : "pow", + "qual_name" : [ + "pow" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 95 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )>, + <"BinaryOperator" : ( + { + "pointer" : 96, + "source_range" : ( + { + "column" : 48 + }, + { + "column" : 59 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 97, + "source_range" : ( + { + "column" : 48 + }, + { + "column" : 48 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 98, + "source_range" : ( + { + "column" : 48 + }, + { + "column" : 48 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 85, + "name" : { + "name" : "diameter", + "qual_name" : [ + "diameter" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"FloatingLiteral" : ( + { + "pointer" : 99, + "source_range" : ( + { + "column" : 59 + }, + { + "column" : 59 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + "0.5" + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : <"Mul"> + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 100, + "source_range" : ( + { + "column" : 64 + }, + { + "column" : 64 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 101, + "source_range" : ( + { + "column" : 64 + }, + { + "column" : 64 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"IntegralToFloating">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + } + )>, + <"FloatingLiteral" : ( + { + "pointer" : 102, + "source_range" : ( + { + "column" : 69 + }, + { + "column" : 69 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + "3.1400000000000001" + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "kind" : <"Mul"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 103 + } + } + )> + ] + )> + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 104, + "parent_pointer" : 53, + "source_range" : ( + { + "line" : 34, + "column" : 3 + }, + { + "column" : 40 + } + ), + "access" : <"Public"> + }, + { + "name" : "isDark", + "qual_name" : [ + "isDark", + "Circle" + ] + }, + { + "type_ptr" : 105 + }, + { + "mangled_name" : "1657580448964179997", + "is_cpp" : true, + "decl_ptr_with_body" : 104, + "body" : <"CompoundStmt" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 40 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 107, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 37 + } + ) + }, + [ + <"ParenExpr" : ( + { + "pointer" : 108, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 37 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 109, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 35 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 110, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 111, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 112, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 113, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 70 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 33 + } + }, + { + "cast_kind" : <"UncheckedDerivedToBase">, + "base_path" : [ + { + "name" : "Form" + } + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + }, + "value_kind" : <"LValue"> + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "color", + "qual_name" : [ + "color", + "Form" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 21, + "name" : { + "name" : "color", + "qual_name" : [ + "color", + "Form" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 114, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 35 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 115 + } + }, + { + "kind" : <"GT"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 115 + } + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 116, + "parent_pointer" : 53, + "source_range" : ( + { + "line" : 23, + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Circle" + ] + }, + { + "type_ptr" : 117 + }, + { + "mangled_name" : "15331083219049658522", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 118, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 119 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 120, + "parent_pointer" : 53, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "Circle" + ] + }, + { + "type_ptr" : 121 + }, + { + "mangled_name" : "10302011452979039278", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 122, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 123 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 124, + "parent_pointer" : 53, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~Circle", + "qual_name" : [ + "~Circle", + "Circle" + ] + }, + { + "type_ptr" : 125 + }, + { + "mangled_name" : "4580501627556196443", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 53, + "is_complete_definition" : true + }, + { + "bases" : [ + 16 + ], + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 124, + "name" : { + "name" : "~Circle", + "qual_name" : [ + "~Circle", + "Circle" + ] + }, + "qual_type" : { + "type_ptr" : 125 + } + } + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 126, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 127, + { + } + )> + ], + { + }, + { + "input_path" : "tests/inheritance.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 115 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 10 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 139 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 140 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 141 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 142 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 143 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 144 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 145 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 146 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 149 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 150 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 151 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 152 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 153 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 154 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 155 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 156 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 157 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 158 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 159 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 160 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 161 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 162 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 163 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 164 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 165 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 166 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 167 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 168 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 169 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 170 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 171 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 172 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 173 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 174 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 175 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 176 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 177 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 178 + } + )>, + <"ComplexType" : ( + { + "pointer" : 179 + } + )>, + <"ComplexType" : ( + { + "pointer" : 180 + } + )>, + <"ComplexType" : ( + { + "pointer" : 181 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 182 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 183 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 184 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 185 + }, + { + "type_ptr" : 103 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 186 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 187 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 188 + }, + 189 + )>, + <"PointerType" : ( + { + "pointer" : 190 + }, + { + "type_ptr" : 22, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 191 + }, + { + "type_ptr" : 128, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 192 + }, + { + "type_ptr" : 128 + } + )>, + <"RecordType" : ( + { + "pointer" : 193 + }, + 194 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 195 + }, + { + "element_type" : { + "type_ptr" : 193 + }, + "stride" : 24 + }, + 1 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 10 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 10 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + }, + { + "type_ptr" : 10 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 16 + }, + 15 + )>, + <"PointerType" : ( + { + "pointer" : 33 + }, + { + "type_ptr" : 16 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 10 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 35 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + } + ] + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 196 + }, + { + "type_ptr" : 16 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 46 + }, + { + "type_ptr" : 16, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 197 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 46 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 44 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 46 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 50 + }, + { + "type_ptr" : 16 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 198 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 50 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 48 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + "params_type" : [ + { + "type_ptr" : 50 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 52 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 54 + }, + 53 + )>, + <"PointerType" : ( + { + "pointer" : 70 + }, + { + "type_ptr" : 54 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 105 + }, + { + "return_type" : { + "type_ptr" : 115 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 199 + }, + { + "type_ptr" : 54 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 119 + }, + { + "type_ptr" : 54, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 200 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 119 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 117 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 119 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 123 + }, + { + "type_ptr" : 54 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 201 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 123 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 121 + }, + { + "return_type" : { + "type_ptr" : 199 + } + }, + { + "params_type" : [ + { + "type_ptr" : 123 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 125 + }, + { + "return_type" : { + "type_ptr" : 103 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 76 + }, + { + "type_ptr" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 95 + }, + { + "type_ptr" : 12 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 202 + }, + { + "base_type" : 182 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 203 + }, + { + "type_ptr" : 202 + } + )>, + <"TypedefType" : ( + { + "pointer" : 204, + "desugared_type" : 203 + }, + { + "child_type" : { + "type_ptr" : 203 + }, + "decl_ptr" : 205 + } + )>, + <"TypedefType" : ( + { + "pointer" : 127, + "desugared_type" : 203 + }, + { + "child_type" : { + "type_ptr" : 204 + }, + "decl_ptr" : 126 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheriting_constructor.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheriting_constructor.cpp.exp new file mode 100644 index 000000000..fd9b06840 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/inheriting_constructor.cpp.exp @@ -0,0 +1,1955 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/inheriting_constructor.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 3 + }, + { + "column" : 11 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "14779048587651412014", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 13 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 10, + "body" : <"CompoundStmt" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 11 + } + ) + }, + [ + ] + )> + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 15, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 9, + "column" : 3 + }, + { + "column" : 14 + } + ), + "access" : <"Public"> + }, + { + "name" : "foo", + "qual_name" : [ + "foo", + "A" + ] + }, + { + "type_ptr" : 16 + }, + { + "mangled_name" : "11285596688767843576", + "is_cpp" : true, + "decl_ptr_with_body" : 15, + "body" : <"CompoundStmt" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 14 + } + ) + }, + [ + ] + )> + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 19 + }, + { + "mangled_name" : "3430056695640597274", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 21 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + { + "type_ptr" : 23 + }, + { + "mangled_name" : "1361265890968139694", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 25 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "5328378654181921475", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 26, + "name" : { + "name" : "~A", + "qual_name" : [ + "~A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 27 + } + } + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 29, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 28, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 29, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"UsingDecl" : ( + { + "pointer" : 31, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 12 + } + ), + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + )>, + <"ConstructorUsingShadowDecl" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + )>, + <"ConstructorUsingShadowDecl" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + )>, + <"ConstructorUsingShadowDecl" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 35, + "parent_pointer" : 28, + "source_range" : ( + { + "line" : 12, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 36 + }, + { + "mangled_name" : "10798876524598897542", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 37, + "parent_pointer" : 28, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 38 + }, + { + "mangled_name" : "7710293714478488613", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 40 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 41, + "parent_pointer" : 28, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + { + "type_ptr" : 42 + }, + { + "mangled_name" : "16903082029399050859", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 43, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 44 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 45, + "parent_pointer" : 28, + "source_range" : ( + { + "line" : 13, + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "B" + ] + }, + { + "type_ptr" : 46 + }, + { + "mangled_name" : "18258347749069050656", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 13 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 45, + "body" : <"CompoundStmt" : ( + { + "pointer" : 48, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ] + )> + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : <"BaseClass" : ( + 8, + false + )>, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "init_expr" : <"CXXInheritedCtorInitExpr" : ( + { + "pointer" : 49, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 10, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )> + } + ] + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 28, + "is_complete_definition" : true + }, + { + "bases" : [ + 8 + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 50, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "column" : 22 + } + ) + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 51 + }, + { + "is_cpp" : true, + "decl_ptr_with_body" : 50, + "body" : <"CompoundStmt" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 22 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 20 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 19 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 45, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 46 + } + } + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 19 + } + ) + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 29 + }, + { + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 19 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 45, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "B" + ] + }, + "qual_type" : { + "type_ptr" : 46 + } + } + } + )> + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 57, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 58, + { + } + )> + ], + { + }, + { + "input_path" : "tests/inheriting_constructor.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 13 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 99 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 101 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 102 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 106 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 107 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 108 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 109 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 110 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 111 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 112 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 113 + } + )>, + <"ComplexType" : ( + { + "pointer" : 114 + } + )>, + <"ComplexType" : ( + { + "pointer" : 115 + } + )>, + <"ComplexType" : ( + { + "pointer" : 116 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 117 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 120 + }, + { + "type_ptr" : 59 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 121 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 123 + }, + 124 + )>, + <"PointerType" : ( + { + "pointer" : 125 + }, + { + "type_ptr" : 13, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 126 + }, + { + "type_ptr" : 61, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 127 + }, + { + "type_ptr" : 61 + } + )>, + <"RecordType" : ( + { + "pointer" : 128 + }, + 129 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 130 + }, + { + "element_type" : { + "type_ptr" : 128 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 131 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 13 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 16 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 29 + }, + 28 + )>, + <"LValueReferenceType" : ( + { + "pointer" : 21 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 132 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 21 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 19 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 21 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 25 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 133 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 23 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 25 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 36 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 40 + }, + { + "type_ptr" : 29, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 134 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 40 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 38 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 40 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 44 + }, + { + "type_ptr" : 29 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 135 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 44 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 42 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 44 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 51 + }, + { + "return_type" : { + "type_ptr" : 13 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 136 + }, + { + "type_ptr" : 127 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 137 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 13 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 46 + }, + { + "return_type" : { + "type_ptr" : 59 + } + }, + { + "params_type" : [ + { + "type_ptr" : 13 + } + ] + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 138 + }, + { + "base_type" : 117 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 139 + }, + { + "type_ptr" : 138 + } + )>, + <"TypedefType" : ( + { + "pointer" : 140, + "desugared_type" : 139 + }, + { + "child_type" : { + "type_ptr" : 139 + }, + "decl_ptr" : 141 + } + )>, + <"TypedefType" : ( + { + "pointer" : 58, + "desugared_type" : 139 + }, + { + "child_type" : { + "type_ptr" : 140 + }, + "decl_ptr" : 57 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/lambda.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/lambda.cpp.exp new file mode 100644 index 000000000..07291afca --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/lambda.cpp.exp @@ -0,0 +1,6589 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/lambda.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 17, + "column" : 1 + } + ) + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_cpp" : true, + "decl_ptr_with_body" : 7, + "body" : <"CompoundStmt" : ( + { + "pointer" : 9, + "source_range" : ( + { + "line" : 7, + "column" : 12 + }, + { + "line" : 17, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 8, + "column" : 3 + }, + { + "column" : 11 + } + ) + }, + [ + ], + [ + <"VarDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 7 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + { + "type_ptr" : 12 + }, + { + } + )>, + <"VarDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 10 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + { + "type_ptr" : 12 + }, + { + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 14, + "source_range" : ( + { + "line" : 10, + "column" : 3 + }, + { + "column" : 30 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"LambdaExpr" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 26 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ] + )> + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "lambda_decl" : <"CXXRecordDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + 22, + [ + <"CXXMethodDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 29 + } + ), + "access" : <"Public"> + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8700561857799965393", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 24, + "body" : <"CompoundStmt" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 26 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"CXXConversionDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator int (*)()", + "qual_name" : [ + "operator int (*)()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "13435645424728763319", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ), + "is_implicit" : true, + "access" : <"Private"> + }, + { + "name" : "__invoke", + "qual_name" : [ + "__invoke", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 29 + }, + { + "mangled_name" : "17605822925966688033", + "is_cpp" : true, + "is_inline" : true, + "is_static" : true + }, + { + "is_static" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "11922868141377072075", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 32, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 33 + }, + { + "mangled_name" : "11530695906998885266", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 35 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 36, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "12828931072019093462", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 39 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 36, + "body" : <"CompoundStmt" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 23, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 30, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 24, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + }, + "value_kind" : <"XValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + }, + "is_elidable" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 29 + } + ) + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 41 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"LambdaExpr" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ) + }, + [ + <"CompoundStmt" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 26 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ] + )> + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "lambda_decl" : <"CXXRecordDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + 22, + [ + <"CXXMethodDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 29 + } + ), + "access" : <"Public"> + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8700561857799965393", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 24, + "body" : <"CompoundStmt" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 26 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"CXXConversionDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator int (*)()", + "qual_name" : [ + "operator int (*)()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 27 + }, + { + "mangled_name" : "13435645424728763319", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 29 + } + ), + "is_implicit" : true, + "access" : <"Private"> + }, + { + "name" : "__invoke", + "qual_name" : [ + "__invoke", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 29 + }, + { + "mangled_name" : "17605822925966688033", + "is_cpp" : true, + "is_inline" : true, + "is_static" : true + }, + { + "is_static" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "11922868141377072075", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 32, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 33 + }, + { + "mangled_name" : "11530695906998885266", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 35 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 36, + "parent_pointer" : 23, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "12828931072019093462", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 39 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 36, + "body" : <"CompoundStmt" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 23, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 30, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 24, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + } + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + }, + "value_kind" : <"XValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:10:12", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + }, + "is_elidable" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 41 + } + }, + { + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 43, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 42 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 45, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 46, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"LambdaExpr" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 48, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 49, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 41 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 38 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + } + }, + { + "lambda_decl" : <"CXXRecordDecl" : ( + { + "pointer" : 56, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + 55, + [ + <"CXXMethodDecl" : ( + { + "pointer" : 57, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 41 + } + ), + "access" : <"Public"> + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 58 + }, + { + "mangled_name" : "19264279795607331", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 26 + } + ) + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 12 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 57, + "body" : <"CompoundStmt" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 41 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 38 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 60, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 61 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 62, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 12 + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 63, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "16202408192376244884", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 64, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 65 + }, + { + "mangled_name" : "9965911517403679447", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 68, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 69 + }, + { + "mangled_name" : "8193408137476215445", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 71 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 68, + "body" : <"CompoundStmt" : ( + { + "pointer" : 72, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + }>, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "init_expr" : <"MemberExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXStaticCastExpr" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"XValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + } + } + )> + }, + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }>, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXStaticCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"XValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"XValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + ] + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 56, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 63, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 57, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 58 + } + }, + "lambda_captures" : [ + { + "capture_kind" : <"LCK_ByRef">, + "capture_variable" : true, + "captured_var" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + { + "capture_kind" : <"LCK_ByCopy">, + "capture_variable" : true, + "captured_var" : { + "kind" : <"Var">, + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + } + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"XValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 68, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 69 + } + }, + "is_elidable" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 41 + } + ) + }, + { + "name" : "bar", + "qual_name" : [ + "bar" + ] + }, + { + "type_ptr" : 80 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 45, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 46, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"LambdaExpr" : ( + { + "pointer" : 47, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 41 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 48, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 49, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 50, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 41 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 38 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + } + }, + { + "lambda_decl" : <"CXXRecordDecl" : ( + { + "pointer" : 56, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + 55, + [ + <"CXXMethodDecl" : ( + { + "pointer" : 57, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 41 + } + ), + "access" : <"Public"> + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 58 + }, + { + "mangled_name" : "19264279795607331", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 26 + } + ) + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 12 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 57, + "body" : <"CompoundStmt" : ( + { + "pointer" : 51, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 41 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 38 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 53, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 54, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 38 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 60, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 61 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 62, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 12 + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 63, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "16202408192376244884", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 64, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 65 + }, + { + "mangled_name" : "9965911517403679447", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 68, + "parent_pointer" : 56, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + { + "type_ptr" : 69 + }, + { + "mangled_name" : "8193408137476215445", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 71 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 68, + "body" : <"CompoundStmt" : ( + { + "pointer" : 72, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + }>, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "init_expr" : <"MemberExpr" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXStaticCastExpr" : ( + { + "pointer" : 74, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 75, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"XValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"LValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 60, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 61 + } + } + } + )> + }, + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }>, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ), + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"CXXStaticCastExpr" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 14 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 70, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 71 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"XValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 71 + }, + "static_cast" + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + }, + "value_kind" : <"XValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 62, + "name" : { + "name" : "__anon_field_1", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + ] + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 56, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 63, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 57, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 58 + } + }, + "lambda_captures" : [ + { + "capture_kind" : <"LCK_ByRef">, + "capture_variable" : true, + "captured_var" : { + "kind" : <"Var">, + "decl_pointer" : 11, + "name" : { + "name" : "m", + "qual_name" : [ + "m" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + { + "capture_kind" : <"LCK_ByCopy">, + "capture_variable" : true, + "captured_var" : { + "kind" : <"Var">, + "decl_pointer" : 13, + "name" : { + "name" : "n", + "qual_name" : [ + "n" + ] + }, + "qual_type" : { + "type_ptr" : 12 + } + }, + "location" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + } + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 55 + }, + "value_kind" : <"XValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 68, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:12:14", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 69 + } + }, + "is_elidable" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 82, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 46 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"LambdaExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 45 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 42 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 94 + } + }, + { + "lambda_decl" : <"CXXRecordDecl" : ( + { + "pointer" : 95, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + 94, + [ + <"CXXMethodDecl" : ( + { + "pointer" : 96, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 45 + } + ), + "access" : <"Public"> + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8151698240653651715", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 96, + "body" : <"CompoundStmt" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 45 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 42 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 97, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 92 + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 98, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "17098733838812833493", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 99, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 100 + }, + { + "mangled_name" : "14201972727608021968", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 101, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 102 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 103, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 104 + }, + { + "mangled_name" : "3001717133787422796", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 105, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 106 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 103, + "body" : <"CompoundStmt" : ( + { + "pointer" : 107, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }>, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 108, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 109, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"CXXStaticCastExpr" : ( + { + "pointer" : 110, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 111, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 105, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 106 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : <"XValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 106 + }, + "static_cast" + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + }, + "value_kind" : <"XValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + ] + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 95, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 98, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 96, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "lambda_captures" : [ + { + "capture_kind" : <"LCK_ByCopy">, + "capture_variable" : true, + "init_captured_vardecl" : <"VarDecl" : ( + { + "pointer" : 93, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 28 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 92 + }, + { + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )>, + "captured_var" : { + "kind" : <"Var">, + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }, + "location" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + } + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : <"XValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 103, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 104 + } + }, + "is_elidable" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 113, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 45 + } + ) + }, + { + "name" : "init_capture", + "qual_name" : [ + "init_capture" + ] + }, + { + "type_ptr" : 112 + }, + { + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"LambdaExpr" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 45 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )>, + <"CompoundStmt" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 45 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 42 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + ], + { + "qual_type" : { + "type_ptr" : 94 + } + }, + { + "lambda_decl" : <"CXXRecordDecl" : ( + { + "pointer" : 95, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + 94, + [ + <"CXXMethodDecl" : ( + { + "pointer" : 96, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 45 + } + ), + "access" : <"Public"> + }, + { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "8151698240653651715", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 96, + "body" : <"CompoundStmt" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 45 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 89, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 42 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 90, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 92, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 97, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 92 + }, + { + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 98, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "17098733838812833493", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 99, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 100 + }, + { + "mangled_name" : "14201972727608021968", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 101, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 102 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 103, + "parent_pointer" : 95, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + { + "type_ptr" : 104 + }, + { + "mangled_name" : "3001717133787422796", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 105, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 106 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 103, + "body" : <"CompoundStmt" : ( + { + "pointer" : 107, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true, + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }>, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ), + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 108, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 109, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"CXXStaticCastExpr" : ( + { + "pointer" : 110, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 111, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 105, + "name" : { + "name" : "", + "qual_name" : [ + "" + ] + }, + "qual_type" : { + "type_ptr" : 106 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : <"XValue"> + }, + { + "cast_kind" : <"NoOp">, + "base_path" : [ + ] + }, + { + "type_ptr" : 106 + }, + "static_cast" + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + }, + "value_kind" : <"XValue"> + }, + { + "performs_virtual_dispatch" : true, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 97, + "name" : { + "name" : "__anon_field_0", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 92 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + ] + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 95, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 98, + "name" : { + "name" : "~", + "qual_name" : [ + "~", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + }, + "lambda_call_operator" : { + "kind" : <"CXXMethod">, + "decl_pointer" : 96, + "name" : { + "name" : "operator()", + "qual_name" : [ + "operator()", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "lambda_captures" : [ + { + "capture_kind" : <"LCK_ByCopy">, + "capture_variable" : true, + "init_captured_vardecl" : <"VarDecl" : ( + { + "pointer" : 93, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 28 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 92 + }, + { + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + } + )>, + "captured_var" : { + "kind" : <"Var">, + "decl_pointer" : 93, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 92 + } + }, + "location" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + } + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 94 + }, + "value_kind" : <"XValue"> + }, + { + } + )> + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 103, + "name" : { + "name" : "", + "qual_name" : [ + "", + "lambda_tests/lambda.cpp:14:23", + "main" + ] + }, + "qual_type" : { + "type_ptr" : 104 + } + }, + "is_elidable" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 112 + } + }, + { + } + )> + } + )> + ] + )>, + <"ReturnStmt" : ( + { + "pointer" : 114, + "source_range" : ( + { + "line" : 16, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 115, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "0" + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 116, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 117, + { + } + )> + ], + { + }, + { + "input_path" : "tests/lambda.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 118 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 119 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 120 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 121 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 122 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 12 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 123 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 124 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 125 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 126 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 127 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 128 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 129 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 130 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 131 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 132 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 133 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 134 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 135 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 136 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 137 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 138 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 139 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 140 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 141 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 142 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 143 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 144 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 145 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 146 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 147 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 148 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 149 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 150 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 151 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 152 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 153 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 154 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 155 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 156 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 157 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 158 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 159 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 160 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 161 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 162 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 163 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 164 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 165 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 166 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 167 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 168 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 169 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 170 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 171 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 172 + } + )>, + <"ComplexType" : ( + { + "pointer" : 173 + } + )>, + <"ComplexType" : ( + { + "pointer" : 174 + } + )>, + <"ComplexType" : ( + { + "pointer" : 175 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 176 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 177 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 178 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 179 + }, + { + "type_ptr" : 118 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 180 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 181 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 182 + }, + 183 + )>, + <"PointerType" : ( + { + "pointer" : 184 + }, + { + "type_ptr" : 12, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 185 + }, + { + "type_ptr" : 120, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 186 + }, + { + "type_ptr" : 120 + } + )>, + <"RecordType" : ( + { + "pointer" : 187 + }, + 188 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 189 + }, + { + "element_type" : { + "type_ptr" : 187 + }, + "stride" : 24 + }, + 1 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 12 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 190 + }, + { + "type_ptr" : 186 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 191 + }, + { + "return_type" : { + "type_ptr" : 192 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 22 + }, + 23 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 193 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 194 + } + )>, + <"AutoType" : ( + { + "pointer" : 92, + "desugared_type" : 12 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 195 + }, + { + "return_type" : { + "type_ptr" : 12 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 25 + }, + { + "return_type" : { + "type_ptr" : 92 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 29 + }, + { + "return_type" : { + "type_ptr" : 92 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 196 + }, + { + "type_ptr" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 197 + }, + { + "type_ptr" : 29 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 198 + }, + { + "return_type" : { + "type_ptr" : 196 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 27 + }, + { + "return_type" : { + "type_ptr" : 197 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 199 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 200 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 31 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 201 + } + )>, + <"AutoType" : ( + { + "pointer" : 41, + "desugared_type" : 22 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 35 + }, + { + "type_ptr" : 22, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 202 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 35 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 33 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 35 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 39 + }, + { + "type_ptr" : 22 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 203 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 204 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 205 + }, + { + "return_type" : { + "type_ptr" : 192 + } + }, + { + "params_type" : [ + { + "type_ptr" : 12 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 55 + }, + 56 + )>, + <"LValueReferenceType" : ( + { + "pointer" : 61 + }, + { + "type_ptr" : 12 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 206 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 207 + }, + { + "return_type" : { + "type_ptr" : 12 + } + }, + { + "params_type" : [ + { + "type_ptr" : 12 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 58 + }, + { + "return_type" : { + "type_ptr" : 92 + } + }, + { + "params_type" : [ + { + "type_ptr" : 12 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 208 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 209 + } + )>, + <"AutoType" : ( + { + "pointer" : 80, + "desugared_type" : 55 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 67 + }, + { + "type_ptr" : 55, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 210 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 65 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 71 + }, + { + "type_ptr" : 55 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 211 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 71 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 212 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 71 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 69 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 71 + } + ] + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 213 + } + )>, + <"RecordType" : ( + { + "pointer" : 94 + }, + 95 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 214 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 215 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 216 + } + )>, + <"AutoType" : ( + { + "pointer" : 112, + "desugared_type" : 94 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 102 + }, + { + "type_ptr" : 94, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 217 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 102 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 100 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 102 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 106 + }, + { + "type_ptr" : 94 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 218 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 106 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 219 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 106 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 104 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 106 + } + ] + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 220 + }, + { + "base_type" : 176 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 221 + }, + { + "type_ptr" : 220 + } + )>, + <"TypedefType" : ( + { + "pointer" : 222, + "desugared_type" : 221 + }, + { + "child_type" : { + "type_ptr" : 221 + }, + "decl_ptr" : 223 + } + )>, + <"TypedefType" : ( + { + "pointer" : 117, + "desugared_type" : 221 + }, + { + "child_type" : { + "type_ptr" : 222 + }, + "decl_ptr" : 116 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/materialize_temporary.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/materialize_temporary.cpp.exp new file mode 100644 index 000000000..7a6e00c2b --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/materialize_temporary.cpp.exp @@ -0,0 +1,782 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"VarDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/materialize_temporary.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 16 + } + ) + }, + { + "name" : "r", + "qual_name" : [ + "r" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_global" : true, + "is_init_ice" : true, + "init_expr" : <"ExprWithCleanups" : ( + { + "pointer" : 9, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"MaterializeTemporaryExpr" : ( + { + "pointer" : 10, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 11, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + <"FloatingLiteral" : ( + { + "pointer" : 12, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 13 + } + }, + "1" + )> + ], + { + "qual_type" : { + "type_ptr" : 14, + "is_const" : true + } + }, + { + "cast_kind" : <"FloatingToIntegral">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 14, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 7, + "name" : { + "name" : "r", + "qual_name" : [ + "r" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 14, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 15, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 16, + { + } + )> + ], + { + }, + { + "input_path" : "tests/materialize_temporary.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 14 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 13 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 70 + } + )>, + <"ComplexType" : ( + { + "pointer" : 71 + } + )>, + <"ComplexType" : ( + { + "pointer" : 72 + } + )>, + <"ComplexType" : ( + { + "pointer" : 73 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 77 + }, + { + "type_ptr" : 17 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 80 + }, + 81 + )>, + <"PointerType" : ( + { + "pointer" : 82 + }, + { + "type_ptr" : 14, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 83 + }, + { + "type_ptr" : 19, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 84 + }, + { + "type_ptr" : 19 + } + )>, + <"RecordType" : ( + { + "pointer" : 85 + }, + 86 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 87 + }, + { + "element_type" : { + "type_ptr" : 85 + }, + "stride" : 24 + }, + 1 + )>, + <"LValueReferenceType" : ( + { + "pointer" : 8 + }, + { + "type_ptr" : 14, + "is_const" : true + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 88 + }, + { + "base_type" : 74 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 89 + }, + { + "type_ptr" : 88 + } + )>, + <"TypedefType" : ( + { + "pointer" : 90, + "desugared_type" : 89 + }, + { + "child_type" : { + "type_ptr" : 89 + }, + "decl_ptr" : 91 + } + )>, + <"TypedefType" : ( + { + "pointer" : 16, + "desugared_type" : 89 + }, + { + "child_type" : { + "type_ptr" : 90 + }, + "decl_ptr" : 15 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/namespace_decl.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/namespace_decl.cpp.exp new file mode 100644 index 000000000..32bbdab9e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/namespace_decl.cpp.exp @@ -0,0 +1,854 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"NamespaceDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/namespace_decl.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + { + "name" : "Q", + "qual_name" : [ + "Q" + ] + }, + [ + <"NamespaceDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ) + }, + { + "name" : "V", + "qual_name" : [ + "V", + "Q" + ] + }, + [ + ], + { + }, + { + } + )>, + <"NamespaceDecl" : ( + { + "pointer" : 9, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "V", + "qual_name" : [ + "V", + "Q" + ] + }, + [ + ], + { + }, + { + "original_namespace" : { + "kind" : <"Namespace">, + "decl_pointer" : 8, + "name" : { + "name" : "V", + "qual_name" : [ + "V", + "Q" + ] + } + } + } + )>, + <"NamespaceDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ) + }, + { + "name" : "I", + "qual_name" : [ + "I", + "Q" + ] + }, + [ + <"VarDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "i", + "qual_name" : [ + "i", + "Q" + ] + }, + { + "type_ptr" : 12 + }, + { + "is_global" : true + } + )> + ], + { + }, + { + "is_inline" : true + } + )> + ], + { + }, + { + } + )>, + <"NamespaceDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + "line" : 17, + "column" : 1 + }, + { + "line" : 19, + "column" : 1 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "anonymous_namespace_tests/namespace_decl.cpp" + ] + }, + [ + ], + { + }, + { + } + )>, + <"UsingDirectiveDecl" : ( + { + "pointer" : 14, + "source_range" : ( + { + "line" : 17, + "column" : 11 + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "using_location" : { + "column" : 11 + }, + "namespace_key_location" : { + }, + "nested_name_specifier_locs" : [ + ], + "nominated_namespace" : { + "kind" : <"Namespace">, + "decl_pointer" : 13, + "name" : { + "name" : "", + "qual_name" : [ + "anonymous_namespace_tests/namespace_decl.cpp" + ] + } + } + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 15, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 16, + { + } + )> + ], + { + }, + { + "input_path" : "tests/namespace_decl.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 12 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 71 + } + )>, + <"ComplexType" : ( + { + "pointer" : 72 + } + )>, + <"ComplexType" : ( + { + "pointer" : 73 + } + )>, + <"ComplexType" : ( + { + "pointer" : 74 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 78 + }, + { + "type_ptr" : 17 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 81 + }, + 82 + )>, + <"PointerType" : ( + { + "pointer" : 83 + }, + { + "type_ptr" : 12, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 84 + }, + { + "type_ptr" : 19, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 85 + }, + { + "type_ptr" : 19 + } + )>, + <"RecordType" : ( + { + "pointer" : 86 + }, + 87 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 88 + }, + { + "element_type" : { + "type_ptr" : 86 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCObjectType" : ( + { + "pointer" : 89 + }, + { + "base_type" : 75 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 90 + }, + { + "type_ptr" : 89 + } + )>, + <"TypedefType" : ( + { + "pointer" : 91, + "desugared_type" : 90 + }, + { + "child_type" : { + "type_ptr" : 90 + }, + "decl_ptr" : 92 + } + )>, + <"TypedefType" : ( + { + "pointer" : 16, + "desugared_type" : 90 + }, + { + "child_type" : { + "type_ptr" : 91 + }, + "decl_ptr" : 15 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/new.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/new.cpp.exp new file mode 100644 index 000000000..08f79c882 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/new.cpp.exp @@ -0,0 +1,6900 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/new.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "pod", + "qual_name" : [ + "pod" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 3 + }, + { + "column" : 7 + } + ), + "access" : <"Public"> + }, + { + "name" : "a", + "qual_name" : [ + "a", + "pod" + ] + }, + { + "type_ptr" : 11 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 12, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "8251339330154476193", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 12, + "body" : <"CompoundStmt" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 15, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + { + "type_ptr" : 16 + }, + { + "mangled_name" : "14628250159452892772", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 18 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + { + "type_ptr" : 20 + }, + { + "mangled_name" : "3036348191925830672", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 21, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 22 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~pod", + "qual_name" : [ + "~pod", + "pod" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "6606037711693769625", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "is_pod" : true, + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 23, + "name" : { + "name" : "~pod", + "qual_name" : [ + "~pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 24, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "line" : 17, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike" + ] + }, + 25, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 26, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + 25, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 27, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 7 + } + ), + "access" : <"Public"> + }, + { + "name" : "a", + "qual_name" : [ + "a", + "cpplike" + ] + }, + { + "type_ptr" : 11 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 28, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 7 + } + ), + "access" : <"Public"> + }, + { + "name" : "b", + "qual_name" : [ + "b", + "cpplike" + ] + }, + { + "type_ptr" : 11 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 29, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 7 + } + ), + "access" : <"Public"> + }, + { + "name" : "c", + "qual_name" : [ + "c", + "cpplike" + ] + }, + { + "type_ptr" : 8 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 15, + "column" : 3 + }, + { + "column" : 28 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "1107470972604094108", + "is_cpp" : true, + "decl_ptr_with_body" : 30, + "body" : <"CompoundStmt" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 28 + } + ) + }, + [ + ] + )> + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 27, + "name" : { + "name" : "a", + "qual_name" : [ + "a", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }>, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 19 + } + ), + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 17 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + }, + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 28, + "name" : { + "name" : "b", + "qual_name" : [ + "b", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }>, + "source_range" : ( + { + "column" : 22 + }, + { + "column" : 25 + } + ), + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + }, + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 29, + "name" : { + "name" : "c", + "qual_name" : [ + "c", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + }>, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ), + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 35, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )> + } + ] + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 36, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 16, + "column" : 3 + }, + { + "column" : 39 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "4402068687990998056", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 15 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 22 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 11 + }, + { + "parm_index_in_function" : 1 + } + )> + ], + "decl_ptr_with_body" : 36, + "body" : <"CompoundStmt" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 39 + } + ) + }, + [ + ] + )> + }, + { + "cxx_ctor_initializers" : [ + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 27, + "name" : { + "name" : "a", + "qual_name" : [ + "a", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }>, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 30 + } + ), + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 42, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 38, + "name" : { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + }, + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 28, + "name" : { + "name" : "b", + "qual_name" : [ + "b", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + }>, + "source_range" : ( + { + "column" : 33 + }, + { + "column" : 36 + } + ), + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 43, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 35 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 35 + }, + { + "column" : 35 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 39, + "name" : { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + }, + { + "subject" : <"Member" : { + "kind" : <"Field">, + "decl_pointer" : 29, + "name" : { + "name" : "c", + "qual_name" : [ + "c", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + }>, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ), + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 45, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )> + } + ] + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 46, + "parent_pointer" : 24, + "source_range" : ( + { + "line" : 11, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 47 + }, + { + "mangled_name" : "17856063292060911243", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 48, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 49 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 50, + "parent_pointer" : 24, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 51 + }, + { + "mangled_name" : "6680359559125245897", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 53 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 54, + "parent_pointer" : 24, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "~cpplike", + "qual_name" : [ + "~cpplike", + "cpplike" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "10313252178728731272", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 24, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 54, + "name" : { + "name" : "~cpplike", + "qual_name" : [ + "~cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 55, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "line" : 35, + "column" : 1 + } + ) + }, + { + "name" : "test", + "qual_name" : [ + "test" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "18241244337164948030", + "is_cpp" : true, + "decl_ptr_with_body" : 55, + "body" : <"CompoundStmt" : ( + { + "pointer" : 56, + "source_range" : ( + { + "line" : 19, + "column" : 13 + }, + { + "line" : 35, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 57, + "source_range" : ( + { + "line" : 20, + "column" : 3 + }, + { + "column" : 23 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 22 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "initializer_expr" : 59 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 61, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 22 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 62 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 58, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 22 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "initializer_expr" : 59 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 63, + "source_range" : ( + { + "line" : 21, + "column" : 3 + }, + { + "column" : 26 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 64, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 25 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 65, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 65 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 68, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 25 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i_a", + "qual_name" : [ + "i_a" + ] + }, + { + "type_ptr" : 62 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 64, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 25 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 65, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 65 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 69, + "source_range" : ( + { + "line" : 23, + "column" : 3 + }, + { + "column" : 20 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 17 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 71, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 17 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 71 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 17 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 74 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 70, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 17 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 71, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 17 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 71 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 75, + "source_range" : ( + { + "line" : 24, + "column" : 3 + }, + { + "column" : 26 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 25 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "is_array" : true, + "array_size_expr" : 77, + "initializer_expr" : 79 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 81, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 25 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "p_a", + "qual_name" : [ + "p_a" + ] + }, + { + "type_ptr" : 74 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 76, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 25 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 77, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 78, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 23 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 79, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 80 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "is_array" : true, + "array_size_expr" : 77, + "initializer_expr" : 79 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 82, + "source_range" : ( + { + "line" : 26, + "column" : 3 + }, + { + "column" : 30 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 29 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 25 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 84 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 88, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 29 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 29 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 84, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 85, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 25 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 86, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 84 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 90, + "source_range" : ( + { + "line" : 27, + "column" : 3 + }, + { + "column" : 30 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 29 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 92, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 93, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 95 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 30, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 92, + "initializer_expr" : 94 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 96, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 29 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "c_a", + "qual_name" : [ + "c_a" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 29 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 92, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 93, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "10" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 95 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 30, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 31 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 92, + "initializer_expr" : 94 + } + )> + } + )> + ] + )>, + <"CXXDeleteExpr" : ( + { + "pointer" : 97, + "source_range" : ( + { + "line" : 29, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 98, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 99, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 62 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 61, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 62 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 62 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "destroyed_type" : { + "type_ptr" : 101 + } + } + )>, + <"CXXDeleteExpr" : ( + { + "pointer" : 102, + "source_range" : ( + { + "line" : 30, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 103, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 104, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 62 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 68, + "name" : { + "name" : "i_a", + "qual_name" : [ + "i_a" + ] + }, + "qual_type" : { + "type_ptr" : 62 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 62 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "is_array" : true, + "destroyed_type" : { + "type_ptr" : 101 + } + } + )>, + <"CXXDeleteExpr" : ( + { + "pointer" : 105, + "source_range" : ( + { + "line" : 31, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 107, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 74 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 73, + "name" : { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + "qual_type" : { + "type_ptr" : 74 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 74 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "destroyed_type" : { + "type_ptr" : 108 + } + } + )>, + <"CXXDeleteExpr" : ( + { + "pointer" : 109, + "source_range" : ( + { + "line" : 32, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 110, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 111, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 74 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 81, + "name" : { + "name" : "p_a", + "qual_name" : [ + "p_a" + ] + }, + "qual_type" : { + "type_ptr" : 74 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 74 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "is_array" : true, + "destroyed_type" : { + "type_ptr" : 108 + } + } + )>, + <"CXXDeleteExpr" : ( + { + "pointer" : 112, + "source_range" : ( + { + "line" : 33, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 113, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 114, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 89 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 88, + "name" : { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + "qual_type" : { + "type_ptr" : 89 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "destroyed_type" : { + "type_ptr" : 115 + } + } + )>, + <"CXXDeleteExpr" : ( + { + "pointer" : 116, + "source_range" : ( + { + "line" : 34, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 117, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 118, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 89 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 96, + "name" : { + "name" : "c_a", + "qual_name" : [ + "c_a" + ] + }, + "qual_type" : { + "type_ptr" : 89 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 89 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 100 + } + }, + { + "is_array" : true, + "destroyed_type" : { + "type_ptr" : 115 + } + } + )> + ] + )> + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 119, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + <"VisibilityAttr" : ( + { + "pointer" : 120, + "source_range" : ( + { + }, + { + } + ) + }, + <"DefaultVisibility"> + )> + ] + }, + { + "name" : "operator new", + "qual_name" : [ + "operator new" + ] + }, + { + "type_ptr" : 121 + }, + { + "mangled_name" : "5103882463850428890", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 122, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 123, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + <"VisibilityAttr" : ( + { + "pointer" : 124, + "source_range" : ( + { + }, + { + } + ) + }, + <"DefaultVisibility"> + )> + ] + }, + { + "name" : "operator new[]", + "qual_name" : [ + "operator new[]" + ] + }, + { + "type_ptr" : 121 + }, + { + "mangled_name" : "5124988689061404296", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 125, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 126, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + <"VisibilityAttr" : ( + { + "pointer" : 127, + "source_range" : ( + { + }, + { + } + ) + }, + <"DefaultVisibility"> + )> + ] + }, + { + "name" : "operator delete", + "qual_name" : [ + "operator delete" + ] + }, + { + "type_ptr" : 128 + }, + { + "mangled_name" : "9332647001762808742", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 129, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 131, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "attributes" : [ + <"VisibilityAttr" : ( + { + "pointer" : 132, + "source_range" : ( + { + }, + { + } + ) + }, + <"DefaultVisibility"> + )> + ] + }, + { + "name" : "operator delete[]", + "qual_name" : [ + "operator delete[]" + ] + }, + { + "type_ptr" : 128 + }, + { + "mangled_name" : "12453587667872411061", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 133, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 134, + "source_range" : ( + { + "line" : 38, + "column" : 1 + }, + { + "line" : 43, + "column" : 1 + } + ) + }, + { + "name" : "test_c11", + "qual_name" : [ + "test_c11" + ] + }, + { + "type_ptr" : 31 + }, + { + "mangled_name" : "6095890702841955930", + "is_cpp" : true, + "decl_ptr_with_body" : 134, + "body" : <"CompoundStmt" : ( + { + "pointer" : 135, + "source_range" : ( + { + "line" : 38, + "column" : 17 + }, + { + "line" : 43, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 136, + "source_range" : ( + { + "line" : 39, + "column" : 3 + }, + { + "column" : 32 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 137, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 31 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 138, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 139, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"InitListExpr" : ( + { + "pointer" : 140, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 31 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 141, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 142, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 143, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 144 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 138, + "initializer_expr" : 140 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 145, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 31 + } + ) + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 62 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 137, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 31 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 138, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 139, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"InitListExpr" : ( + { + "pointer" : 140, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 31 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 141, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 142, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 143, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 144 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "is_array" : true, + "array_size_expr" : 138, + "initializer_expr" : 140 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 146, + "source_range" : ( + { + "line" : 40, + "column" : 3 + }, + { + "column" : 30 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 147, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 29 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 148, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 149, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 25 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 150, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 148 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 151, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 29 + } + ) + }, + { + "name" : "c", + "qual_name" : [ + "c" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 147, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 29 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 148, + "source_range" : ( + { + "column" : 17 + }, + { + "column" : 29 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 149, + "source_range" : ( + { + "column" : 25 + }, + { + "column" : 25 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 150, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "initializer_expr" : 148 + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 152, + "source_range" : ( + { + "line" : 41, + "column" : 3 + }, + { + "column" : 53 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 153, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 52 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 154, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 155, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"InitListExpr" : ( + { + "pointer" : 156, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 52 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 157, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 35 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 158, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 31 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 159, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 160, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 43 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 161, + "source_range" : ( + { + "column" : 39 + }, + { + "column" : 39 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 162, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 163, + "source_range" : ( + { + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 164, + "source_range" : ( + { + "column" : 47 + }, + { + "column" : 47 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 165, + "source_range" : ( + { + "column" : 50 + }, + { + "column" : 50 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "6" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 166 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 154, + "initializer_expr" : 156 + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 52 + } + ) + }, + { + "name" : "c_a", + "qual_name" : [ + "c_a" + ] + }, + { + "type_ptr" : 89 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 153, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 52 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 154, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 155, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 67 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )>, + <"InitListExpr" : ( + { + "pointer" : 156, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 52 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 157, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 35 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 158, + "source_range" : ( + { + "column" : 31 + }, + { + "column" : 31 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 159, + "source_range" : ( + { + "column" : 34 + }, + { + "column" : 34 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "2" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 160, + "source_range" : ( + { + "column" : 38 + }, + { + "column" : 43 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 161, + "source_range" : ( + { + "column" : 39 + }, + { + "column" : 39 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "3" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 162, + "source_range" : ( + { + "column" : 42 + }, + { + "column" : 42 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "4" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )>, + <"CXXConstructExpr" : ( + { + "pointer" : 163, + "source_range" : ( + { + "column" : 46 + }, + { + "column" : 51 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 164, + "source_range" : ( + { + "column" : 47 + }, + { + "column" : 47 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "5" + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 165, + "source_range" : ( + { + "column" : 50 + }, + { + "column" : 50 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "6" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 36, + "name" : { + "name" : "cpplike", + "qual_name" : [ + "cpplike", + "cpplike" + ] + }, + "qual_type" : { + "type_ptr" : 37 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 166 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 87 + } + }, + { + "is_array" : true, + "array_size_expr" : 154, + "initializer_expr" : 156 + } + )> + } + )> + ] + )> + ] + )> + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 168, + "source_range" : ( + { + "line" : 45, + "column" : 1 + }, + { + "line" : 47, + "column" : 1 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "operator new", + "qual_name" : [ + "operator new" + ] + }, + { + "type_ptr" : 169 + }, + { + "mangled_name" : "13351464032276683690", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 170, + "source_range" : ( + { + "line" : 45, + "column" : 20 + }, + { + "column" : 34 + } + ) + }, + { + "name" : "size", + "qual_name" : [ + "size" + ] + }, + { + "type_ptr" : 67 + }, + { + "parm_index_in_function" : 0 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 171, + "source_range" : ( + { + "column" : 40 + }, + { + "column" : 46 + } + ) + }, + { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 1 + } + )>, + <"ParmVarDecl" : ( + { + "pointer" : 172, + "source_range" : ( + { + "column" : 51 + }, + { + "column" : 57 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ptr2", + "qual_name" : [ + "ptr2" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 2 + } + )> + ], + "decl_ptr_with_body" : 168, + "body" : <"CompoundStmt" : ( + { + "pointer" : 173, + "source_range" : ( + { + "column" : 72 + }, + { + "line" : 47, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 174, + "source_range" : ( + { + "line" : 46, + "column" : 3 + }, + { + "column" : 10 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 175, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 176, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 172, + "name" : { + "name" : "ptr2", + "qual_name" : [ + "ptr2" + ] + }, + "qual_type" : { + "type_ptr" : 130 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + } + )>, + <"EmptyDecl" : ( + { + "pointer" : 177, + "source_range" : ( + { + "line" : 47, + "column" : 2 + }, + { + "column" : 2 + } + ) + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 178, + "source_range" : ( + { + "line" : 49, + "column" : 1 + }, + { + "line" : 52, + "column" : 1 + } + ) + }, + { + "name" : "test_placement", + "qual_name" : [ + "test_placement" + ] + }, + { + "type_ptr" : 179 + }, + { + "mangled_name" : "1553186570458038035", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 180, + "source_range" : ( + { + "line" : 49, + "column" : 21 + }, + { + "column" : 27 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + { + "type_ptr" : 130 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "decl_ptr_with_body" : 178, + "body" : <"CompoundStmt" : ( + { + "pointer" : 181, + "source_range" : ( + { + "column" : 32 + }, + { + "line" : 52, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 182, + "source_range" : ( + { + "line" : 50, + "column" : 3 + }, + { + "column" : 12 + } + ) + }, + [ + <"IntegerLiteral" : ( + { + "pointer" : 183, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 184, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 11 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + { + "type_ptr" : 11 + }, + { + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 183, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 11 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 185, + "source_range" : ( + { + "line" : 51, + "column" : 3 + }, + { + "column" : 30 + } + ) + }, + [ + <"CXXNewExpr" : ( + { + "pointer" : 186, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 27 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 187, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 188, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 189, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 180, + "name" : { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + "qual_type" : { + "type_ptr" : 130 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 190, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 24 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 191, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 24 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 192, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 184, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "kind" : <"AddrOf"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 187, + "placement_args" : [ + 188, + 190 + ] + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 193, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 27 + } + ) + }, + { + "name" : "p", + "qual_name" : [ + "p" + ] + }, + { + "type_ptr" : 74 + }, + { + "init_expr" : <"CXXNewExpr" : ( + { + "pointer" : 186, + "source_range" : ( + { + "column" : 13 + }, + { + "column" : 27 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 187, + "source_range" : ( + { + "column" : 27 + }, + { + "column" : 27 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 12, + "name" : { + "name" : "pod", + "qual_name" : [ + "pod", + "pod" + ] + }, + "qual_type" : { + "type_ptr" : 13 + } + } + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 188, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 189, + "source_range" : ( + { + "column" : 18 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 130 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ParmVar">, + "decl_pointer" : 180, + "name" : { + "name" : "ptr", + "qual_name" : [ + "ptr" + ] + }, + "qual_type" : { + "type_ptr" : 130 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 190, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 24 + } + ) + }, + [ + <"UnaryOperator" : ( + { + "pointer" : 191, + "source_range" : ( + { + "column" : 23 + }, + { + "column" : 24 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 192, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 184, + "name" : { + "name" : "i", + "qual_name" : [ + "i" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 60 + } + }, + { + "kind" : <"AddrOf"> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 130 + } + }, + { + "cast_kind" : <"BitCast">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 72 + } + }, + { + "initializer_expr" : 187, + "placement_args" : [ + 188, + 190 + ] + } + )> + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 194, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 195, + { + } + )> + ], + { + }, + { + "input_path" : "tests/new.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 196 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 197 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 198 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 199 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 11 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 200 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 201 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 202 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 203 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 204 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 205 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 206 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 207 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 208 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 209 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 210 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 211 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 212 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 213 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 214 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 215 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 216 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 217 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 218 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 219 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 220 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 221 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 222 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 223 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 224 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 225 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 226 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 227 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 228 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 229 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 230 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 231 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 232 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 233 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 234 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 235 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 236 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 237 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 238 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 239 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 240 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 241 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 242 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 243 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 244 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 245 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 246 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 247 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 248 + } + )>, + <"ComplexType" : ( + { + "pointer" : 249 + } + )>, + <"ComplexType" : ( + { + "pointer" : 250 + } + )>, + <"ComplexType" : ( + { + "pointer" : 251 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 252 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 253 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 254 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 130 + }, + { + "type_ptr" : 100 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 255 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 256 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 257 + }, + 258 + )>, + <"PointerType" : ( + { + "pointer" : 259 + }, + { + "type_ptr" : 11, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 260 + }, + { + "type_ptr" : 197, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 261 + }, + { + "type_ptr" : 197 + } + )>, + <"RecordType" : ( + { + "pointer" : 262 + }, + 263 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 264 + }, + { + "element_type" : { + "type_ptr" : 262 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"RecordType" : ( + { + "pointer" : 25 + }, + 24 + )>, + <"PointerType" : ( + { + "pointer" : 87 + }, + { + "type_ptr" : 25 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 31 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 11 + }, + { + "type_ptr" : 11 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 265 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 18 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 266 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 16 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 18 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 22 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 267 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 20 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 22 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 13 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 268 + }, + { + "type_ptr" : 269 + } + )>, + <"PointerType" : ( + { + "pointer" : 60 + }, + { + "type_ptr" : 11 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 121 + }, + { + "return_type" : { + "type_ptr" : 130 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 179 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 130 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 128 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 130 + } + ] + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 270 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 271 + } + )>, + <"PointerType" : ( + { + "pointer" : 272 + }, + { + "type_ptr" : 270 + } + )>, + <"PointerType" : ( + { + "pointer" : 273 + }, + { + "type_ptr" : 271 + } + )>, + <"AutoType" : ( + { + "pointer" : 101, + "desugared_type" : 11 + } + )>, + <"PointerType" : ( + { + "pointer" : 62 + }, + { + "type_ptr" : 101 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 274 + }, + { + "element_type" : { + "type_ptr" : 11 + }, + "stride" : 4 + }, + 10 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 275 + } + )>, + <"PointerType" : ( + { + "pointer" : 276 + }, + { + "type_ptr" : 275 + } + )>, + <"PointerType" : ( + { + "pointer" : 72 + }, + { + "type_ptr" : 8 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 277 + } + )>, + <"PointerType" : ( + { + "pointer" : 278 + }, + { + "type_ptr" : 277 + } + )>, + <"AutoType" : ( + { + "pointer" : 108, + "desugared_type" : 8 + } + )>, + <"PointerType" : ( + { + "pointer" : 74 + }, + { + "type_ptr" : 108 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 80 + }, + { + "element_type" : { + "type_ptr" : 8 + }, + "stride" : 4 + }, + 10 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 279 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 280 + } + )>, + <"PointerType" : ( + { + "pointer" : 281 + }, + { + "type_ptr" : 280 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 49 + }, + { + "type_ptr" : 25, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 282 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 47 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 49 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 53 + }, + { + "type_ptr" : 25 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 283 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 53 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 51 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 53 + } + ] + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 284 + } + )>, + <"PointerType" : ( + { + "pointer" : 285 + }, + { + "type_ptr" : 284 + } + )>, + <"AutoType" : ( + { + "pointer" : 115, + "desugared_type" : 25 + } + )>, + <"PointerType" : ( + { + "pointer" : 89 + }, + { + "type_ptr" : 115 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 95 + }, + { + "element_type" : { + "type_ptr" : 25 + }, + "stride" : 12 + }, + 10 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 286 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 287 + } + )>, + <"PointerType" : ( + { + "pointer" : 288 + }, + { + "type_ptr" : 287 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 144 + }, + { + "element_type" : { + "type_ptr" : 11 + }, + "stride" : 4 + }, + 3 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 289 + } + )>, + <"PointerType" : ( + { + "pointer" : 290 + }, + { + "type_ptr" : 289 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 291 + } + )>, + <"PointerType" : ( + { + "pointer" : 292 + }, + { + "type_ptr" : 291 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 166 + }, + { + "element_type" : { + "type_ptr" : 25 + }, + "stride" : 12 + }, + 4 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 293 + } + )>, + <"PointerType" : ( + { + "pointer" : 294 + }, + { + "type_ptr" : 293 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 295 + }, + { + "return_type" : { + "type_ptr" : 130 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + }, + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 169 + }, + { + "return_type" : { + "type_ptr" : 130 + } + }, + { + "params_type" : [ + { + "type_ptr" : 67 + }, + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 296 + }, + { + "return_type" : { + "type_ptr" : 100 + } + }, + { + "params_type" : [ + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + }, + { + "type_ptr" : 130 + } + ] + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 297 + } + )>, + <"PointerType" : ( + { + "pointer" : 298 + }, + { + "type_ptr" : 297 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 299 + }, + { + "base_type" : 252 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 300 + }, + { + "type_ptr" : 299 + } + )>, + <"TypedefType" : ( + { + "pointer" : 301, + "desugared_type" : 300 + }, + { + "child_type" : { + "type_ptr" : 300 + }, + "decl_ptr" : 302 + } + )>, + <"TypedefType" : ( + { + "pointer" : 195, + "desugared_type" : 300 + }, + { + "child_type" : { + "type_ptr" : 301 + }, + "decl_ptr" : 194 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/no_except_expr.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/no_except_expr.cpp.exp new file mode 100644 index 000000000..ae881d685 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/no_except_expr.cpp.exp @@ -0,0 +1,941 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/no_except_expr.cpp", + "line" : 7, + "column" : 1 + }, + { + "column" : 27 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "no_throw", + "qual_name" : [ + "no_throw" + ] + }, + { + "type_ptr" : 8 + }, + { + "mangled_name" : "17033017651186285990", + "is_cpp" : true, + "decl_ptr_with_body" : 7, + "body" : <"CompoundStmt" : ( + { + "pointer" : 9, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 27 + } + ) + }, + [ + ] + )> + } + )>, + <"EmptyDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "column" : 43 + } + ) + }, + { + "name" : "main", + "qual_name" : [ + "main" + ] + }, + { + "type_ptr" : 12 + }, + { + "is_cpp" : true, + "decl_ptr_with_body" : 11, + "body" : <"CompoundStmt" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 43 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 40 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 40 + } + ) + }, + [ + <"CXXNoexceptExpr" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 40 + } + ) + }, + [ + <"CallExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 39 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 18, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 30 + }, + { + "column" : 30 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 8 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 7, + "name" : { + "name" : "no_throw", + "qual_name" : [ + "no_throw" + ] + }, + "qual_type" : { + "type_ptr" : 8 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 21 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 22 + } + }, + { + "value" : true + } + )> + ], + { + "qual_type" : { + "type_ptr" : 23 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + ] + )> + ] + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 24, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 25, + { + } + )> + ], + { + }, + { + "input_path" : "tests/no_except_expr.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 78 + } + )>, + <"ComplexType" : ( + { + "pointer" : 79 + } + )>, + <"ComplexType" : ( + { + "pointer" : 80 + } + )>, + <"ComplexType" : ( + { + "pointer" : 81 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 85 + }, + { + "type_ptr" : 21 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 88 + }, + 89 + )>, + <"PointerType" : ( + { + "pointer" : 90 + }, + { + "type_ptr" : 23, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 91 + }, + { + "type_ptr" : 26, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 92 + }, + { + "type_ptr" : 26 + } + )>, + <"RecordType" : ( + { + "pointer" : 93 + }, + 94 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 95 + }, + { + "element_type" : { + "type_ptr" : 93 + }, + "stride" : 24 + }, + 1 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 96 + }, + { + "return_type" : { + "type_ptr" : 21 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 8 + }, + { + "return_type" : { + "type_ptr" : 21 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 12 + }, + { + "return_type" : { + "type_ptr" : 23 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 97 + }, + { + "type_ptr" : 92 + } + )>, + <"PointerType" : ( + { + "pointer" : 98 + }, + { + "type_ptr" : 96 + } + )>, + <"PointerType" : ( + { + "pointer" : 20 + }, + { + "type_ptr" : 8 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 99 + }, + { + "base_type" : 82 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 100 + }, + { + "type_ptr" : 99 + } + )>, + <"TypedefType" : ( + { + "pointer" : 101, + "desugared_type" : 100 + }, + { + "child_type" : { + "type_ptr" : 100 + }, + "decl_ptr" : 102 + } + )>, + <"TypedefType" : ( + { + "pointer" : 25, + "desugared_type" : 100 + }, + { + "child_type" : { + "type_ptr" : 101 + }, + "decl_ptr" : 24 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/objcpp_template_unboxing.mm.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/objcpp_template_unboxing.mm.exp new file mode 100644 index 000000000..47ba89b98 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/objcpp_template_unboxing.mm.exp @@ -0,0 +1,823 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 6, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 0, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 9, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"FunctionTemplateDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + "file" : "tests/objcpp_template_unboxing.mm", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ) + }, + { + "name" : "box", + "qual_name" : [ + "box" + ] + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 14, + { + } + )> + ], + { + }, + { + "input_path" : "tests/objcpp_template_unboxing.mm", + "input_kind" : <"IK_ObjCXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 15 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 16 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 70 + } + )>, + <"ComplexType" : ( + { + "pointer" : 71 + } + )>, + <"ComplexType" : ( + { + "pointer" : 72 + } + )>, + <"ComplexType" : ( + { + "pointer" : 73 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 77 + }, + { + "type_ptr" : 15 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"Half"> + )>, + <"PointerType" : ( + { + "pointer" : 80 + }, + { + "type_ptr" : 76 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 81 + }, + { + "base_type" : 74 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 82 + }, + { + "type_ptr" : 81 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 83 + }, + { + "base_type" : 75 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 84 + }, + { + "type_ptr" : 83 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 85 + }, + 8 + )>, + <"RecordType" : ( + { + "pointer" : 86 + }, + 87 + )>, + <"PointerType" : ( + { + "pointer" : 88 + }, + { + "type_ptr" : 20, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 89 + }, + { + "type_ptr" : 17, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 90 + }, + { + "type_ptr" : 17 + } + )>, + <"RecordType" : ( + { + "pointer" : 91 + }, + 92 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 93 + }, + { + "element_type" : { + "type_ptr" : 91 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 94 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 95 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 96 + }, + { + "return_type" : { + "type_ptr" : 77 + } + }, + { + "params_type" : [ + { + "type_ptr" : 94 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 97 + }, + { + "return_type" : { + "type_ptr" : 77 + } + }, + { + "params_type" : [ + { + "type_ptr" : 95 + } + ] + } + )>, + <"TypedefType" : ( + { + "pointer" : 6, + "desugared_type" : 82 + }, + { + "child_type" : { + "type_ptr" : 82 + }, + "decl_ptr" : 5 + } + )>, + <"TypedefType" : ( + { + "pointer" : 14, + "desugared_type" : 82 + }, + { + "child_type" : { + "type_ptr" : 6 + }, + "decl_ptr" : 13 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/optional.m.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/optional.m.exp new file mode 100644 index 000000000..6b82b7669 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/optional.m.exp @@ -0,0 +1,1860 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "SEL", + "qual_name" : [ + "SEL" + ] + }, + 5, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "id", + "qual_name" : [ + "id" + ] + }, + 7, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Class", + "qual_name" : [ + "Class" + ] + }, + 0, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 1, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "Protocol", + "qual_name" : [ + "Protocol" + ] + }, + [ + ], + { + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 10, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 13, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/optional.m", + "line" : 8, + "column" : 1 + }, + { + "line" : 9, + "column" : 2 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ], + { + }, + { + } + )>, + <"ObjCProtocolDecl" : ( + { + "pointer" : 14, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "line" : 12, + "column" : 2 + } + ) + }, + { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + }, + [ + ], + { + }, + { + } + )>, + <"ObjCProtocolDecl" : ( + { + "pointer" : 15, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "line" : 17, + "column" : 2 + } + ) + }, + { + "name" : "BarDelegate", + "qual_name" : [ + "BarDelegate" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 16, + "parent_pointer" : 15, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "column" : 25 + } + ) + }, + { + "name" : "optionalFunction", + "qual_name" : [ + "optionalFunction", + "BarDelegate" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "is_optional" : true, + "mangled_name" : "-[BarDelegate optionalFunction]" + } + )> + ], + { + }, + { + "protocols" : [ + { + "kind" : <"ObjCProtocol">, + "decl_pointer" : 14, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + } + ] + } + )>, + <"ObjCInterfaceDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 19, + "column" : 1 + }, + { + "line" : 21, + "column" : 2 + } + ) + }, + { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + }, + [ + <"ObjCPropertyDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 18, + "source_range" : ( + { + "line" : 20, + "column" : 1 + }, + { + "column" : 46 + } + ) + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + }, + { + "qual_type" : { + "type_ptr" : 20 + }, + "getter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 21, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "setter_method" : { + "kind" : <"ObjCMethod">, + "decl_pointer" : 22, + "name" : { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "Bar" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 23, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "Bar" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + }, + "property_attributes" : [ + <"Assign">, + <"Readwrite">, + <"Nonatomic">, + <"Unsafe_unretained"> + ] + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 21, + "parent_pointer" : 18, + "source_range" : ( + { + "column" : 46 + }, + { + "column" : 46 + } + ), + "is_implicit" : true + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 20 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 24, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 25, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 26, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[Bar delegate]" + } + )>, + <"ObjCMethodDecl" : ( + { + "pointer" : 22, + "parent_pointer" : 18, + "source_range" : ( + { + "column" : 46 + }, + { + "column" : 46 + } + ), + "is_implicit" : true + }, + { + "name" : "setDelegate:", + "qual_name" : [ + "setDelegate:", + "Bar" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "is_property_accessor" : true, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 27, + "source_range" : ( + { + "column" : 46 + }, + { + "column" : 46 + } + ) + }, + { + "name" : "delegate", + "qual_name" : [ + "delegate" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ], + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 28, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 25, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 29, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "mangled_name" : "-[Bar setDelegate:]" + } + )> + ], + { + }, + { + "super" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 13, + "name" : { + "name" : "NSObject", + "qual_name" : [ + "NSObject" + ] + } + }, + "implementation" : { + "kind" : <"ObjCImplementation">, + "decl_pointer" : 30, + "name" : { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + } + } + } + )>, + <"ObjCImplementationDecl" : ( + { + "pointer" : 30, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "line" : 28, + "column" : 1 + } + ) + }, + { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + }, + [ + <"ObjCMethodDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 30, + "source_range" : ( + { + "line" : 24, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + { + "name" : "unsafeAction", + "qual_name" : [ + "unsafeAction", + "Bar" + ] + }, + { + "is_instance_method" : true, + "result_type" : { + "type_ptr" : 17 + }, + "implicit_parameters" : [ + <"ImplicitParamDecl" : ( + { + "pointer" : 32, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + { + "type_ptr" : 25, + "is_const" : true + }, + { + } + )>, + <"ImplicitParamDecl" : ( + { + "pointer" : 33, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "_cmd", + "qual_name" : [ + "_cmd" + ] + }, + { + "type_ptr" : 5 + }, + { + } + )> + ], + "body" : <"CompoundStmt" : ( + { + "pointer" : 34, + "source_range" : ( + { + "line" : 24, + "column" : 22 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + [ + <"ExprWithCleanups" : ( + { + "pointer" : 35, + "source_range" : ( + { + "line" : 25, + "column" : 3 + }, + { + "column" : 34 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 34 + } + ) + }, + [ + <"PseudoObjectExpr" : ( + { + "pointer" : 37, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 9 + } + ) + }, + [ + <"ObjCPropertyRefExpr" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 9 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 32, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 42 + }, + "value_kind" : <"LValue">, + "object_kind" : <"ObjCProperty"> + }, + { + "kind" : <"PropertyRef" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }>, + "is_messaging_getter" : true + } + )>, + <"OpaqueValueExpr" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 32, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"ImplicitCastExpr" : ( + { + "pointer" : 43, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"ObjCMessageExpr" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"OpaqueValueExpr" : ( + { + "pointer" : 39, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "source_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 40, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 4 + }, + { + "column" : 4 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"ImplicitParam">, + "decl_pointer" : 32, + "name" : { + "name" : "self", + "qual_name" : [ + "self" + ] + }, + "qual_type" : { + "type_ptr" : 25, + "is_const" : true + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 25 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )> + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "selector" : "delegate", + "decl_pointer" : 21 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 20 + } + }, + { + "cast_kind" : <"ARCReclaimReturnedObject">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 20 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + "selector" : "optionalFunction", + "decl_pointer" : 16 + } + )> + ], + { + "qual_type" : { + "type_ptr" : 17 + } + }, + { + } + )> + ] + )>, + "mangled_name" : "-[Bar unsafeAction]" + } + )>, + <"ObjCIvarDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 30, + "source_range" : ( + { + "line" : 20, + "column" : 46 + }, + { + "column" : 46 + } + ) + }, + { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "Bar" + ] + }, + { + "type_ptr" : 20 + }, + { + }, + { + "is_synthesize" : true, + "access_control" : <"Private"> + } + )>, + <"ObjCPropertyImplDecl" : ( + { + "pointer" : 45, + "source_range" : ( + { + }, + { + "column" : 46 + } + ) + }, + { + "implementation" : <"Synthesize">, + "property_decl" : { + "kind" : <"ObjCProperty">, + "decl_pointer" : 19, + "name" : { + "name" : "delegate", + "qual_name" : [ + "delegate", + "Bar" + ] + } + }, + "ivar_decl" : { + "kind" : <"ObjCIvar">, + "decl_pointer" : 23, + "name" : { + "name" : "_delegate", + "qual_name" : [ + "_delegate", + "Bar" + ] + }, + "qual_type" : { + "type_ptr" : 20 + } + } + } + )> + ], + { + }, + { + "class_interface" : { + "kind" : <"ObjCInterface">, + "decl_pointer" : 18, + "name" : { + "name" : "Bar", + "qual_name" : [ + "Bar" + ] + } + } + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 46, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 47, + { + } + )> + ], + { + }, + { + "input_path" : "tests/optional.m", + "input_kind" : <"IK_ObjC">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 99 + } + )>, + <"ComplexType" : ( + { + "pointer" : 100 + } + )>, + <"ComplexType" : ( + { + "pointer" : 101 + } + )>, + <"ComplexType" : ( + { + "pointer" : 102 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 106 + }, + { + "type_ptr" : 17 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 107 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 108 + }, + <"Half"> + )>, + <"PointerType" : ( + { + "pointer" : 109 + }, + { + "type_ptr" : 105 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 110 + }, + { + "base_type" : 103 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 111 + }, + { + "type_ptr" : 110 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 112 + }, + { + "base_type" : 104 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 113 + }, + { + "type_ptr" : 112 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 114 + }, + 9 + )>, + <"RecordType" : ( + { + "pointer" : 115 + }, + 116 + )>, + <"PointerType" : ( + { + "pointer" : 117 + }, + { + "type_ptr" : 52, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 118 + }, + { + "type_ptr" : 49, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 119 + }, + { + "type_ptr" : 49 + } + )>, + <"RecordType" : ( + { + "pointer" : 120 + }, + 121 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 122 + }, + { + "element_type" : { + "type_ptr" : 120 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 123 + }, + 13 + )>, + <"TypedefType" : ( + { + "pointer" : 7, + "desugared_type" : 111 + }, + { + "child_type" : { + "type_ptr" : 111 + }, + "decl_ptr" : 6 + } + )>, + <"TypedefType" : ( + { + "pointer" : 47, + "desugared_type" : 111 + }, + { + "child_type" : { + "type_ptr" : 7 + }, + "decl_ptr" : 46 + } + )>, + <"ObjCInterfaceType" : ( + { + "pointer" : 124 + }, + 18 + )>, + <"ObjCObjectType" : ( + { + "pointer" : 125 + }, + { + "base_type" : 103, + "protocol_decls_ptr" : [ + 15 + ] + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 20 + }, + { + "type_ptr" : 125 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 25 + }, + { + "type_ptr" : 124 + } + )>, + <"TypedefType" : ( + { + "pointer" : 5, + "desugared_type" : 109 + }, + { + "child_type" : { + "type_ptr" : 109 + }, + "decl_ptr" : 4 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/sizeof_static_evaluation.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/sizeof_static_evaluation.cpp.exp new file mode 100644 index 000000000..1e97bd7c2 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/sizeof_static_evaluation.cpp.exp @@ -0,0 +1,1032 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/sizeof_static_evaluation.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 7 + } + ) + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo" + ] + }, + { + } + )>, + <"ClassTemplatePartialSpecializationDecl" : ( + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "line" : 16, + "column" : 1 + } + ) + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo" + ] + }, + 9, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 8, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo", + "__foo" + ] + }, + 9, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0, + "is_dependent_type" : true + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 11, + "parent_pointer" : 8, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 19 + } + ), + "access" : <"Private"> + }, + { + "name" : "x", + "qual_name" : [ + "x", + "__foo" + ] + }, + { + "type_ptr" : 12 + }, + { + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 13, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 19 + } + ) + }, + [ + <"UnaryExprOrTypeTraitExpr" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 11 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "kind" : <"SizeOf">, + "qual_type" : { + "type_ptr" : 16 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + } + )>, + <"AccessSpecDecl" : ( + { + "pointer" : 17, + "source_range" : ( + { + "line" : 14, + "column" : 2 + }, + { + "column" : 8 + } + ), + "access" : <"Public"> + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 18, + "parent_pointer" : 8, + "source_range" : ( + { + "line" : 15, + "column" : 3 + }, + { + "column" : 11 + } + ), + "access" : <"Public"> + }, + { + "name" : "__foo", + "qual_name" : [ + "__foo", + "__foo" + ] + }, + { + "type_ptr" : 19 + }, + { + "mangled_name" : "800005863435481739", + "is_cpp" : true, + "decl_ptr_with_body" : 18, + "body" : <"CompoundStmt" : ( + { + "pointer" : 20, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 11 + } + ) + }, + [ + ] + )> + }, + { + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 8, + "is_complete_definition" : true, + "is_dependent_type" : true + }, + { + }, + "2204753185921246810", + { + "template_decl" : 7, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 21 + }>, + <"Integral" : "1"> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 22, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 20 + } + ) + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 12 + }, + { + "is_global" : true, + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 23, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 20 + } + ) + }, + [ + <"UnaryExprOrTypeTraitExpr" : ( + { + "pointer" : 24, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 15 + } + }, + { + "kind" : <"SizeOfWithSize" : 1>, + "qual_type" : { + "type_ptr" : 25 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 12 + } + }, + { + "cast_kind" : <"IntegralCast">, + "base_path" : [ + ] + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 26, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 27, + { + } + )> + ], + { + }, + { + "input_path" : "tests/sizeof_static_evaluation.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 12 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 15 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 80 + } + )>, + <"ComplexType" : ( + { + "pointer" : 81 + } + )>, + <"ComplexType" : ( + { + "pointer" : 82 + } + )>, + <"ComplexType" : ( + { + "pointer" : 83 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 87 + }, + { + "type_ptr" : 28 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 90 + }, + 91 + )>, + <"PointerType" : ( + { + "pointer" : 92 + }, + { + "type_ptr" : 12, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 93 + }, + { + "type_ptr" : 25, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 94 + }, + { + "type_ptr" : 25 + } + )>, + <"RecordType" : ( + { + "pointer" : 95 + }, + 96 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 97 + }, + { + "element_type" : { + "type_ptr" : 95 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 21 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 98 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 99 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 100 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 101 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 16 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 102 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 103 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 9 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 104 + } + )>, + <"PointerType" : ( + { + "pointer" : 105 + }, + { + "type_ptr" : 9 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 19 + }, + { + "return_type" : { + "type_ptr" : 28 + } + }, + { + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 106 + }, + { + "base_type" : 84 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 107 + }, + { + "type_ptr" : 106 + } + )>, + <"TypedefType" : ( + { + "pointer" : 108, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 107 + }, + "decl_ptr" : 109 + } + )>, + <"TypedefType" : ( + { + "pointer" : 27, + "desugared_type" : 107 + }, + { + "child_type" : { + "type_ptr" : 108 + }, + "decl_ptr" : 26 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/struct.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/struct.cpp.exp new file mode 100644 index 000000000..1c0e8be4f --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/struct.cpp.exp @@ -0,0 +1,1706 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/struct.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 9, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "Point", + "qual_name" : [ + "Point" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Point", + "qual_name" : [ + "Point", + "Point" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 3 + }, + { + "column" : 10 + } + ), + "access" : <"Public"> + }, + { + "name" : "x", + "qual_name" : [ + "x", + "Point" + ] + }, + { + "type_ptr" : 11 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 12, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 13 + } + ), + "access" : <"Public"> + }, + { + "name" : "y", + "qual_name" : [ + "y", + "Point" + ] + }, + { + "type_ptr" : 11 + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + "line" : 11, + "column" : 1 + }, + { + "line" : 14, + "column" : 1 + } + ) + }, + { + "name" : "fun", + "qual_name" : [ + "fun" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "4651010030435487712", + "is_cpp" : true, + "decl_ptr_with_body" : 13, + "body" : <"CompoundStmt" : ( + { + "pointer" : 15, + "source_range" : ( + { + "line" : 11, + "column" : 12 + }, + { + "line" : 14, + "column" : 1 + } + ) + }, + [ + <"DeclStmt" : ( + { + "pointer" : 16, + "source_range" : ( + { + "line" : 12, + "column" : 3 + }, + { + "column" : 14 + } + ) + }, + [ + ], + [ + <"CXXRecordDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 13, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 13 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "X", + "qual_name" : [ + "X", + "fun" + ] + }, + 18, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 19, + "parent_pointer" : 17, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 10 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + 18, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 20, + "parent_pointer" : 17, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + { + "type_ptr" : 21 + }, + { + "mangled_name" : "4417717915555375243", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 20, + "body" : <"CompoundStmt" : ( + { + "pointer" : 22, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 23, + "parent_pointer" : 17, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + { + "type_ptr" : 24 + }, + { + "mangled_name" : "4190573168950999278", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 25, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 26 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 27, + "parent_pointer" : 17, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + { + "type_ptr" : 28 + }, + { + "mangled_name" : "12437859369676964978", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 29, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 10 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 30 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 17, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )> + ] + )>, + <"DeclStmt" : ( + { + "pointer" : 31, + "source_range" : ( + { + "line" : 13, + "column" : 3 + }, + { + "column" : 6 + } + ) + }, + [ + <"CXXConstructExpr" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 20, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + "qual_type" : { + "type_ptr" : 21 + } + } + } + )> + ], + [ + <"VarDecl" : ( + { + "pointer" : 33, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 5 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 18 + }, + { + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 32, + "source_range" : ( + { + "column" : 5 + }, + { + "column" : 5 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 20, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X", + "fun" + ] + }, + "qual_type" : { + "type_ptr" : 21 + } + } + } + )> + } + )> + ] + )> + ] + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 34, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "column" : 24 + } + ) + }, + { + "name" : "blank", + "qual_name" : [ + "blank" + ] + }, + { + "type_ptr" : 8 + }, + { + "is_global" : true, + "init_expr" : <"InitListExpr" : ( + { + "pointer" : 35, + "source_range" : ( + { + "column" : 15 + }, + { + "column" : 24 + } + ) + }, + [ + <"FloatingLiteral" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + "3" + )>, + <"FloatingLiteral" : ( + { + "pointer" : 37, + "source_range" : ( + { + "column" : 21 + }, + { + "column" : 21 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + "4" + )> + ], + { + "qual_type" : { + "type_ptr" : 8 + } + } + )> + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 38, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "line" : 20, + "column" : 1 + } + ) + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + 39, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 40, + "parent_pointer" : 38, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A" + ] + }, + 39, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"VarDecl" : ( + { + "pointer" : 41, + "source_range" : ( + { + "line" : 19, + "column" : 3 + }, + { + "column" : 14 + } + ), + "access" : <"Public"> + }, + { + "name" : "a", + "qual_name" : [ + "a", + "A" + ] + }, + { + "type_ptr" : 42 + }, + { + "is_global" : true, + "is_static" : true, + "is_static_data_member" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 38, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )>, + <"VarDecl" : ( + { + "pointer" : 43, + "parent_pointer" : 38, + "source_range" : ( + { + "line" : 22, + "column" : 1 + }, + { + "column" : 12 + } + ), + "access" : <"Public"> + }, + { + "name" : "a", + "qual_name" : [ + "a", + "A" + ] + }, + { + "type_ptr" : 42 + }, + { + "is_global" : true, + "is_static_data_member" : true, + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 44, + "source_range" : ( + { + "column" : 12 + }, + { + "column" : 12 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 42 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "32" + } + )> + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 45, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 24, + "column" : 1 + }, + { + "line" : 26, + "column" : 1 + } + ) + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + 46, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 47, + "parent_pointer" : 45, + "source_range" : ( + { + "line" : 24, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "B", + "qual_name" : [ + "B", + "B" + ] + }, + 46, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"VarDecl" : ( + { + "pointer" : 48, + "source_range" : ( + { + "line" : 25, + "column" : 3 + }, + { + "column" : 24 + } + ), + "access" : <"Public"> + }, + { + "name" : "b", + "qual_name" : [ + "b", + "B" + ] + }, + { + "type_ptr" : 42, + "is_const" : true + }, + { + "is_global" : true, + "is_static" : true, + "is_static_data_member" : true, + "is_init_ice" : true, + "init_expr" : <"IntegerLiteral" : ( + { + "pointer" : 49, + "source_range" : ( + { + "column" : 24 + }, + { + "column" : 24 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 42 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "52" + } + )> + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 45, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 50, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 51, + { + } + )> + ], + { + }, + { + "input_path" : "tests/struct.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 11 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 99 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 100 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 101 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 102 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 105 + } + )>, + <"ComplexType" : ( + { + "pointer" : 106 + } + )>, + <"ComplexType" : ( + { + "pointer" : 107 + } + )>, + <"ComplexType" : ( + { + "pointer" : 108 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 109 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 110 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 111 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 112 + }, + { + "type_ptr" : 52 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 113 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 114 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 115 + }, + 116 + )>, + <"PointerType" : ( + { + "pointer" : 117 + }, + { + "type_ptr" : 42, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 118 + }, + { + "type_ptr" : 54, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 119 + }, + { + "type_ptr" : 54 + } + )>, + <"RecordType" : ( + { + "pointer" : 120 + }, + 121 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 122 + }, + { + "element_type" : { + "type_ptr" : 120 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 18 + }, + 17 + )>, + <"FunctionProtoType" : ( + { + "pointer" : 123 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 26 + }, + { + "type_ptr" : 18, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 124 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 24 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 26 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 30 + }, + { + "type_ptr" : 18 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 125 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 30 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 28 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + "params_type" : [ + { + "type_ptr" : 30 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 21 + }, + { + "return_type" : { + "type_ptr" : 52 + } + }, + { + } + )>, + <"RecordType" : ( + { + "pointer" : 39 + }, + 38 + )>, + <"RecordType" : ( + { + "pointer" : 46 + }, + 45 + )>, + <"ObjCObjectType" : ( + { + "pointer" : 126 + }, + { + "base_type" : 109 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 127 + }, + { + "type_ptr" : 126 + } + )>, + <"TypedefType" : ( + { + "pointer" : 128, + "desugared_type" : 127 + }, + { + "child_type" : { + "type_ptr" : 127 + }, + "decl_ptr" : 129 + } + )>, + <"TypedefType" : ( + { + "pointer" : 51, + "desugared_type" : 127 + }, + { + "child_type" : { + "type_ptr" : 128 + }, + "decl_ptr" : 50 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/template_instantiations.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/template_instantiations.cpp.exp new file mode 100644 index 000000000..7e306f0ef --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/template_instantiations.cpp.exp @@ -0,0 +1,5557 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/template_instantiations.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 15 + } + ) + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 8, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 15 + } + ) + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple" + ] + }, + 9, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + }, + "2296961816144140105", + { + "template_decl" : 7, + "specialization_args" : [ + <"Pack" : [ + <"Type" : { + "type_ptr" : 10 + }> + ]> + ] + } + )>, + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 11, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "line" : 8, + "column" : 15 + } + ) + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple >" + ] + }, + 12, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 13, + "parent_pointer" : 11, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + 12, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 11 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 14, + "parent_pointer" : 11, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "16263929779680628849", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 14, + "body" : <"CompoundStmt" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 11, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "11014497521477142187", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 21, + "parent_pointer" : 11, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + { + "type_ptr" : 22 + }, + { + "mangled_name" : "15031955784438883279", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 23, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 24 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 11, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "8342447397680512296", + { + "template_decl" : 7, + "specialization_args" : [ + <"Pack" : [ + <"Type" : { + "type_ptr" : 9 + }> + ]> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 25, + "source_range" : ( + { + "line" : 10, + "column" : 1 + }, + { + "column" : 19 + } + ) + }, + { + "name" : "x", + "qual_name" : [ + "x" + ] + }, + { + "type_ptr" : 26 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 27, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 26 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 14, + "name" : { + "name" : "Tuple", + "qual_name" : [ + "Tuple", + "Tuple >" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 28, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "column" : 27 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "nullptr_t", + "qual_name" : [ + "nullptr_t" + ] + }, + 29, + { + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 30, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 14, + "column" : 25 + } + ) + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 31, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 14, + "column" : 25 + } + ) + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate" + ] + }, + 32, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 33, + "parent_pointer" : 31, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + 32, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 31 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 34, + "parent_pointer" : 31, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "10023818314310534501", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 34, + "body" : <"CompoundStmt" : ( + { + "pointer" : 35, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 36, + "parent_pointer" : 31, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + { + "type_ptr" : 37 + }, + { + "mangled_name" : "11471169980769644070", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 39 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 40, + "parent_pointer" : 31, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + { + "type_ptr" : 41 + }, + { + "mangled_name" : "11154857410366551354", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 42, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 43 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 31, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "11141543725649308068", + { + "template_decl" : 30, + "specialization_args" : [ + <"NullPtr"> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 44, + "source_range" : ( + { + "line" : 16, + "column" : 1 + }, + { + "column" : 26 + } + ) + }, + { + "name" : "x1", + "qual_name" : [ + "x1" + ] + }, + { + "type_ptr" : 45 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 46, + "source_range" : ( + { + "column" : 26 + }, + { + "column" : 26 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 45 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 34, + "name" : { + "name" : "NullPtrTemplate", + "qual_name" : [ + "NullPtrTemplate", + "NullPtrTemplate" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 47, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "line" : 19, + "column" : 21 + } + ) + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 48, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "line" : 19, + "column" : 21 + } + ) + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate<0>" + ] + }, + 49, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 50, + "parent_pointer" : 48, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + 49, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 48 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 51, + "parent_pointer" : 48, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "1478228132453016226", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 51, + "body" : <"CompoundStmt" : ( + { + "pointer" : 52, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 53, + "parent_pointer" : 48, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + { + "type_ptr" : 54 + }, + { + "mangled_name" : "11043804702208708385", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 55, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 56 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 57, + "parent_pointer" : 48, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + { + "type_ptr" : 58 + }, + { + "mangled_name" : "5185260157533638819", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 59, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 60 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 48, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "18441911275316219119", + { + "template_decl" : 47, + "specialization_args" : [ + <"Integral" : "0"> + ] + } + )> + ] + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 61, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "line" : 22, + "column" : 22 + } + ) + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 62, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 21, + "column" : 1 + }, + { + "line" : 22, + "column" : 22 + } + ) + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate<'c'>" + ] + }, + 63, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 64, + "parent_pointer" : 62, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + 63, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 62 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 65, + "parent_pointer" : 62, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "16225353893069217924", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 65, + "body" : <"CompoundStmt" : ( + { + "pointer" : 66, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 67, + "parent_pointer" : 62, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + { + "type_ptr" : 68 + }, + { + "mangled_name" : "16636418989297388895", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 69, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 70 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 71, + "parent_pointer" : 62, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + { + "type_ptr" : 72 + }, + { + "mangled_name" : "2774670671732909065", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 73, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 74 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 62, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "7893038887469539829", + { + "template_decl" : 61, + "specialization_args" : [ + <"Integral" : "99"> + ] + } + )> + ] + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 75, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "line" : 24, + "column" : 22 + } + ) + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 76, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 23, + "column" : 1 + }, + { + "line" : 24, + "column" : 22 + } + ) + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate<78187493520>" + ] + }, + 77, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 78, + "parent_pointer" : 76, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + 77, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 76 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 79, + "parent_pointer" : 76, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "16125716847522929195", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 79, + "body" : <"CompoundStmt" : ( + { + "pointer" : 80, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 81, + "parent_pointer" : 76, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + { + "type_ptr" : 82 + }, + { + "mangled_name" : "5156418638880841616", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 83, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 84 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 85, + "parent_pointer" : 76, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + { + "type_ptr" : 86 + }, + { + "mangled_name" : "18073023600850944380", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 87, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 88 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 76, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "6282617124311682814", + { + "template_decl" : 75, + "specialization_args" : [ + <"Integral" : "78187493520"> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 89, + "source_range" : ( + { + "line" : 26, + "column" : 1 + }, + { + "column" : 16 + } + ) + }, + { + "name" : "x2", + "qual_name" : [ + "x2" + ] + }, + { + "type_ptr" : 90 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 91, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 90 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 51, + "name" : { + "name" : "IntTemplate", + "qual_name" : [ + "IntTemplate", + "IntTemplate<0>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 92, + "source_range" : ( + { + "line" : 27, + "column" : 1 + }, + { + "column" : 19 + } + ) + }, + { + "name" : "x3", + "qual_name" : [ + "x3" + ] + }, + { + "type_ptr" : 93 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 94, + "source_range" : ( + { + "column" : 19 + }, + { + "column" : 19 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 93 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 65, + "name" : { + "name" : "CharTemplate", + "qual_name" : [ + "CharTemplate", + "CharTemplate<'c'>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 95, + "source_range" : ( + { + "line" : 28, + "column" : 1 + }, + { + "column" : 29 + } + ) + }, + { + "name" : "x4", + "qual_name" : [ + "x4" + ] + }, + { + "type_ptr" : 96 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 97, + "source_range" : ( + { + "column" : 29 + }, + { + "column" : 29 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 96 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 79, + "name" : { + "name" : "LongTemplate", + "qual_name" : [ + "LongTemplate", + "LongTemplate<78187493520>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 98, + "source_range" : ( + { + "line" : 30, + "column" : 1 + }, + { + "line" : 31, + "column" : 11 + } + ) + }, + { + "name" : "X", + "qual_name" : [ + "X" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 99, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 30, + "column" : 1 + }, + { + "line" : 31, + "column" : 11 + } + ) + }, + { + "name" : "X", + "qual_name" : [ + "X<&x5>" + ] + }, + 100, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 101, + "parent_pointer" : 99, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + 100, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 99 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 102, + "parent_pointer" : 99, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "8438636393447290261", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 102, + "body" : <"CompoundStmt" : ( + { + "pointer" : 103, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 104, + "parent_pointer" : 99, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + { + "type_ptr" : 105 + }, + { + "mangled_name" : "304459608885830774", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 106, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 107 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 108, + "parent_pointer" : 99, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + { + "type_ptr" : 109 + }, + { + "mangled_name" : "5555169503117312650", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 110, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 111 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 99, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "92945586264616176", + { + "template_decl" : 98, + "specialization_args" : [ + <"Declaration" : 112> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 112, + "source_range" : ( + { + "line" : 32, + "column" : 1 + }, + { + "column" : 10 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "x5", + "qual_name" : [ + "x5" + ] + }, + { + "type_ptr" : 113 + }, + { + "is_global" : true + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 114, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 34, + "column" : 1 + }, + { + "column" : 11 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "Y", + "qual_name" : [ + "Y" + ] + }, + 115, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 116, + "parent_pointer" : 114, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + 115, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 117, + "parent_pointer" : 114, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "14898916407379161639", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 117, + "body" : <"CompoundStmt" : ( + { + "pointer" : 118, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 119, + "parent_pointer" : 114, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 120 + }, + { + "mangled_name" : "7125450473324676530", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 121, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 122 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 123, + "parent_pointer" : 114, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + { + "type_ptr" : 124 + }, + { + "mangled_name" : "3069361207223136310", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 125, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 126 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 114, + "is_complete_definition" : true + }, + { + "is_pod" : true + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 127, + "source_range" : ( + { + "line" : 35, + "column" : 1 + }, + { + "line" : 36, + "column" : 11 + } + ) + }, + { + "name" : "Z", + "qual_name" : [ + "Z" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 128, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 35, + "column" : 1 + }, + { + "line" : 36, + "column" : 11 + } + ) + }, + { + "name" : "Z", + "qual_name" : [ + "Z<&y>" + ] + }, + 129, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 130, + "parent_pointer" : 128, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + 129, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 128 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 131, + "parent_pointer" : 128, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "2247315131692507250", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 131, + "body" : <"CompoundStmt" : ( + { + "pointer" : 132, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 133, + "parent_pointer" : 128, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + { + "type_ptr" : 134 + }, + { + "mangled_name" : "7738251501016099665", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 135, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 136 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 137, + "parent_pointer" : 128, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + { + "type_ptr" : 138 + }, + { + "mangled_name" : "15832834678910379731", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 139, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 140 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 128, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "4282980438553401163", + { + "template_decl" : 127, + "specialization_args" : [ + <"Declaration" : 141> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 141, + "source_range" : ( + { + "line" : 37, + "column" : 1 + }, + { + "column" : 3 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "y", + "qual_name" : [ + "y" + ] + }, + { + "type_ptr" : 115 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 142, + "source_range" : ( + { + "column" : 3 + }, + { + "column" : 3 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 115 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 117, + "name" : { + "name" : "Y", + "qual_name" : [ + "Y", + "Y" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 143, + "source_range" : ( + { + "line" : 39, + "column" : 1 + }, + { + "line" : 40, + "column" : 11 + } + ) + }, + { + "name" : "W", + "qual_name" : [ + "W" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 144, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 39, + "column" : 1 + }, + { + "line" : 40, + "column" : 11 + } + ) + }, + { + "name" : "W", + "qual_name" : [ + "W<&b>" + ] + }, + 145, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 146, + "parent_pointer" : 144, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + 145, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 144 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 147, + "parent_pointer" : 144, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "7772438286950717212", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 147, + "body" : <"CompoundStmt" : ( + { + "pointer" : 148, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 149, + "parent_pointer" : 144, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + { + "type_ptr" : 150 + }, + { + "mangled_name" : "10597356402107300951", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 151, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 152 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 153, + "parent_pointer" : 144, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + { + "type_ptr" : 154 + }, + { + "mangled_name" : "9048930144420503889", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 155, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 156 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 144, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "632323835311287041", + { + "template_decl" : 143, + "specialization_args" : [ + <"Declaration" : 157> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 157, + "source_range" : ( + { + "line" : 41, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 158 + }, + { + "is_global" : true + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 159, + "source_range" : ( + { + "line" : 43, + "column" : 1 + }, + { + "column" : 11 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "f", + "qual_name" : [ + "f" + ] + }, + { + "type_ptr" : 160 + }, + { + "mangled_name" : "4928047469659938654", + "is_cpp" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 161, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 10 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 162, + "source_range" : ( + { + "line" : 44, + "column" : 1 + }, + { + "line" : 45, + "column" : 11 + } + ) + }, + { + "name" : "A", + "qual_name" : [ + "A" + ] + }, + { + "specializations" : [ + <"ClassTemplateSpecializationDecl" : ( + { + "pointer" : 163, + "parent_pointer" : 1, + "source_range" : ( + { + "line" : 44, + "column" : 1 + }, + { + "line" : 45, + "column" : 11 + } + ) + }, + { + "name" : "A", + "qual_name" : [ + "A<&f>" + ] + }, + 164, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 165, + "parent_pointer" : 163, + "source_range" : ( + { + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + 164, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 163 + }, + { + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 166, + "parent_pointer" : 163, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "is_used" : true, + "is_this_declaration_referenced" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + { + "type_ptr" : 15 + }, + { + "mangled_name" : "3658993291457928989", + "is_cpp" : true, + "is_inline" : true, + "decl_ptr_with_body" : 166, + "body" : <"CompoundStmt" : ( + { + "pointer" : 167, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + [ + ] + )> + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 168, + "parent_pointer" : 163, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + { + "type_ptr" : 169 + }, + { + "mangled_name" : "18252192508176638302", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 170, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 171 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXConstructorDecl" : ( + { + "pointer" : 172, + "parent_pointer" : 163, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + { + "type_ptr" : 173 + }, + { + "mangled_name" : "9481628931273708930", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 174, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 175 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 163, + "is_complete_definition" : true + }, + { + "is_pod" : true + }, + "6648620333758562824", + { + "template_decl" : 162, + "specialization_args" : [ + <"Declaration" : 159> + ] + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 176, + "source_range" : ( + { + "line" : 47, + "column" : 1 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "xi", + "qual_name" : [ + "xi" + ] + }, + { + "type_ptr" : 177 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 178, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 177 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 102, + "name" : { + "name" : "X", + "qual_name" : [ + "X", + "X<&x5>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 179, + "source_range" : ( + { + "line" : 48, + "column" : 1 + }, + { + "column" : 6 + } + ) + }, + { + "name" : "z", + "qual_name" : [ + "z" + ] + }, + { + "type_ptr" : 180 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 181, + "source_range" : ( + { + "column" : 6 + }, + { + "column" : 6 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 180 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 131, + "name" : { + "name" : "Z", + "qual_name" : [ + "Z", + "Z<&y>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 182, + "source_range" : ( + { + "line" : 49, + "column" : 1 + }, + { + "column" : 6 + } + ) + }, + { + "name" : "w", + "qual_name" : [ + "w" + ] + }, + { + "type_ptr" : 183 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 184, + "source_range" : ( + { + "column" : 6 + }, + { + "column" : 6 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 183 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 147, + "name" : { + "name" : "W", + "qual_name" : [ + "W", + "W<&b>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 185, + "source_range" : ( + { + "line" : 50, + "column" : 1 + }, + { + "column" : 7 + } + ) + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 186 + }, + { + "is_global" : true, + "init_expr" : <"CXXConstructExpr" : ( + { + "pointer" : 187, + "source_range" : ( + { + "column" : 7 + }, + { + "column" : 7 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 186 + } + }, + { + "decl_ref" : { + "kind" : <"CXXConstructor">, + "decl_pointer" : 166, + "name" : { + "name" : "A", + "qual_name" : [ + "A", + "A<&f>" + ] + }, + "qual_type" : { + "type_ptr" : 15 + } + } + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 188, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 189, + { + } + )> + ], + { + }, + { + "input_path" : "tests/template_instantiations.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 190 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 191 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 192 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 193 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 194 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 10 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 195 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 196 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 197 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 198 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 199 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 200 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 201 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 202 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 203 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 204 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 205 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 206 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 207 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 208 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 209 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 210 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 211 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 212 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 213 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 214 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 215 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 216 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 217 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 218 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 219 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 220 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 221 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 222 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 223 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 224 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 225 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 226 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 227 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 228 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 229 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 230 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 231 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 232 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 233 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 234 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 235 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 236 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 237 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 238 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 239 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 240 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 241 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 242 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 243 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 244 + } + )>, + <"ComplexType" : ( + { + "pointer" : 245 + } + )>, + <"ComplexType" : ( + { + "pointer" : 246 + } + )>, + <"ComplexType" : ( + { + "pointer" : 247 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 248 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 249 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 250 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 251 + }, + { + "type_ptr" : 190 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 252 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 253 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 254 + }, + 255 + )>, + <"PointerType" : ( + { + "pointer" : 256 + }, + { + "type_ptr" : 10, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 257 + }, + { + "type_ptr" : 192, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 258 + }, + { + "type_ptr" : 192 + } + )>, + <"RecordType" : ( + { + "pointer" : 259 + }, + 260 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 261 + }, + { + "element_type" : { + "type_ptr" : 259 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 262 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 263 + } + )>, + <"PackExpansionType" : ( + { + "pointer" : 264 + } + )>, + <"PackExpansionType" : ( + { + "pointer" : 265 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 266 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 267 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 268 + } + )>, + <"RecordType" : ( + { + "pointer" : 9 + }, + 8 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 269, + "desugared_type" : 9 + } + )>, + <"RecordType" : ( + { + "pointer" : 12 + }, + 11 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 26, + "desugared_type" : 12 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 270 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 271 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 20 + }, + { + "type_ptr" : 12, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 272 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 24 + }, + { + "type_ptr" : 12 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 273 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 24 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 22 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 24 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 15 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"DecltypeType" : ( + { + "pointer" : 274, + "desugared_type" : 252 + }, + { + "type_ptr" : 252 + } + )>, + <"TypedefType" : ( + { + "pointer" : 29, + "desugared_type" : 252 + }, + { + "child_type" : { + "type_ptr" : 274 + }, + "decl_ptr" : 28 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 275 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 276 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 277 + } + )>, + <"RecordType" : ( + { + "pointer" : 32 + }, + 31 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 45, + "desugared_type" : 32 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 278 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 39 + }, + { + "type_ptr" : 32, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 279 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 37 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 39 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 43 + }, + { + "type_ptr" : 32 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 280 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 43 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 41 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 43 + } + ] + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 281 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 282 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 283 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 284 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 285 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 286 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 287 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 288 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 289 + } + )>, + <"RecordType" : ( + { + "pointer" : 49 + }, + 48 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 90, + "desugared_type" : 49 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 290 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 56 + }, + { + "type_ptr" : 49, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 291 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 56 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 54 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 56 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 60 + }, + { + "type_ptr" : 49 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 292 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 60 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 58 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 60 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 63 + }, + 62 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 93, + "desugared_type" : 63 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 293 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 70 + }, + { + "type_ptr" : 63, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 294 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 70 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 68 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 70 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 74 + }, + { + "type_ptr" : 63 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 295 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 74 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 72 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 74 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 77 + }, + 76 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 96, + "desugared_type" : 77 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 296 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 84 + }, + { + "type_ptr" : 77, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 297 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 84 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 82 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 84 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 88 + }, + { + "type_ptr" : 77 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 298 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 88 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 86 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 88 + } + ] + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 299 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 300 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 301 + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 113 + }, + { + "element_type" : { + "type_ptr" : 10 + }, + "stride" : 4 + }, + 42 + )>, + <"RecordType" : ( + { + "pointer" : 115 + }, + 114 + )>, + <"LValueReferenceType" : ( + { + "pointer" : 122 + }, + { + "type_ptr" : 115, + "is_const" : true + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 302 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 303 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 304 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 305 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 306 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 122 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 120 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 122 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 126 + }, + { + "type_ptr" : 115 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 307 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 126 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 124 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 126 + } + ] + } + )>, + <"ConstantArrayType" : ( + { + "pointer" : 158 + }, + { + "element_type" : { + "type_ptr" : 10 + }, + "stride" : 4 + }, + 5 + )>, + <"ParenType" : ( + { + "pointer" : 308, + "desugared_type" : 158 + }, + { + "type_ptr" : 158 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 309 + }, + { + "type_ptr" : 158 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 310 + }, + { + "type_ptr" : 308 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 311 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 312 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 313 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 160 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 10 + } + ] + } + )>, + <"ParenType" : ( + { + "pointer" : 314, + "desugared_type" : 160 + }, + { + "type_ptr" : 160 + } + )>, + <"PointerType" : ( + { + "pointer" : 315 + }, + { + "type_ptr" : 160 + } + )>, + <"PointerType" : ( + { + "pointer" : 316 + }, + { + "type_ptr" : 314 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 317 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 318 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 319 + } + )>, + <"PointerType" : ( + { + "pointer" : 320 + }, + { + "type_ptr" : 10 + } + )>, + <"RecordType" : ( + { + "pointer" : 100 + }, + 99 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 177, + "desugared_type" : 100 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 321 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 107 + }, + { + "type_ptr" : 100, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 322 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 107 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 105 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 107 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 111 + }, + { + "type_ptr" : 100 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 323 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 111 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 109 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 111 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 129 + }, + 128 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 180, + "desugared_type" : 129 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 324 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 136 + }, + { + "type_ptr" : 129, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 325 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 136 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 134 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 136 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 140 + }, + { + "type_ptr" : 129 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 326 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 140 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 138 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 140 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 145 + }, + 144 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 183, + "desugared_type" : 145 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 327 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 152 + }, + { + "type_ptr" : 145, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 328 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 152 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 150 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 152 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 156 + }, + { + "type_ptr" : 145 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 329 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 156 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 154 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 156 + } + ] + } + )>, + <"RecordType" : ( + { + "pointer" : 164 + }, + 163 + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 186, + "desugared_type" : 164 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 330 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 171 + }, + { + "type_ptr" : 164, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 331 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 171 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 169 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 171 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 175 + }, + { + "type_ptr" : 164 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 332 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 175 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 173 + }, + { + "return_type" : { + "type_ptr" : 190 + } + }, + { + "params_type" : [ + { + "type_ptr" : 175 + } + ] + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 333 + }, + { + "base_type" : 248 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 334 + }, + { + "type_ptr" : 333 + } + )>, + <"TypedefType" : ( + { + "pointer" : 335, + "desugared_type" : 334 + }, + { + "child_type" : { + "type_ptr" : 334 + }, + "decl_ptr" : 336 + } + )>, + <"TypedefType" : ( + { + "pointer" : 189, + "desugared_type" : 334 + }, + { + "child_type" : { + "type_ptr" : 335 + }, + "decl_ptr" : 188 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/this.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/this.cpp.exp new file mode 100644 index 000000000..6692fb026 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/this.cpp.exp @@ -0,0 +1,925 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/this.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ) + }, + { + "name" : "T", + "qual_name" : [ + "T" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 7, + "column" : 1 + }, + { + "column" : 7 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "T", + "qual_name" : [ + "T", + "T" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"FieldDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 3 + }, + { + "column" : 7 + } + ), + "is_this_declaration_referenced" : true, + "access" : <"Private"> + }, + { + "name" : "age", + "qual_name" : [ + "age", + "T" + ] + }, + { + "type_ptr" : 11 + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 12, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 9, + "column" : 3 + }, + { + "column" : 31 + } + ), + "access" : <"Private"> + }, + { + "name" : "foo", + "qual_name" : [ + "foo", + "T" + ] + }, + { + "type_ptr" : 13 + }, + { + "mangled_name" : "8720790958451117971", + "is_cpp" : true, + "decl_ptr_with_body" : 12, + "body" : <"CompoundStmt" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 14 + }, + { + "column" : 31 + } + ) + }, + [ + <"BinaryOperator" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 28 + } + ) + }, + [ + <"MemberExpr" : ( + { + "pointer" : 16, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 22 + } + ) + }, + [ + <"CXXThisExpr" : ( + { + "pointer" : 17, + "source_range" : ( + { + "column" : 16 + }, + { + "column" : 16 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 18 + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "is_arrow" : true, + "performs_virtual_dispatch" : true, + "name" : { + "name" : "age", + "qual_name" : [ + "age", + "T" + ] + }, + "decl_ref" : { + "kind" : <"Field">, + "decl_pointer" : 10, + "name" : { + "name" : "age", + "qual_name" : [ + "age", + "T" + ] + }, + "qual_type" : { + "type_ptr" : 11 + } + } + } + )>, + <"IntegerLiteral" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 28 + }, + { + "column" : 28 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 11 + } + }, + { + "is_signed" : true, + "bitwidth" : 32, + "value" : "1" + } + )> + ], + { + "qual_type" : { + "type_ptr" : 11 + }, + "value_kind" : <"LValue"> + }, + { + "kind" : <"Assign"> + } + )> + ] + )> + }, + { + } + )> + ], + { + }, + <"TTK_Class">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 20, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 21, + { + } + )> + ], + { + }, + { + "input_path" : "tests/this.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 11 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 76 + } + )>, + <"ComplexType" : ( + { + "pointer" : 77 + } + )>, + <"ComplexType" : ( + { + "pointer" : 78 + } + )>, + <"ComplexType" : ( + { + "pointer" : 79 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 83 + }, + { + "type_ptr" : 22 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 86 + }, + 87 + )>, + <"PointerType" : ( + { + "pointer" : 88 + }, + { + "type_ptr" : 11, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 89 + }, + { + "type_ptr" : 24, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 90 + }, + { + "type_ptr" : 24 + } + )>, + <"RecordType" : ( + { + "pointer" : 91 + }, + 92 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 93 + }, + { + "element_type" : { + "type_ptr" : 91 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 18 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 13 + }, + { + "return_type" : { + "type_ptr" : 22 + } + }, + { + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 94 + }, + { + "base_type" : 80 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 95 + }, + { + "type_ptr" : 94 + } + )>, + <"TypedefType" : ( + { + "pointer" : 96, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 95 + }, + "decl_ptr" : 97 + } + )>, + <"TypedefType" : ( + { + "pointer" : 21, + "desugared_type" : 95 + }, + { + "child_type" : { + "type_ptr" : 96 + }, + "decl_ptr" : 20 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/type_trait.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/type_trait.cpp.exp new file mode 100644 index 000000000..46da8db58 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/type_trait.cpp.exp @@ -0,0 +1,1548 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"CXXRecordDecl" : ( + { + "pointer" : 7, + "parent_pointer" : 1, + "source_range" : ( + { + "file" : "tests/type_trait.cpp", + "line" : 8, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ), + "is_this_declaration_referenced" : true + }, + { + "name" : "X", + "qual_name" : [ + "X" + ] + }, + 8, + [ + <"CXXRecordDecl" : ( + { + "pointer" : 9, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "X", + "qual_name" : [ + "X", + "X" + ] + }, + 8, + [ + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 0 + }, + { + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 10, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 9, + "column" : 3 + }, + { + "column" : 21 + } + ), + "access" : <"Public"> + }, + { + "name" : "f", + "qual_name" : [ + "f", + "X" + ] + }, + { + "type_ptr" : 11 + }, + { + "mangled_name" : "3303503544906841191", + "is_cpp" : true, + "decl_ptr_with_body" : 10, + "body" : <"CompoundStmt" : ( + { + "pointer" : 12, + "source_range" : ( + { + "column" : 20 + }, + { + "column" : 21 + } + ) + }, + [ + ] + )> + }, + { + "is_virtual" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 13, + "parent_pointer" : 7, + "source_range" : ( + { + "line" : 8, + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + { + "type_ptr" : 14 + }, + { + "mangled_name" : "3547081667308014059", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 16 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXMethodDecl" : ( + { + "pointer" : 17, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "operator=", + "qual_name" : [ + "operator=", + "X" + ] + }, + { + "type_ptr" : 18 + }, + { + "mangled_name" : "13578800157532850793", + "is_cpp" : true, + "is_inline" : true, + "parameters" : [ + <"ParmVarDecl" : ( + { + "pointer" : 19, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "type_ptr" : 20 + }, + { + "parm_index_in_function" : 0 + } + )> + ] + }, + { + "is_constexpr" : true + } + )>, + <"CXXDestructorDecl" : ( + { + "pointer" : 21, + "parent_pointer" : 7, + "source_range" : ( + { + "column" : 8 + }, + { + "column" : 8 + } + ), + "is_implicit" : true, + "access" : <"Public"> + }, + { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + { + "type_ptr" : 22 + }, + { + "mangled_name" : "9850251229546392500", + "is_cpp" : true, + "is_inline" : true + }, + { + } + )> + ], + { + }, + <"TTK_Struct">, + { + "definition_ptr" : 7, + "is_complete_definition" : true + }, + { + "destructor" : { + "kind" : <"CXXDestructor">, + "decl_pointer" : 21, + "name" : { + "name" : "~X", + "qual_name" : [ + "~X", + "X" + ] + }, + "qual_type" : { + "type_ptr" : 22 + } + } + } + )>, + <"FunctionTemplateDecl" : ( + { + "pointer" : 23, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + { + "specializations" : [ + <"FunctionDecl" : ( + { + "pointer" : 24, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "6359398518495646991", + "is_cpp" : true, + "decl_ptr_with_body" : 24, + "body" : <"CompoundStmt" : ( + { + "pointer" : 26, + "source_range" : ( + { + "line" : 13, + "column" : 15 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 27, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 20 + } + ) + }, + [ + <"TypeTraitExpr" : ( + { + "pointer" : 28, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + "value" : true + } + )> + ] + )> + ] + )>, + "template_specialization" : { + "template_decl" : 23, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 30 + }> + ] + } + } + )>, + <"FunctionDecl" : ( + { + "pointer" : 31, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "line" : 15, + "column" : 1 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + { + "type_ptr" : 25 + }, + { + "mangled_name" : "6727385578282590887", + "is_cpp" : true, + "decl_ptr_with_body" : 31, + "body" : <"CompoundStmt" : ( + { + "pointer" : 32, + "source_range" : ( + { + "line" : 13, + "column" : 15 + }, + { + "line" : 15, + "column" : 1 + } + ) + }, + [ + <"ReturnStmt" : ( + { + "pointer" : 33, + "source_range" : ( + { + "line" : 14, + "column" : 3 + }, + { + "column" : 20 + } + ) + }, + [ + <"TypeTraitExpr" : ( + { + "pointer" : 34, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 29 + } + }, + { + } + )> + ] + )> + ] + )>, + "template_specialization" : { + "template_decl" : 23, + "specialization_args" : [ + <"Type" : { + "type_ptr" : 8 + }> + ] + } + } + )> + ] + } + )>, + <"VarDecl" : ( + { + "pointer" : 35, + "source_range" : ( + { + "line" : 17, + "column" : 1 + }, + { + "column" : 22 + } + ) + }, + { + "name" : "a", + "qual_name" : [ + "a" + ] + }, + { + "type_ptr" : 29 + }, + { + "is_global" : true, + "init_expr" : <"CallExpr" : ( + { + "pointer" : 36, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 22 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 37, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 20 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 38, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 20 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 24, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "found_decl_ref" : { + "kind" : <"FunctionTemplate">, + "decl_pointer" : 23, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 39 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 29 + } + } + )> + } + )>, + <"VarDecl" : ( + { + "pointer" : 40, + "source_range" : ( + { + "line" : 18, + "column" : 1 + }, + { + "column" : 20 + } + ) + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 29 + }, + { + "is_global" : true, + "init_expr" : <"CallExpr" : ( + { + "pointer" : 41, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 20 + } + ) + }, + [ + <"ImplicitCastExpr" : ( + { + "pointer" : 42, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 18 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 43, + "source_range" : ( + { + "column" : 10 + }, + { + "column" : 18 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 25 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Function">, + "decl_pointer" : 31, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + }, + "qual_type" : { + "type_ptr" : 25 + } + }, + "found_decl_ref" : { + "kind" : <"FunctionTemplate">, + "decl_pointer" : 23, + "name" : { + "name" : "is_pod", + "qual_name" : [ + "is_pod" + ] + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 39 + } + }, + { + "cast_kind" : <"FunctionToPointerDecay">, + "base_path" : [ + ] + } + )> + ], + { + "qual_type" : { + "type_ptr" : 29 + } + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 44, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 45, + { + } + )> + ], + { + }, + { + "input_path" : "tests/type_trait.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 72 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 75 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 79 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 82 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 83 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 84 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 85 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 86 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 87 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 88 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 89 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 90 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 91 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 92 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 93 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 94 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 95 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 96 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 97 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 98 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 99 + } + )>, + <"ComplexType" : ( + { + "pointer" : 100 + } + )>, + <"ComplexType" : ( + { + "pointer" : 101 + } + )>, + <"ComplexType" : ( + { + "pointer" : 102 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 103 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 104 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 105 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 106 + }, + { + "type_ptr" : 46 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 107 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 108 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 109 + }, + 110 + )>, + <"PointerType" : ( + { + "pointer" : 111 + }, + { + "type_ptr" : 30, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 112 + }, + { + "type_ptr" : 47, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 113 + }, + { + "type_ptr" : 47 + } + )>, + <"RecordType" : ( + { + "pointer" : 114 + }, + 115 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 116 + }, + { + "element_type" : { + "type_ptr" : 114 + }, + "stride" : 24 + }, + 1 + )>, + <"RecordType" : ( + { + "pointer" : 8 + }, + 7 + )>, + <"PointerType" : ( + { + "pointer" : 117 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 11 + }, + { + "return_type" : { + "type_ptr" : 46 + } + }, + { + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 118 + }, + { + "type_ptr" : 8 + } + )>, + <"LValueReferenceType" : ( + { + "pointer" : 16 + }, + { + "type_ptr" : 8, + "is_const" : true + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 119 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 14 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 16 + } + ] + } + )>, + <"RValueReferenceType" : ( + { + "pointer" : 20 + }, + { + "type_ptr" : 8 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 120 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 18 + }, + { + "return_type" : { + "type_ptr" : 118 + } + }, + { + "params_type" : [ + { + "type_ptr" : 20 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 22 + }, + { + "return_type" : { + "type_ptr" : 46 + } + }, + { + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 121 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 122 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 25 + }, + { + "return_type" : { + "type_ptr" : 29 + } + }, + { + } + )>, + <"PointerType" : ( + { + "pointer" : 39 + }, + { + "type_ptr" : 25 + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 123, + "desugared_type" : 30 + } + )>, + <"SubstTemplateTypeParmType" : ( + { + "pointer" : 124, + "desugared_type" : 8 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 125 + }, + { + "base_type" : 103 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 126 + }, + { + "type_ptr" : 125 + } + )>, + <"TypedefType" : ( + { + "pointer" : 127, + "desugared_type" : 126 + }, + { + "child_type" : { + "type_ptr" : 126 + }, + "decl_ptr" : 128 + } + )>, + <"TypedefType" : ( + { + "pointer" : 45, + "desugared_type" : 126 + }, + { + "child_type" : { + "type_ptr" : 127 + }, + "decl_ptr" : 44 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/unresolved_lookup.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/unresolved_lookup.cpp.exp new file mode 100644 index 000000000..fefbba355 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/unresolved_lookup.cpp.exp @@ -0,0 +1,760 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"ClassTemplateDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/unresolved_lookup.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 12, + "column" : 1 + } + ) + }, + { + "name" : "S", + "qual_name" : [ + "S" + ] + }, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 9, + { + } + )> + ], + { + }, + { + "input_path" : "tests/unresolved_lookup.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 10 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 11 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 12 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 13 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 14 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 15 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 16 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 17 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 65 + } + )>, + <"ComplexType" : ( + { + "pointer" : 66 + } + )>, + <"ComplexType" : ( + { + "pointer" : 67 + } + )>, + <"ComplexType" : ( + { + "pointer" : 68 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 72 + }, + { + "type_ptr" : 10 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 73 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 74 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 75 + }, + 76 + )>, + <"PointerType" : ( + { + "pointer" : 77 + }, + { + "type_ptr" : 15, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 78 + }, + { + "type_ptr" : 12, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 79 + }, + { + "type_ptr" : 12 + } + )>, + <"RecordType" : ( + { + "pointer" : 80 + }, + 81 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 82 + }, + { + "element_type" : { + "type_ptr" : 80 + }, + "stride" : 24 + }, + 1 + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 83 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 84 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 85 + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 86 + } + )>, + <"InjectedClassNameType" : ( + { + "pointer" : 87 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 88 + } + )>, + <"TemplateTypeParmType" : ( + { + "pointer" : 89 + } + )>, + <"PointerType" : ( + { + "pointer" : 90 + }, + { + "type_ptr" : 88 + } + )>, + <"PointerType" : ( + { + "pointer" : 91 + }, + { + "type_ptr" : 89 + } + )>, + <"PointerType" : ( + { + "pointer" : 92 + }, + { + "type_ptr" : 87 + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 93 + }, + { + "return_type" : { + "type_ptr" : 15 + } + }, + { + "params_type" : [ + { + "type_ptr" : 90 + } + ] + } + )>, + <"FunctionProtoType" : ( + { + "pointer" : 94 + }, + { + "return_type" : { + "type_ptr" : 15 + } + }, + { + "params_type" : [ + { + "type_ptr" : 91 + } + ] + } + )>, + <"TemplateSpecializationType" : ( + { + "pointer" : 95, + "desugared_type" : 87 + } + )>, + <"ObjCObjectType" : ( + { + "pointer" : 96 + }, + { + "base_type" : 69 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 97 + }, + { + "type_ptr" : 96 + } + )>, + <"TypedefType" : ( + { + "pointer" : 98, + "desugared_type" : 97 + }, + { + "child_type" : { + "type_ptr" : 97 + }, + "decl_ptr" : 99 + } + )>, + <"TypedefType" : ( + { + "pointer" : 9, + "desugared_type" : 97 + }, + { + "child_type" : { + "type_ptr" : 98 + }, + "decl_ptr" : 8 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/using_directive.cpp.exp b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/using_directive.cpp.exp new file mode 100644 index 000000000..19389361e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/YojsonASTExporter/using_directive.cpp.exp @@ -0,0 +1,920 @@ +<"TranslationUnitDecl" : ( + { + "pointer" : 1, + "source_range" : ( + { + }, + { + } + ) + }, + [ + <"TypedefDecl" : ( + { + "pointer" : 2, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__int128_t", + "qual_name" : [ + "__int128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 3, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__uint128_t", + "qual_name" : [ + "__uint128_t" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 4, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__NSConstantString", + "qual_name" : [ + "__NSConstantString" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 5, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_ms_va_list", + "qual_name" : [ + "__builtin_ms_va_list" + ] + }, + 0, + { + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 6, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "__builtin_va_list", + "qual_name" : [ + "__builtin_va_list" + ] + }, + 0, + { + } + )>, + <"NamespaceDecl" : ( + { + "pointer" : 7, + "source_range" : ( + { + "file" : "tests/using_directive.cpp", + "line" : 7, + "column" : 1 + }, + { + "line" : 11, + "column" : 1 + } + ) + }, + { + "name" : "nsa", + "qual_name" : [ + "nsa" + ] + }, + [ + <"NamespaceDecl" : ( + { + "pointer" : 8, + "source_range" : ( + { + "line" : 8, + "column" : 1 + }, + { + "line" : 10, + "column" : 1 + } + ) + }, + { + "name" : "nsb", + "qual_name" : [ + "nsb", + "nsa" + ] + }, + [ + <"VarDecl" : ( + { + "pointer" : 9, + "source_range" : ( + { + "line" : 9, + "column" : 1 + }, + { + "column" : 5 + } + ), + "is_used" : true, + "is_this_declaration_referenced" : true + }, + { + "name" : "a", + "qual_name" : [ + "a", + "nsb", + "nsa" + ] + }, + { + "type_ptr" : 10 + }, + { + "is_global" : true + } + )> + ], + { + }, + { + } + )> + ], + { + }, + { + } + )>, + <"UsingDirectiveDecl" : ( + { + "pointer" : 11, + "source_range" : ( + { + "line" : 12, + "column" : 1 + }, + { + "column" : 22 + } + ) + }, + { + "name" : "", + "qual_name" : [ + "" + ] + }, + { + "using_location" : { + "column" : 1 + }, + "namespace_key_location" : { + "column" : 7 + }, + "nested_name_specifier_locs" : [ + { + "kind" : <"Namespace">, + "ref" : { + "kind" : <"Namespace">, + "decl_pointer" : 7, + "name" : { + "name" : "nsa", + "qual_name" : [ + "nsa" + ] + } + } + } + ], + "nominated_namespace" : { + "kind" : <"Namespace">, + "decl_pointer" : 8, + "name" : { + "name" : "nsb", + "qual_name" : [ + "nsb", + "nsa" + ] + } + } + } + )>, + <"NamespaceAliasDecl" : ( + { + "pointer" : 12, + "source_range" : ( + { + "line" : 13, + "column" : 1 + }, + { + "column" : 20 + } + ) + }, + { + "name" : "B", + "qual_name" : [ + "B" + ] + }, + { + "namespace_loc" : { + "column" : 1 + }, + "target_name_loc" : { + "column" : 20 + }, + "nested_name_specifier_locs" : [ + { + "kind" : <"Namespace">, + "ref" : { + "kind" : <"Namespace">, + "decl_pointer" : 7, + "name" : { + "name" : "nsa", + "qual_name" : [ + "nsa" + ] + } + } + } + ], + "namespace" : { + "kind" : <"Namespace">, + "decl_pointer" : 8, + "name" : { + "name" : "nsb", + "qual_name" : [ + "nsb", + "nsa" + ] + } + } + } + )>, + <"VarDecl" : ( + { + "pointer" : 13, + "source_range" : ( + { + "line" : 14, + "column" : 1 + }, + { + "column" : 9 + } + ) + }, + { + "name" : "b", + "qual_name" : [ + "b" + ] + }, + { + "type_ptr" : 10 + }, + { + "is_global" : true, + "init_expr" : <"ImplicitCastExpr" : ( + { + "pointer" : 14, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + <"DeclRefExpr" : ( + { + "pointer" : 15, + "source_range" : ( + { + "column" : 9 + }, + { + "column" : 9 + } + ) + }, + [ + ], + { + "qual_type" : { + "type_ptr" : 10 + }, + "value_kind" : <"LValue"> + }, + { + "decl_ref" : { + "kind" : <"Var">, + "decl_pointer" : 9, + "name" : { + "name" : "a", + "qual_name" : [ + "a", + "nsb", + "nsa" + ] + }, + "qual_type" : { + "type_ptr" : 10 + } + } + } + )> + ], + { + "qual_type" : { + "type_ptr" : 10 + } + }, + { + "cast_kind" : <"LValueToRValue">, + "base_path" : [ + ] + } + )> + } + )>, + <"TypedefDecl" : ( + { + "pointer" : 16, + "source_range" : ( + { + }, + { + } + ), + "is_implicit" : true + }, + { + "name" : "instancetype", + "qual_name" : [ + "instancetype" + ] + }, + 17, + { + } + )> + ], + { + }, + { + "input_path" : "tests/using_directive.cpp", + "input_kind" : <"IK_CXX">, + "integer_type_widths" : { + "char_type" : 8, + "short_type" : 16, + "int_type" : 32, + "long_type" : 64, + "longlong_type" : 64 + }, + "types" : [ + <"BuiltinType" : ( + { + "pointer" : 18 + }, + <"Void"> + )>, + <"BuiltinType" : ( + { + "pointer" : 19 + }, + <"Bool"> + )>, + <"BuiltinType" : ( + { + "pointer" : 20 + }, + <"Char_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 21 + }, + <"SChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 22 + }, + <"Short"> + )>, + <"BuiltinType" : ( + { + "pointer" : 10 + }, + <"Int"> + )>, + <"BuiltinType" : ( + { + "pointer" : 23 + }, + <"Long"> + )>, + <"BuiltinType" : ( + { + "pointer" : 24 + }, + <"LongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 25 + }, + <"UChar"> + )>, + <"BuiltinType" : ( + { + "pointer" : 26 + }, + <"UShort"> + )>, + <"BuiltinType" : ( + { + "pointer" : 27 + }, + <"UInt"> + )>, + <"BuiltinType" : ( + { + "pointer" : 28 + }, + <"ULong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 29 + }, + <"ULongLong"> + )>, + <"BuiltinType" : ( + { + "pointer" : 30 + }, + <"Float"> + )>, + <"BuiltinType" : ( + { + "pointer" : 31 + }, + <"Double"> + )>, + <"BuiltinType" : ( + { + "pointer" : 32 + }, + <"LongDouble"> + )>, + <"BuiltinType" : ( + { + "pointer" : 33 + }, + <"Float128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 34 + }, + <"Float16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 35 + }, + <"ShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 36 + }, + <"Accum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 37 + }, + <"LongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 38 + }, + <"UShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 39 + }, + <"UAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 40 + }, + <"ULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 41 + }, + <"ShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 42 + }, + <"Fract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 43 + }, + <"LongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 44 + }, + <"UShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 45 + }, + <"UFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 46 + }, + <"ULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 47 + }, + <"SatShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 48 + }, + <"SatAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 49 + }, + <"SatLongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 50 + }, + <"SatUShortAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 51 + }, + <"SatUAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 52 + }, + <"SatULongAccum"> + )>, + <"BuiltinType" : ( + { + "pointer" : 53 + }, + <"SatShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 54 + }, + <"SatFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 55 + }, + <"SatLongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 56 + }, + <"SatUShortFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 57 + }, + <"SatUFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 58 + }, + <"SatULongFract"> + )>, + <"BuiltinType" : ( + { + "pointer" : 59 + }, + <"Int128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 60 + }, + <"UInt128"> + )>, + <"BuiltinType" : ( + { + "pointer" : 61 + }, + <"WChar_S"> + )>, + <"BuiltinType" : ( + { + "pointer" : 62 + }, + <"Char8"> + )>, + <"BuiltinType" : ( + { + "pointer" : 63 + }, + <"Char16"> + )>, + <"BuiltinType" : ( + { + "pointer" : 64 + }, + <"Char32"> + )>, + <"BuiltinType" : ( + { + "pointer" : 65 + }, + <"Dependent"> + )>, + <"BuiltinType" : ( + { + "pointer" : 66 + }, + <"Overload"> + )>, + <"BuiltinType" : ( + { + "pointer" : 67 + }, + <"BoundMember"> + )>, + <"BuiltinType" : ( + { + "pointer" : 68 + }, + <"PseudoObject"> + )>, + <"BuiltinType" : ( + { + "pointer" : 69 + }, + <"UnknownAny"> + )>, + <"BuiltinType" : ( + { + "pointer" : 70 + }, + <"ARCUnbridgedCast"> + )>, + <"BuiltinType" : ( + { + "pointer" : 71 + }, + <"BuiltinFn"> + )>, + <"ComplexType" : ( + { + "pointer" : 72 + } + )>, + <"ComplexType" : ( + { + "pointer" : 73 + } + )>, + <"ComplexType" : ( + { + "pointer" : 74 + } + )>, + <"ComplexType" : ( + { + "pointer" : 75 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 76 + }, + <"ObjCId"> + )>, + <"BuiltinType" : ( + { + "pointer" : 77 + }, + <"ObjCClass"> + )>, + <"BuiltinType" : ( + { + "pointer" : 78 + }, + <"ObjCSel"> + )>, + <"PointerType" : ( + { + "pointer" : 79 + }, + { + "type_ptr" : 18 + } + )>, + <"BuiltinType" : ( + { + "pointer" : 80 + }, + <"NullPtr"> + )>, + <"BuiltinType" : ( + { + "pointer" : 81 + }, + <"Half"> + )>, + <"RecordType" : ( + { + "pointer" : 82 + }, + 83 + )>, + <"PointerType" : ( + { + "pointer" : 84 + }, + { + "type_ptr" : 10, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 85 + }, + { + "type_ptr" : 20, + "is_const" : true + } + )>, + <"PointerType" : ( + { + "pointer" : 86 + }, + { + "type_ptr" : 20 + } + )>, + <"RecordType" : ( + { + "pointer" : 87 + }, + 88 + )>, + <"ConstantArrayType" : ( + { + "pointer" : 89 + }, + { + "element_type" : { + "type_ptr" : 87 + }, + "stride" : 24 + }, + 1 + )>, + <"ObjCObjectType" : ( + { + "pointer" : 90 + }, + { + "base_type" : 76 + } + )>, + <"ObjCObjectPointerType" : ( + { + "pointer" : 91 + }, + { + "type_ptr" : 90 + } + )>, + <"TypedefType" : ( + { + "pointer" : 92, + "desugared_type" : 91 + }, + { + "child_type" : { + "type_ptr" : 91 + }, + "decl_ptr" : 93 + } + )>, + <"TypedefType" : ( + { + "pointer" : 17, + "desugared_type" : 91 + }, + { + "child_type" : { + "type_ptr" : 92 + }, + "decl_ptr" : 16 + } + )>, + <"NoneType" : ( + { + "pointer" : 0 + } + )> + ] + } +)> diff --git a/facebook-clang-plugins/libtooling/tests/available_expression.m b/facebook-clang-plugins/libtooling/tests/available_expression.m new file mode 100644 index 000000000..f9937f210 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/available_expression.m @@ -0,0 +1,27 @@ +/* + * 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. + */ + +@interface NSObject +@end +@implementation NSObject +@end + +@interface available_expression : NSObject + +@end + +@implementation available_expression + +- (void)test_no_bug:(int)n and:(available_expression *)data { + if (@available(macOS 10.13, iOS 11.0, *)) { + } + + if (__builtin_available(macos 10.10, ios 8, *)) { + } +} + +@end diff --git a/facebook-clang-plugins/libtooling/tests/bind_temporary.cpp b/facebook-clang-plugins/libtooling/tests/bind_temporary.cpp new file mode 100644 index 000000000..143cd1a66 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/bind_temporary.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2014-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. + */ +struct S { + public: + S() {} // User defined constructor makes S non-POD. + ~S() {} // User defined destructor makes it non-trivial. +}; +void test() { + const S &s_ref = S(); // Requires a CXXBindTemporaryExpr. +} diff --git a/facebook-clang-plugins/libtooling/tests/c_attributes.c b/facebook-clang-plugins/libtooling/tests/c_attributes.c new file mode 100644 index 000000000..932d9c518 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/c_attributes.c @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2015-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. + */ +int add_all_ints(int a, ...) __attribute__((sentinel(0, 1))); diff --git a/facebook-clang-plugins/libtooling/tests/c_cast.cpp b/facebook-clang-plugins/libtooling/tests/c_cast.cpp new file mode 100644 index 000000000..bfb882358 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/c_cast.cpp @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2014-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. + */ +int i = 10; +long l = (long)i; +long m = long(i); diff --git a/facebook-clang-plugins/libtooling/tests/class_template.cpp b/facebook-clang-plugins/libtooling/tests/class_template.cpp new file mode 100644 index 000000000..25fa40bc0 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/class_template.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2015-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. + */ +namespace N { +template +struct S { + T field; +}; + +template +struct S { + T field; /* not T* !!! */ +}; + +template <> +struct S { + int field; +}; + +void test(S p) { + S *> val; + val.field = p; +} +} // namespace N diff --git a/facebook-clang-plugins/libtooling/tests/comments.c b/facebook-clang-plugins/libtooling/tests/comments.c new file mode 100644 index 000000000..4bccb1e41 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/comments.c @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2015-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. + */ +/** I'm a long comment */ +void foo() { + /* I'm a short comment */ + // I'm a c++ comment +} diff --git a/facebook-clang-plugins/libtooling/tests/const_cast.cpp b/facebook-clang-plugins/libtooling/tests/const_cast.cpp new file mode 100644 index 000000000..b53ea978a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/const_cast.cpp @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2014-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. + */ +class Foo { + public: + void func() {} // a non-const member function +}; + +void someFunction(const Foo &f) { + Foo &fRef = const_cast(f); + fRef.func(); // okay +} + +constexpr int i = 1; diff --git a/facebook-clang-plugins/libtooling/tests/copy_constructor.cpp b/facebook-clang-plugins/libtooling/tests/copy_constructor.cpp new file mode 100644 index 000000000..d20ed030c --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/copy_constructor.cpp @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2018-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. + */ + +struct A { + int a, b, c, d; +}; + +const A &f() { + static A a; + return a; +} + +int g() { + auto x = f(); + return x.a + x.b; +} diff --git a/facebook-clang-plugins/libtooling/tests/dynamic_cast.cpp b/facebook-clang-plugins/libtooling/tests/dynamic_cast.cpp new file mode 100644 index 000000000..0a9e41cfb --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/dynamic_cast.cpp @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2014-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. + */ +struct A { + virtual void f() {} +}; +struct B : public A {}; +struct C {}; + +void f() { + A a; + B b; + + A *ap = &b; + B *b1 = dynamic_cast(&a); + B *b2 = dynamic_cast(ap); + C *c = dynamic_cast(ap); + + A &ar = dynamic_cast(*ap); + B &br = dynamic_cast(*ap); + C &cr = dynamic_cast(*ap); +} diff --git a/facebook-clang-plugins/libtooling/tests/expr_with_cleanups.cpp b/facebook-clang-plugins/libtooling/tests/expr_with_cleanups.cpp new file mode 100644 index 000000000..3a2b1f2d5 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/expr_with_cleanups.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2014-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. + */ +class X { + public: + X(int); + X(const X &); + X &operator=(const X &); + ~X(); +}; +class Y { + public: + Y(int); + ~Y(); +}; +X f(X); +Y g(Y); +void h() { + X a(1); + X b = f(X(2)); + Y c = g(Y(3)); + a = f(a); +} diff --git a/facebook-clang-plugins/libtooling/tests/friend.cpp b/facebook-clang-plugins/libtooling/tests/friend.cpp new file mode 100644 index 000000000..457bc85d7 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/friend.cpp @@ -0,0 +1,18 @@ +/* + * 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. + */ + +template +struct AnotherClass {}; + +template +struct Y { + friend class AnotherClass; + template + friend class AnotherClass; +}; + +Y y1; diff --git a/facebook-clang-plugins/libtooling/tests/function_template.cpp b/facebook-clang-plugins/libtooling/tests/function_template.cpp new file mode 100644 index 000000000..2f17d056e --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/function_template.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2015-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. + */ + +template +T get(T x) { + return x; +} + +// specialization +template <> +int get(int x) { + return 2 * x; +} + +// explicit instantiacion +template double get(double x); + +void test() { + char c; + float f; + c = get(c); + f = get(f); +} diff --git a/facebook-clang-plugins/libtooling/tests/generic_selector_expression.c b/facebook-clang-plugins/libtooling/tests/generic_selector_expression.c new file mode 100644 index 000000000..a4380275c --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/generic_selector_expression.c @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2018-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. + */ +#define test(x) _Generic((x), _Bool : 1, char : 2, int : 3, default : 4) + +int test_typename(void) { + char s; + int y; + int x = test(s); + int z = test(y); + return x + z; +}; diff --git a/facebook-clang-plugins/libtooling/tests/inheritance.cpp b/facebook-clang-plugins/libtooling/tests/inheritance.cpp new file mode 100644 index 000000000..b3e45fbe5 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/inheritance.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2014-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. + */ +extern double sqrt(double); +extern double pow(double, double); + +class Form { + private: + double area; + + public: + int color; + virtual void vmethod() {} + + double getArea() { return this->area; } + + void setArea(double area) { this->area = area; } +}; + +class Circle : public Form { + public: + void vmethod() override {} + double getRatio() { + double a; + a = getArea(); + return sqrt(a / 2 * 3.14); + } + + void setRatio(double diameter) { setArea(pow(diameter * 0.5, 2) * 3.14); } + + bool isDark() { return (color > 10); } +}; diff --git a/facebook-clang-plugins/libtooling/tests/inheriting_constructor.cpp b/facebook-clang-plugins/libtooling/tests/inheriting_constructor.cpp new file mode 100644 index 000000000..024189f39 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/inheriting_constructor.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2018-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. + */ +struct A { + A(int) {} + void foo(){}; +}; + +struct B : A { + using A::A; +}; + +int main() { B b(5); } diff --git a/facebook-clang-plugins/libtooling/tests/lambda.cpp b/facebook-clang-plugins/libtooling/tests/lambda.cpp new file mode 100644 index 000000000..54d402265 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/lambda.cpp @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2014-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. + */ +int main() { + int m, n; + + auto f = []() { return 1; }; + + auto bar = [&m, n](int a) { return m; }; + + auto init_capture = [i = 0]() { return i; }; + + return 0; +} diff --git a/facebook-clang-plugins/libtooling/tests/materialize_temporary.cpp b/facebook-clang-plugins/libtooling/tests/materialize_temporary.cpp new file mode 100644 index 000000000..65eb23ab1 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/materialize_temporary.cpp @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2014-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. + */ +const int &r = 1.0; diff --git a/facebook-clang-plugins/libtooling/tests/namespace_decl.cpp b/facebook-clang-plugins/libtooling/tests/namespace_decl.cpp new file mode 100644 index 000000000..c492c6158 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/namespace_decl.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2014-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. + */ +namespace Q { +namespace V { // original-namespace-definition for V +} +namespace V { // extension-namespace-definition for V +} +inline namespace I { +int i; +} +} // namespace Q + +namespace { // anonymous namespace + +} diff --git a/facebook-clang-plugins/libtooling/tests/new.cpp b/facebook-clang-plugins/libtooling/tests/new.cpp new file mode 100644 index 000000000..b854934d8 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/new.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2015-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. + */ +struct pod { + int a; +}; + +struct cpplike { + int a; + int b; + pod c; + cpplike() : a(10), b(2) {} + cpplike(int a, int b) : a(a), b(b) {} +}; + +void test() { + auto *i = new int(2); + auto *i_a = new int[10]; + + auto *p = new pod; + auto *p_a = new pod[10]; + + auto *c = new cpplike(1, 2); + auto *c_a = new cpplike[10]; + + delete i; + delete[] i_a; + delete p; + delete[] p_a; + delete c; + delete[] c_a; +} + +// This isn't exported quite right yet +void test_c11() { + auto *i = new int[3]{1, 2, 3}; + auto *c = new cpplike{1, 2}; + auto *c_a = new cpplike[4]{{1, 2}, {3, 4}, {5, 6}}; // initializer list is one + // too short +} + +void *operator new(unsigned long size, void *ptr, void *ptr2) noexcept { + return ptr2; +}; + +void test_placement(void *ptr) { + int i = 1; + auto *p = new (ptr, &i) pod; +} diff --git a/facebook-clang-plugins/libtooling/tests/no_except_expr.cpp b/facebook-clang-plugins/libtooling/tests/no_except_expr.cpp new file mode 100644 index 000000000..fec61070d --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/no_except_expr.cpp @@ -0,0 +1,9 @@ +/* + * 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. + */ +void no_throw() noexcept {}; + +int main() { return noexcept(no_throw()); } diff --git a/facebook-clang-plugins/libtooling/tests/objcpp_template_unboxing.mm b/facebook-clang-plugins/libtooling/tests/objcpp_template_unboxing.mm new file mode 100644 index 000000000..999126ace --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/objcpp_template_unboxing.mm @@ -0,0 +1,10 @@ +/* + * 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. + */ +template +void *box(T param) { + return (void *)@(param); +} diff --git a/facebook-clang-plugins/libtooling/tests/optional.m b/facebook-clang-plugins/libtooling/tests/optional.m new file mode 100644 index 000000000..63fef1968 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/optional.m @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2019-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. + */ + +@interface NSObject +@end + +@protocol NSObject +@end + +@protocol BarDelegate +@optional +- (void)optionalFunction; +@end + +@interface Bar : NSObject +@property(nonatomic, assign) id delegate; +@end + +@implementation Bar +- (void)unsafeAction { + [self.delegate optionalFunction]; +} + +@end diff --git a/facebook-clang-plugins/libtooling/tests/sizeof_static_evaluation.cpp b/facebook-clang-plugins/libtooling/tests/sizeof_static_evaluation.cpp new file mode 100644 index 000000000..4c017c0cc --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/sizeof_static_evaluation.cpp @@ -0,0 +1,18 @@ +/* + * 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. + */ +template +class __foo; + +template +class __foo { + int x = sizeof(T); + + public: + __foo(){}; +}; + +int y = sizeof(char); diff --git a/facebook-clang-plugins/libtooling/tests/struct.cpp b/facebook-clang-plugins/libtooling/tests/struct.cpp new file mode 100644 index 000000000..c5a5c000a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/struct.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2014-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. + */ +struct Point { + double x, y; +}; + +void fun() { + struct X {}; + X x; +} + +Point blank = {3.0, 4.0}; + +struct A { + static int a; +}; + +int A::a = 32; + +struct B { + static const int b = 52; +}; diff --git a/facebook-clang-plugins/libtooling/tests/template_instantiations.cpp b/facebook-clang-plugins/libtooling/tests/template_instantiations.cpp new file mode 100644 index 000000000..c1680e04a --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/template_instantiations.cpp @@ -0,0 +1,50 @@ +/* + * 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. + */ +template +struct Tuple {}; + +Tuple> x; + +typedef decltype(nullptr) nullptr_t; +template +struct NullPtrTemplate {}; + +NullPtrTemplate x1; + +template +struct IntTemplate {}; + +template +struct CharTemplate {}; +template +struct LongTemplate {}; + +IntTemplate<0> x2; +CharTemplate<'c'> x3; +LongTemplate<0x1234567890L> x4; + +template +struct X {}; +int x5[42]; + +struct Y {}; +template +struct Z {}; +Y y; + +template +struct W {}; +int b[5]; + +void f(int); +template +struct A {}; + +X xi; +Z z; +W w; +A<&f> a; diff --git a/facebook-clang-plugins/libtooling/tests/this.cpp b/facebook-clang-plugins/libtooling/tests/this.cpp new file mode 100644 index 000000000..7e7bde842 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/this.cpp @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2014-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. + */ +class T { + int age; + void foo() { this->age = 1; } +}; diff --git a/facebook-clang-plugins/libtooling/tests/type_trait.cpp b/facebook-clang-plugins/libtooling/tests/type_trait.cpp new file mode 100644 index 000000000..5c87932e0 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/type_trait.cpp @@ -0,0 +1,18 @@ +/* + * 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. + */ + +struct X { + virtual void f() {} +}; + +template +bool is_pod() { + return __is_pod(T); +} + +bool a = is_pod(); +bool b = is_pod(); diff --git a/facebook-clang-plugins/libtooling/tests/unresolved_lookup.cpp b/facebook-clang-plugins/libtooling/tests/unresolved_lookup.cpp new file mode 100644 index 000000000..de013a18d --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/unresolved_lookup.cpp @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2014-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. + */ +template +struct S { + template + static int foo(U *); + static const unsigned int s = sizeof(S::foo(0)); +}; diff --git a/facebook-clang-plugins/libtooling/tests/using_directive.cpp b/facebook-clang-plugins/libtooling/tests/using_directive.cpp new file mode 100644 index 000000000..be327f5d4 --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/using_directive.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2014-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. + */ +namespace nsa { +namespace nsb { +int a; +} +} // namespace nsa +using namespace nsa::nsb; +namespace B = nsa::nsb; +int b = a; diff --git a/facebook-clang-plugins/libtooling/tests/virtual_bases.cpp b/facebook-clang-plugins/libtooling/tests/virtual_bases.cpp new file mode 100644 index 000000000..3002f066b --- /dev/null +++ b/facebook-clang-plugins/libtooling/tests/virtual_bases.cpp @@ -0,0 +1,25 @@ +/* + * 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. + */ +struct A { + A(){}; + ~A(){}; +}; + +struct B : virtual A { + B(){}; + ~B(){}; +}; + +struct C { + C(){}; + ~C(){}; +}; + +struct E : B, virtual C { + E(){}; + ~E(){}; +}; diff --git a/facebook-clang-plugins/scripts/run_test.sh b/facebook-clang-plugins/scripts/run_test.sh new file mode 100755 index 000000000..a6392ce92 --- /dev/null +++ b/facebook-clang-plugins/scripts/run_test.sh @@ -0,0 +1,46 @@ +# Copyright (c) 2014-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. + +#!/bin/bash + +TESTFILE="$1" +shift +TESTNAME=`basename "$TESTFILE"` + +OUTFILE="$TESTFILE.out" +EXPFILE="$TESTFILE.exp" +DIFFFILE="$TESTFILE.diff" + +if [[ $VERBOSE > 0 ]] +then + DEST=/dev/stdout +else + DEST=/dev/null +fi + +if $* 2>&1 | tee "$OUTFILE" > $DEST +then + if diff <(cat "$EXPFILE" 2> /dev/null || true) "$OUTFILE" > "$DIFFFILE" + then + echo "[+] $TESTNAME succeeded" + rm "$DIFFFILE" + exit 0 + else + echo "[-] $TESTNAME failed (unexpected output)" + printf '\033[1;31m\n' + if [[ $LIMIT > 0 ]] + then + tail -n $LIMIT "$DIFFFILE" + else + cat "$DIFFFILE" + fi + printf '\033[0m\n' + rm "$DIFFFILE" + exit 1 + fi +else + echo "[-] $TESTNAME failed (error $?)" + exit 2 +fi