summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Kosiński <krzysio@google.com>2022-11-09 01:56:23 +0000
committerKrzysztof Kosiński <krzysio@google.com>2022-11-15 05:23:13 +0000
commitff109488e721dc221a61fd570935c665e2fd5ff8 (patch)
treed24fd009ee902124b423d974fa65733572158fba
parent5b1e2804b43c9be30c098fe6df9ded88d7058a1e (diff)
parent98a5d24ddf23c414eaf40a8c5d73d9048a454ea3 (diff)
downloadkythe-ff109488e721dc221a61fd570935c665e2fd5ff8.tar.gz
Upgrade Kythe to v0.0.60.
Test: presubmit Change-Id: I36006ef55385d0f4bf6544f9b7a0179aea90a2ff
-rw-r--r--.bazelminversion2
-rw-r--r--.bazelrc33
-rw-r--r--.bazelversion2
-rw-r--r--.gitignore9
-rw-r--r--.pre-commit-config.yaml2
-rw-r--r--BUILD26
-rw-r--r--Cargo.Bazel.lock (renamed from kythe/rust/cargo/Cargo.raze.lock)428
-rw-r--r--METADATA5
-rw-r--r--RELEASES.md147
-rw-r--r--WORKSPACE133
-rw-r--r--cargo-bazel-lock.json5470
-rw-r--r--external.bzl82
-rw-r--r--go.mod9
-rw-r--r--go.sum141
-rw-r--r--kythe/cxx/common/indexing/KytheGraphRecorder.cc7
-rw-r--r--kythe/cxx/common/indexing/KytheGraphRecorder.h7
-rw-r--r--kythe/cxx/common/json_proto.cc4
-rw-r--r--kythe/cxx/common/kythe_metadata_file.cc8
-rw-r--r--kythe/cxx/common/kythe_metadata_file.h9
-rw-r--r--kythe/cxx/common/protobuf_metadata_file.cc27
-rw-r--r--kythe/cxx/common/protobuf_metadata_file.h9
-rw-r--r--kythe/cxx/extractor/toolchain.bzl4
-rw-r--r--kythe/cxx/indexer/cxx/BUILD18
-rw-r--r--kythe/cxx/indexer/cxx/GoogleFlagsLibrarySupport.cc13
-rw-r--r--kythe/cxx/indexer/cxx/GraphObserver.cc81
-rw-r--r--kythe/cxx/indexer/cxx/GraphObserver.h89
-rw-r--r--kythe/cxx/indexer/cxx/IndexerASTHooks.cc533
-rw-r--r--kythe/cxx/indexer/cxx/IndexerASTHooks.h210
-rw-r--r--kythe/cxx/indexer/cxx/IndexerFrontendAction.cc20
-rw-r--r--kythe/cxx/indexer/cxx/IndexerFrontendAction.h127
-rw-r--r--kythe/cxx/indexer/cxx/IndexerPPCallbacks.cc15
-rw-r--r--kythe/cxx/indexer/cxx/IndexerPPCallbacks.h2
-rw-r--r--kythe/cxx/indexer/cxx/KytheGraphObserver.cc59
-rw-r--r--kythe/cxx/indexer/cxx/KytheGraphObserver.h15
-rw-r--r--kythe/cxx/indexer/cxx/KytheIndexerMain.cc38
-rw-r--r--kythe/cxx/indexer/cxx/KytheIndexerUnitTest.cc18
-rw-r--r--kythe/cxx/indexer/cxx/KytheVFS.cc80
-rw-r--r--kythe/cxx/indexer/cxx/KytheVFS.h52
-rw-r--r--kythe/cxx/indexer/cxx/KytheVFS_test.cc147
-rw-r--r--kythe/cxx/indexer/cxx/indexer_worklist.h3
-rw-r--r--kythe/cxx/indexer/cxx/marked_source.cc9
-rw-r--r--kythe/cxx/indexer/cxx/recursive_type_visitor.h6
-rw-r--r--kythe/cxx/indexer/cxx/testdata/BUILD1113
-rw-r--r--kythe/cxx/indexer/cxx/testdata/basic/tvar_auto_zoo.cc27
-rw-r--r--kythe/cxx/indexer/cxx/testdata/basic/using_declaration_ref.cc42
-rw-r--r--kythe/cxx/indexer/cxx/testdata/basic/vname_corpus.cc2
-rw-r--r--kythe/cxx/indexer/cxx/testdata/df/df_operatoreq.cc14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/df/df_operatorpluseq.cc25
-rw-r--r--kythe/cxx/indexer/cxx/testdata/df/df_operatorplusplus.cc15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/df/df_unary.cc2
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/docs_template_partial_spec_var.cc4
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_alias.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_function.cc8
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_record.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_var.cc11
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_record.cc7
-rw-r--r--kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_var.cc7
-rw-r--r--kythe/cxx/indexer/cxx/testdata/function/function_ctor_init_refs.cc4
-rw-r--r--kythe/cxx/indexer/cxx/testdata/function/function_lambda_explicit_this.cc20
-rw-r--r--kythe/cxx/indexer/cxx/testdata/function/function_lambda_implicit_this.cc25
-rw-r--r--kythe/cxx/indexer/cxx/testdata/function/function_lambda_value_this.cc2
-rw-r--r--kythe/cxx/indexer/cxx/testdata/marked_source/tvar_ms_absvar.cc18
-rw-r--r--kythe/cxx/indexer/cxx/testdata/metadata/metadata_semantic.cc2
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/README5
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_bound.m44
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_decl.m22
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_restricted_super_class.m65
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_decl.m22
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_restricted_super_class.m55
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_inherited.m63
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_instantiation.m51
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_invariant.m42
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_call.m53
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_type.m58
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_nested.m84
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_restricted_protocol.m49
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_two_args.m32
-rw-r--r--kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_unbound.m32
-rw-r--r--kythe/cxx/indexer/cxx/testdata/proto/BUILD14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/proto/cc_proto_verifier_test.bzl15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/proto/proto.cc4
-rw-r--r--kythe/cxx/indexer/cxx/testdata/proto/proto_semantic.cc48
-rw-r--r--kythe/cxx/indexer/cxx/testdata/rec/rec_ctor_implicit_refs.cc2
-rw-r--r--kythe/cxx/indexer/cxx/testdata/rec/tvar_rec_class_base_dependent.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/template/template_class_inst_explicit.cc2
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/exclude_this_file.h4
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/generic_lambda.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/include_this_file.h4
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias.cc11
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation.cc11
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation_decls.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_multilevel_abs.cc33
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_naming.cc8
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_multiple_typename.cc31
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_typename.cc28
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_auto_parameter.cc16
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_member.cc17
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_pspec_member.cc24
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec.cc17
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec_member.cc19
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_deduction.cc43
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_default_and_init.cc63
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_defn.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_fn_spec.cc18
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inner.cc16
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_explicit.cc14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit.cc29
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit_dependent.cc12
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_vs_spec.cc34
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref.cc31
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref_ps.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_skip_implicit_on.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_template_ctor.cc28
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_decl_arg.cc38
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depbase_field_ref.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor.cc29
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor_small.cc12
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor.cc19
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor_qualified.cc21
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_name_ref.cc8
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_sized_array.cc31
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depexpr_field_ref.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_class.cc14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_field_ref.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_implicit.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_inst_class.cc17
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_path_graph.cc38
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_template_field_ref.cc18
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths_expect_fail.cc21
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_exclude.cc50
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_field.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_file_call.cc21
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_call.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl.cc7
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl_defn.cc16
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defines.cc25
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defn.cc15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_dependent_spec_defn.cc14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_completes.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_with_default_completes.cc18
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_implicit_spec.cc11
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_inst_vs_spec.cc22
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_member_spec_defn.cc19
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multi_decl_def.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multiple_implicit_spec.cc15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_overload.cc14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_decl.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_decl.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_defn_decl_decl.cc15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_overload.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_fold_expressions.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_incomplete_array.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_instance_type_from_class.cc8
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_multilevel_argument.cc12
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_nested_name.cc23
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_decl.cc7
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_mono_call.cc22
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_pack_call.cc17
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_rec_pack_call.cc23
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_completes.cc17
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_decl.cc19
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_defn.cc23
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_multiple_decl.cc26
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_twovar_decl.cc18
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_member_abs.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override.cc11
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root.cc17
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root_aliasing.cc16
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_redundant_constituents_anchored.cc8
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_static_member.cc15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_two_arg_spec.cc15
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_ty_typename.cc8
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_type_alias_param.cc7
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_unresolved_ctor_expr.cc14
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_using_pack_expansion.cc28
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_constexpr.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_decl.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn.cc9
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn_completes.cc5
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_explicit_spec.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_implicit_spec.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_inst_total_spec.cc10
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps.cc13
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_completes.cc6
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_implicit_spec.cc16
-rw-r--r--kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ref_ps.cc11
-rw-r--r--kythe/cxx/indexer/proto/file_descriptor_walker.cc57
-rw-r--r--kythe/cxx/indexer/proto/file_descriptor_walker.h2
-rw-r--r--kythe/cxx/indexer/proto/testdata/BUILD12
-rw-r--r--kythe/cxx/indexer/proto/testdata/basic/map.proto16
-rw-r--r--kythe/cxx/indexer/proto/testdata/proto_verifier_test.bzl12
-rw-r--r--kythe/cxx/indexer/textproto/testdata/BUILD27
-rw-r--r--kythe/cxx/indexer/textproto/testdata/generated_imports.pbtxt8
-rw-r--r--kythe/cxx/indexer/textproto/testdata/imports_generated.proto10
-rw-r--r--kythe/cxx/indexer/textproto/testdata/textproto_verifier_test.bzl1
-rw-r--r--kythe/cxx/tools/fyi/testdata/compile_commands.bzl6
-rw-r--r--kythe/cxx/verifier/BUILD1
-rw-r--r--kythe/cxx/verifier/assertions.cc8
-rw-r--r--kythe/cxx/verifier/pretty_printer.cc52
-rw-r--r--kythe/cxx/verifier/pretty_printer.h29
-rw-r--r--kythe/cxx/verifier/verifier.cc188
-rw-r--r--kythe/cxx/verifier/verifier.h30
-rw-r--r--kythe/cxx/verifier/verifier_main.cc22
-rw-r--r--kythe/docs/schema/schema.txt175
-rw-r--r--kythe/extractors/BUILD2
-rw-r--r--kythe/extractors/bazel/Dockerfile4
-rw-r--r--kythe/extractors/openjdk11/extract/BUILD2
-rw-r--r--kythe/extractors/openjdk11/extract/extract.go2
-rw-r--r--kythe/go/extractors/bazel/extractor.go2
-rw-r--r--kythe/go/extractors/bazel/extutil/extutil.go4
-rw-r--r--kythe/go/extractors/cmd/gotool/Dockerfile4
-rwxr-xr-xkythe/go/extractors/cmd/gotool/analyze_packages.sh46
-rw-r--r--kythe/go/extractors/cmd/gotool/gotool.go4
-rw-r--r--kythe/go/extractors/cmd/gotool/readme.md20
-rw-r--r--kythe/go/extractors/config/preprocessor/modifier/pom_xml_modifier.go14
-rw-r--r--kythe/go/extractors/config/runextractor/backup/backup.go14
-rw-r--r--kythe/go/extractors/golang/golang.go33
-rw-r--r--kythe/go/extractors/govname/govname.go89
-rw-r--r--kythe/go/extractors/govname/govname_test.go32
-rw-r--r--kythe/go/extractors/govname/types.go18
-rw-r--r--kythe/go/indexer/BUILD67
-rw-r--r--kythe/go/indexer/cmd/go_indexer/go_indexer.go2
-rw-r--r--kythe/go/indexer/emit.go208
-rw-r--r--kythe/go/indexer/indexer.go163
-rw-r--r--kythe/go/indexer/markedsource.go84
-rw-r--r--kythe/go/indexer/testdata/basic/anchors.go6
-rw-r--r--kythe/go/indexer/testdata/basic/anonref.go9
-rw-r--r--kythe/go/indexer/testdata/basic/anonymous.go29
-rw-r--r--kythe/go/indexer/testdata/basic/filenode.go4
-rw-r--r--kythe/go/indexer/testdata/basic/funcall.go14
-rw-r--r--kythe/go/indexer/testdata/basic/functions.go80
-rw-r--r--kythe/go/indexer/testdata/basic/imports.go9
-rw-r--r--kythe/go/indexer/testdata/basic/locals.go2
-rw-r--r--kythe/go/indexer/testdata/basic/packageinit.go18
-rw-r--r--kythe/go/indexer/testdata/basic/packages.go2
-rw-r--r--kythe/go/indexer/testdata/basic/satisfies.go14
-rw-r--r--kythe/go/indexer/testdata/basic/scopes.go4
-rw-r--r--kythe/go/indexer/testdata/basic/stdlibimport.go9
-rw-r--r--kythe/go/indexer/testdata/basic/stdliboverride.go16
-rw-r--r--kythe/go/indexer/testdata/basic/structref.go26
-rw-r--r--kythe/go/indexer/testdata/basic/tappcorpus.go6
-rw-r--r--kythe/go/indexer/testdata/basic/typespec.go52
-rw-r--r--kythe/go/indexer/testdata/basic/vardef.go16
-rw-r--r--kythe/go/indexer/testdata/code/funcdecl.go151
-rw-r--r--kythe/go/indexer/testdata/code/interface.go23
-rw-r--r--kythe/go/indexer/testdata/code/methdecl.go384
-rw-r--r--kythe/go/indexer/testdata/code/pkgvar.go45
-rw-r--r--kythe/go/indexer/testdata/code/structtype.go22
-rw-r--r--kythe/go/indexer/testdata/foo.go3
-rw-r--r--kythe/go/indexer/testdata/generics/genericdep.go24
-rw-r--r--kythe/go/indexer/testdata/generics/genericfunc.go50
-rw-r--r--kythe/go/indexer/testdata/generics/genericinterface.go52
-rw-r--r--kythe/go/indexer/testdata/generics/genericmethod.go88
-rw-r--r--kythe/go/indexer/testdata/generics/genericstruct.go68
-rw-r--r--kythe/go/indexer/testdata/go_indexer_test.bzl29
-rw-r--r--kythe/go/indexer/testdata/initcall.go2
-rw-r--r--kythe/go/indexer/testdata/integration/marked_source.go8
-rw-r--r--kythe/go/indexer/testdata/override.go86
-rw-r--r--kythe/go/indexer/testdata/structinit.go6
-rw-r--r--kythe/go/indexer/testdata/syntax.go1
-rw-r--r--kythe/go/indexer/testdata/types.go164
-rw-r--r--kythe/go/indexer/testdata/unsafe.go8
-rw-r--r--kythe/go/languageserver/languageserver.go5
-rw-r--r--kythe/go/languageserver/pathmap/mapper.go7
-rw-r--r--kythe/go/platform/analysis/driver/driver_test.go10
-rw-r--r--kythe/go/platform/analysis/proxy/proxy.go71
-rw-r--r--kythe/go/platform/cache/cache.go23
-rw-r--r--kythe/go/platform/delimited/delimited.go32
-rw-r--r--kythe/go/platform/kcd/kcd.go1
-rw-r--r--kythe/go/platform/kindex/kindex.go14
-rw-r--r--kythe/go/platform/kzip/info/info.go31
-rw-r--r--kythe/go/platform/kzip/info/info_test.go39
-rw-r--r--kythe/go/platform/kzip/kzip.go57
-rw-r--r--kythe/go/platform/tools/entrystream/entrystream.go17
-rw-r--r--kythe/go/platform/tools/extraction/extractrepo/extractrepo.go3
-rw-r--r--kythe/go/platform/tools/extraction/repotester/repotester.go5
-rw-r--r--kythe/go/platform/tools/kzip/filtercmd/BUILD1
-rw-r--r--kythe/go/platform/tools/kzip/filtercmd/filtercmd.go28
-rw-r--r--kythe/go/platform/tools/kzip/kzip.go5
-rw-r--r--kythe/go/platform/tools/kzip/mergecmd/mergecmd.go16
-rw-r--r--kythe/go/platform/tools/shasum_tool/shasum_tool.go3
-rw-r--r--kythe/go/platform/vfs/vfs_test.go12
-rw-r--r--kythe/go/services/cli/command_decor.go7
-rw-r--r--kythe/go/services/cli/commands_xrefs.go31
-rw-r--r--kythe/go/services/filetree/filetree.go10
-rw-r--r--kythe/go/services/graph/graph.go12
-rw-r--r--kythe/go/services/xrefs/xrefs.go18
-rw-r--r--kythe/go/serving/explore/explore.go9
-rw-r--r--kythe/go/serving/explore/explore_test.go20
-rw-r--r--kythe/go/serving/filetree/filetree.go5
-rw-r--r--kythe/go/serving/graph/graph.go5
-rw-r--r--kythe/go/serving/graph/graph_test.go20
-rw-r--r--kythe/go/serving/identifiers/identifiers.go9
-rw-r--r--kythe/go/serving/pipeline/nodes/nodes.go40
-rw-r--r--kythe/go/serving/tools/kwazthis/kwazthis.go7
-rw-r--r--kythe/go/serving/tools/kythe/kythe.go33
-rw-r--r--kythe/go/serving/tools/kythefs/kythefs.go18
-rwxr-xr-xkythe/go/serving/tools/testdata/kwazthis_test.sh2
-rw-r--r--kythe/go/serving/xrefs/BUILD3
-rw-r--r--kythe/go/serving/xrefs/assemble/assemble_test.go6
-rw-r--r--kythe/go/serving/xrefs/columnar.go6
-rw-r--r--kythe/go/serving/xrefs/xrefs.go499
-rw-r--r--kythe/go/serving/xrefs/xrefs_filter.go177
-rw-r--r--kythe/go/serving/xrefs/xrefs_test.go603
-rw-r--r--kythe/go/storage/entryset/entryset.go36
-rw-r--r--kythe/go/storage/tools/directory_indexer/directory_indexer.go50
-rw-r--r--kythe/go/storage/tools/triples/triples.go9
-rw-r--r--kythe/go/storage/tools/write_entries/write_entries.go15
-rw-r--r--kythe/go/test/services/graphstore/graphstore.go18
-rw-r--r--kythe/go/test/storage/keyvalue/keyvalue.go24
-rw-r--r--kythe/go/test/testutil/BUILD1
-rw-r--r--kythe/go/test/testutil/testutil.go27
-rw-r--r--kythe/go/test/tools/empty_corpus_checker/empty_corpus_checker.go6
-rw-r--r--kythe/go/test/tools/xrefs_atomizer/xrefs_atomizer.go3
-rw-r--r--kythe/go/util/archive/reader.go8
-rw-r--r--kythe/go/util/compare/BUILD2
-rw-r--r--kythe/go/util/compare/compare.go24
-rw-r--r--kythe/go/util/datasize/datasize.go61
-rw-r--r--kythe/go/util/datasize/datasize_test.go113
-rw-r--r--kythe/go/util/dedup/dedup_test.go2
-rw-r--r--kythe/go/util/flagutil/flagutil.go10
-rw-r--r--kythe/go/util/html/html.go11
-rw-r--r--kythe/go/util/keys/keys.go12
-rw-r--r--kythe/go/util/kytheuri/uri.go23
-rw-r--r--kythe/go/util/markedsource/markedsource_test.go9
-rw-r--r--kythe/go/util/pager/pager_test.go18
-rw-r--r--kythe/go/util/process/process_test.go10
-rw-r--r--kythe/go/util/riegeli/riegeli.go22
-rw-r--r--kythe/go/util/schema/edges/edges.go8
-rw-r--r--kythe/go/util/schema/indexdata.go58
-rw-r--r--kythe/go/util/schema/nodes/nodes.go1
-rwxr-xr-xkythe/go/util/schema/update_data.sh2
-rw-r--r--kythe/go/util/tools/extractschema/extractschema.go2
-rw-r--r--kythe/go/util/tools/vnames/vnames.go9
-rw-r--r--kythe/go/util/tools/write_extra_action/write_extra_action.go3
-rw-r--r--kythe/go/util/vnameutil/rewrite.go20
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/base/EdgeKind.java1
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java2
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/base/KytheEntrySets.java1
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/base/NodeKind.java1
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/AutoValuePlugin.java2
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/BUILD29
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/JavaEntrySets.java16
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/JavaIndexerConfig.java35
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/KytheDocTreeScanner.java7
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/KytheJavacAnalyzer.java11
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/KytheTreeScanner.java110
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/java/TreeContext.java24
-rw-r--r--kythe/java/com/google/devtools/kythe/analyzers/jvm/JvmGraph.java72
-rw-r--r--kythe/java/com/google/devtools/kythe/common/BUILD4
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/java/BUILD10
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/java/JavaCompilationUnitExtractor.java48
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/java/SystemExploder.java24
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/java/bazel/aspect.bzl10
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/java/standalone/BUILD28
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/java/standalone/Javac8Wrapper.java129
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/jvm/JvmExtractor.java22
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/shared/BUILD2
-rw-r--r--kythe/java/com/google/devtools/kythe/extractors/shared/FileVNames.java4
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/BUILD12
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/JavaCompilationDetails.java34
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/BUILD38
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileManager.java122
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileStore.java136
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitPathFileManager.java13
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomFileObject.java136
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomJavaFileObject.java72
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/ForwardingStandardJavaFileManager.java235
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStore.java66
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStoreBasedFileManager.java238
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/java/helpers/BUILD8
-rw-r--r--kythe/java/com/google/devtools/kythe/platform/shared/FileDataCache.java2
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/BUILD6
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/AnnotationComments.java8
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/BUILD15
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Callgraph.java3
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Comments.java141
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DefaultCorpus.java7
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DiamondOperations.java4
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Files.java6
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethod.java2
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethodRef.java4
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Generics.java35
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericsAbs.java151
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/MemberReferences.java4
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Methods.java4
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Scopes.java1
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/SpecialMembers.java2
-rw-r--r--kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Variables.java8
-rw-r--r--kythe/javatests/com/google/devtools/kythe/extractors/java/BUILD1
-rw-r--r--kythe/javatests/com/google/devtools/kythe/extractors/java/JavaExtractorTest.java3
-rw-r--r--kythe/javatests/com/google/devtools/kythe/platform/java/BUILD4
-rw-r--r--kythe/javatests/com/google/devtools/kythe/platform/java/filemanager/BUILD1
-rw-r--r--kythe/javatests/com/google/devtools/kythe/platform/shared/filesystem/CompilationUnitFileSystemTest.java2
-rw-r--r--kythe/proto/analysis.proto13
-rw-r--r--kythe/proto/common.proto25
-rw-r--r--kythe/proto/common_go_proto/common.pb.go288
-rw-r--r--kythe/proto/schema.proto4
-rw-r--r--kythe/proto/schema_go_proto/schema.pb.go555
-rw-r--r--kythe/proto/serving.proto8
-rw-r--r--kythe/proto/serving_go_proto/serving.pb.go530
-rw-r--r--kythe/proto/xref.proto58
-rw-r--r--kythe/proto/xref_go_proto/xref.pb.go1519
-rw-r--r--kythe/release/BUILD4
-rw-r--r--kythe/release/Dockerfile3
-rwxr-xr-x[-rw-r--r--]kythe/release/bazel_rust_extractor_script.sh0
-rw-r--r--kythe/release/cloudbuild/go-builder/Dockerfile2
-rw-r--r--kythe/release/release.BUILD4
-rwxr-xr-xkythe/release/release_test.sh8
-rwxr-xr-xkythe/release/setup_release.sh10
-rw-r--r--kythe/rust/cargo/BUILD.bazel174
-rw-r--r--kythe/rust/cargo/Cargo.lock919
-rw-r--r--kythe/rust/cargo/Cargo.toml63
-rw-r--r--kythe/rust/cargo/crates.bzl912
-rw-r--r--kythe/rust/cargo/remote/BUILD.adler-1.0.2.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.aho-corasick-0.7.18.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.ansi_term-0.11.0.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.anyhow-1.0.43.bazel113
-rw-r--r--kythe/rust/cargo/remote/BUILD.atty-0.2.14.bazel66
-rw-r--r--kythe/rust/cargo/remote/BUILD.autocfg-1.0.1.bazel63
-rw-r--r--kythe/rust/cargo/remote/BUILD.base64-0.13.0.bazel69
-rw-r--r--kythe/rust/cargo/remote/BUILD.bazel0
-rw-r--r--kythe/rust/cargo/remote/BUILD.bitflags-1.3.2.bazel58
-rw-r--r--kythe/rust/cargo/remote/BUILD.block-buffer-0.9.0.bazel54
-rw-r--r--kythe/rust/cargo/remote/BUILD.byteorder-1.4.3.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.bzip2-0.4.3.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.bzip2-sys-0.1.11+1.0.8.bazel87
-rw-r--r--kythe/rust/cargo/remote/BUILD.cc-1.0.70.bazel85
-rw-r--r--kythe/rust/cargo/remote/BUILD.cfg-if-0.1.10.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.cfg-if-1.0.0.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.clap-2.33.3.bazel77
-rw-r--r--kythe/rust/cargo/remote/BUILD.cloudabi-0.0.3.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.colored-2.0.0.bazel65
-rw-r--r--kythe/rust/cargo/remote/BUILD.cpufeatures-0.2.1.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.crc32fast-1.2.1.bazel90
-rw-r--r--kythe/rust/cargo/remote/BUILD.crossbeam-channel-0.5.1.bazel94
-rw-r--r--kythe/rust/cargo/remote/BUILD.crossbeam-deque-0.8.1.bazel68
-rw-r--r--kythe/rust/cargo/remote/BUILD.crossbeam-epoch-0.9.5.bazel104
-rw-r--r--kythe/rust/cargo/remote/BUILD.crossbeam-utils-0.8.5.bazel105
-rw-r--r--kythe/rust/cargo/remote/BUILD.derive-new-0.5.9.bazel60
-rw-r--r--kythe/rust/cargo/remote/BUILD.digest-0.9.0.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.either-1.6.1.bazel53
-rw-r--r--kythe/rust/cargo/remote/BUILD.flate2-1.0.21.bazel115
-rw-r--r--kythe/rust/cargo/remote/BUILD.fst-0.4.7.bazel85
-rw-r--r--kythe/rust/cargo/remote/BUILD.fuchsia-cprng-0.1.1.bazel53
-rw-r--r--kythe/rust/cargo/remote/BUILD.generic-array-0.14.4.bazel97
-rw-r--r--kythe/rust/cargo/remote/BUILD.hermit-abi-0.1.19.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.hex-0.4.3.bazel62
-rw-r--r--kythe/rust/cargo/remote/BUILD.itertools-0.9.0.bazel90
-rw-r--r--kythe/rust/cargo/remote/BUILD.itoa-0.4.8.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.json-0.12.4.bazel69
-rw-r--r--kythe/rust/cargo/remote/BUILD.lazy_static-1.4.0.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.libc-0.2.101.bazel89
-rw-r--r--kythe/rust/cargo/remote/BUILD.lock_api-0.3.4.bazel54
-rw-r--r--kythe/rust/cargo/remote/BUILD.log-0.4.14.bazel90
-rw-r--r--kythe/rust/cargo/remote/BUILD.memchr-2.4.1.bazel87
-rw-r--r--kythe/rust/cargo/remote/BUILD.memoffset-0.6.4.bazel86
-rw-r--r--kythe/rust/cargo/remote/BUILD.miniz_oxide-0.4.4.bazel85
-rw-r--r--kythe/rust/cargo/remote/BUILD.num_cpus-1.13.0.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.opaque-debug-0.3.0.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.parking_lot-0.10.2.bazel58
-rw-r--r--kythe/rust/cargo/remote/BUILD.parking_lot_core-0.7.2.bazel66
-rw-r--r--kythe/rust/cargo/remote/BUILD.pkg-config-0.3.19.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.proc-macro2-1.0.29.bazel98
-rw-r--r--kythe/rust/cargo/remote/BUILD.quick-error-2.0.1.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.quote-1.0.9.bazel60
-rw-r--r--kythe/rust/cargo/remote/BUILD.rand-0.4.6.bazel73
-rw-r--r--kythe/rust/cargo/remote/BUILD.rand_core-0.3.1.bazel54
-rw-r--r--kythe/rust/cargo/remote/BUILD.rand_core-0.4.2.bazel53
-rw-r--r--kythe/rust/cargo/remote/BUILD.rayon-1.5.1.bazel117
-rw-r--r--kythe/rust/cargo/remote/BUILD.rayon-core-1.9.1.bazel119
-rw-r--r--kythe/rust/cargo/remote/BUILD.rdrand-0.4.0.bazel62
-rw-r--r--kythe/rust/cargo/remote/BUILD.redox_syscall-0.1.57.bazel62
-rw-r--r--kythe/rust/cargo/remote/BUILD.regex-1.5.4.bazel103
-rw-r--r--kythe/rust/cargo/remote/BUILD.regex-syntax-0.6.25.bazel64
-rw-r--r--kythe/rust/cargo/remote/BUILD.remove_dir_all-0.5.3.bazel53
-rw-r--r--kythe/rust/cargo/remote/BUILD.rls-analysis-0.18.2.bazel69
-rw-r--r--kythe/rust/cargo/remote/BUILD.rls-data-0.19.1.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.rls-span-0.5.4.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.ryu-1.0.5.bazel101
-rw-r--r--kythe/rust/cargo/remote/BUILD.scopeguard-1.1.0.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.serde-1.0.130.bazel94
-rw-r--r--kythe/rust/cargo/remote/BUILD.serde_derive-1.0.130.bazel88
-rw-r--r--kythe/rust/cargo/remote/BUILD.serde_json-1.0.67.bazel90
-rw-r--r--kythe/rust/cargo/remote/BUILD.serial_test-0.4.0.bazel60
-rw-r--r--kythe/rust/cargo/remote/BUILD.serial_test_derive-0.4.0.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.sha2-0.9.6.bazel80
-rw-r--r--kythe/rust/cargo/remote/BUILD.smallvec-1.6.1.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.strsim-0.8.0.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.syn-1.0.75.bazel158
-rw-r--r--kythe/rust/cargo/remote/BUILD.tempdir-0.3.7.bazel57
-rw-r--r--kythe/rust/cargo/remote/BUILD.textwrap-0.11.0.bazel62
-rw-r--r--kythe/rust/cargo/remote/BUILD.thiserror-1.0.28.bazel78
-rw-r--r--kythe/rust/cargo/remote/BUILD.thiserror-impl-1.0.28.bazel56
-rw-r--r--kythe/rust/cargo/remote/BUILD.time-0.1.44.bazel54
-rw-r--r--kythe/rust/cargo/remote/BUILD.typenum-1.14.0.bazel85
-rw-r--r--kythe/rust/cargo/remote/BUILD.unicode-width-0.1.8.bazel54
-rw-r--r--kythe/rust/cargo/remote/BUILD.unicode-xid-0.2.2.bazel58
-rw-r--r--kythe/rust/cargo/remote/BUILD.vec_map-0.8.2.bazel53
-rw-r--r--kythe/rust/cargo/remote/BUILD.version_check-0.9.3.bazel53
-rw-r--r--kythe/rust/cargo/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel55
-rw-r--r--kythe/rust/cargo/remote/BUILD.winapi-0.3.9.bazel117
-rw-r--r--kythe/rust/cargo/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel83
-rw-r--r--kythe/rust/cargo/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel83
-rw-r--r--kythe/rust/cargo/remote/BUILD.zip-0.5.13.bazel88
-rw-r--r--kythe/rust/examples/hello_world/BUILD6
-rw-r--r--kythe/rust/extractor/BUILD51
-rwxr-xr-xkythe/rust/extractor/extractor_script.sh4
-rw-r--r--kythe/rust/extractor/extractor_test.bzl22
-rw-r--r--kythe/rust/extractor/src/bin/cli.rs6
-rw-r--r--kythe/rust/extractor/src/bin/extractor.rs133
-rw-r--r--kythe/rust/extractor/src/bin/save_analysis.rs2
-rw-r--r--kythe/rust/extractor/src/lib.rs2
-rw-r--r--kythe/rust/extractor/tests/integration_test.rs81
-rw-r--r--kythe/rust/extractor/tests/test.rs6
-rw-r--r--kythe/rust/fuchsia_extractor/BUILD42
-rw-r--r--kythe/rust/indexer/BUILD66
-rw-r--r--kythe/rust/indexer/src/bin/bazel/main.rs94
-rw-r--r--kythe/rust/indexer/src/bin/proxy/main.rs107
-rw-r--r--kythe/rust/indexer/src/indexer/analyzers.rs406
-rw-r--r--kythe/rust/indexer/src/indexer/entries.rs17
-rw-r--r--kythe/rust/indexer/src/indexer/mod.rs48
-rw-r--r--kythe/rust/indexer/src/indexer/save_analysis.rs57
-rw-r--r--kythe/rust/indexer/src/providers.rs2
-rw-r--r--kythe/rust/indexer/testdata/out_dir/generated.rs6
-rw-r--r--kythe/rust/indexer/testdata/out_dir/main.rs6
-rw-r--r--kythe/rust/indexer/testdata/relative/relative_module/mod.rs14
-rw-r--r--kythe/rust/indexer/testdata/relative/src/main.rs8
-rw-r--r--kythe/rust/indexer/testdata/tbuiltin.rs50
-rw-r--r--kythe/rust/indexer/testdata/xrefs/main.rs40
-rw-r--r--kythe/rust/indexer/tests/indexer_entries.rs71
-rw-r--r--kythe/rust/indexer/tests/indexer_save_analysis.rs38
-rw-r--r--kythe/rust/indexer/tests/lib.rs1
-rw-r--r--kythe/rust/indexer/tests/providers.rs9
-rw-r--r--kythe/rust/indexer/tests/testanalysis.json1
-rw-r--r--kythe/testdata/indexers/proto/testdata.proto3
-rw-r--r--kythe/typescript/indexer.ts197
-rw-r--r--kythe/typescript/kythe.ts4
-rw-r--r--kythe/typescript/languageserver/vscode-extension/package-lock.json49
-rw-r--r--kythe/typescript/testdata/class.ts2
-rw-r--r--kythe/typescript/testdata/generic_tvar.ts (renamed from kythe/typescript/testdata/generic.ts)17
-rw-r--r--kythe/typescript/testdata/interface.ts64
-rw-r--r--kythe/typescript/testdata/object.ts3
-rw-r--r--kythe/typescript/testdata/schema.ts2
-rw-r--r--kythe/web/site/Gemfile.lock8
-rw-r--r--maven_install.json900
-rw-r--r--package-lock.json12
-rw-r--r--setup.bzl28
-rw-r--r--third_party/BUILD2
-rw-r--r--third_party/javac/BUILD40
-rw-r--r--third_party/javac/LICENSE347
-rw-r--r--third_party/javac/README.google7
-rw-r--r--third_party/javac/java_compiler-src.jarbin242574 -> 0 bytes
-rw-r--r--third_party/javac/java_compiler.jarbin108409 -> 0 bytes
-rw-r--r--third_party/javac/javac-9+181-r4173-1.jarbin6885456 -> 0 bytes
-rw-r--r--third_party/javac/jdk_compiler-src.jarbin1562935 -> 0 bytes
-rw-r--r--third_party/javac/jdk_compiler.jarbin3158952 -> 0 bytes
-rw-r--r--tools/build_rules/external_tools/external_tools_configure.bzl1
-rw-r--r--tools/build_rules/extraction.bzl38
-rw-r--r--tools/build_rules/verifier_test/BUILD19
-rw-r--r--tools/build_rules/verifier_test/cc_indexer_test.bzl183
-rw-r--r--[-rwxr-xr-x]tools/build_rules/verifier_test/indexer.sh.in (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/cc_wrapper.sh)23
-rw-r--r--tools/build_rules/verifier_test/java_verifier_test.bzl8
-rw-r--r--tools/build_rules/verifier_test/jvm_verifier_test.bzl2
-rw-r--r--tools/build_rules/verifier_test/kzip_archive.bzl2
-rw-r--r--tools/build_rules/verifier_test/rust_indexer_test.bzl76
-rw-r--r--tools/build_rules/verifier_test/verifier_test.bzl82
-rw-r--r--tools/build_rules/verifier_test/verifier_test.sh.in18
-rwxr-xr-xtools/clang_tidy/clang_tidy.sh5
-rwxr-xr-xtools/cpp/generate_compilation_database.sh29
-rw-r--r--tools/cpp/toolchain_utils.bzl8
-rw-r--r--tools/platforms/BUILD2
-rw-r--r--tools/platforms/Dockerfile11
-rw-r--r--tools/platforms/configs/.latest.bazelrc33
-rw-r--r--tools/platforms/configs/BUILD31
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/BUILD150
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/builtin_include_directory_paths14
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_toolchain_config.bzl1272
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_wrapper.sh25
-rw-r--r--tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/config/BUILD44
-rw-r--r--tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/java/BUILD25
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/BUILD150
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/armeabi_cc_toolchain_config.bzl82
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/builtin_include_directory_paths14
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/module.modulemap4757
-rw-r--r--tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/java/BUILD25
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/armeabi_cc_toolchain_config.bzl82
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_toolchain_config.bzl1272
-rwxr-xr-xtools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/module.modulemap4757
-rw-r--r--tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config/BUILD44
-rw-r--r--tools/platforms/configs/empty-versions.bzl14
-rwxr-xr-xtools/platforms/configs/rbe_default/LICENSE202
-rw-r--r--[-rwxr-xr-x]tools/platforms/configs/rbe_default/cc/BUILD (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/BUILD)9
-rw-r--r--tools/platforms/configs/rbe_default/cc/WORKSPACE2
-rw-r--r--[-rwxr-xr-x]tools/platforms/configs/rbe_default/cc/armeabi_cc_toolchain_config.bzl (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/armeabi_cc_toolchain_config.bzl)0
-rw-r--r--[-rwxr-xr-x]tools/platforms/configs/rbe_default/cc/builtin_include_directory_paths (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/builtin_include_directory_paths)3
-rw-r--r--[-rwxr-xr-x]tools/platforms/configs/rbe_default/cc/cc_toolchain_config.bzl (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/cc_toolchain_config.bzl)30
-rw-r--r--[-rwxr-xr-x]tools/platforms/configs/rbe_default/cc/cc_wrapper.sh (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_wrapper.sh)2
-rw-r--r--[-rwxr-xr-x]tools/platforms/configs/rbe_default/cc/module.modulemap (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/module.modulemap)180
-rw-r--r--tools/platforms/configs/rbe_default/cc/tools/cpp/empty.cc1
-rwxr-xr-x[-rw-r--r--]tools/platforms/configs/rbe_default/config/BUILD (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/config/BUILD)14
-rwxr-xr-x[-rw-r--r--]tools/platforms/configs/rbe_default/java/BUILD (renamed from tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/java/BUILD)16
-rwxr-xr-xtools/platforms/configs/rebuild.sh29
-rw-r--r--tools/platforms/configs/versions.bzl16
-rw-r--r--tools/platforms/toolchain_config_suite_spec.bzl26
-rw-r--r--tools/rust/extra_action/BUILD10
-rw-r--r--tools/rust/extra_action/src/main.rs17
-rw-r--r--tools/rust/runfiles/BUILD4
-rw-r--r--tools/rust/runfiles/lib.rs29
-rw-r--r--tools/rust/rustfmt.toml4
-rw-r--r--version.bzl4
613 files changed, 20428 insertions, 27748 deletions
diff --git a/.bazelminversion b/.bazelminversion
index fcdb2e109..0062ac971 100644
--- a/.bazelminversion
+++ b/.bazelminversion
@@ -1 +1 @@
-4.0.0
+5.0.0
diff --git a/.bazelrc b/.bazelrc
index 55499040e..7781c9bcc 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -30,11 +30,11 @@ build --host_copt=-w
# Ensure environment variables are static across machines; allows for cross-user caching.
build --experimental_strict_action_env
-# By default, compile for Java 8, run on Java 11
-build --java_toolchain=@bazel_tools//tools/jdk:toolchain_java8
-build --javabase=@bazel_tools//tools/jdk:remote_jdk11
-build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java8
-build --host_javabase=@bazel_tools//tools/jdk:remote_jdk11
+# By default, compile for Java 11, run on Java 11
+build --java_language_version=11
+build --tool_java_language_version=11
+build --java_runtime_version=remotejdk_11
+build --tool_java_runtime_version=remotejdk_11
# Import default javacopts
import %workspace%/tools/javacopts.bazelrc
@@ -43,13 +43,15 @@ import %workspace%/tools/javacopts.bazelrc
build:release --stamp -c opt --copt=-gmlt
# Use the RBE instance in the kythe-repo project
-build:remote --remote_instance_name=projects/kythe-repo/instances/default_instance --project_id=kythe-repo
+build:remote --remote_instance_name=projects/kythe-repo/instances/default_instance --bes_instance_name=kythe-repo
-build:remote --auth_enabled=true
+build:remote --google_default_credentials=true
build:remote --jobs=50
build:remote --remote_timeout=3600
build:remote --remote_cache=grpcs://remotebuildexecution.googleapis.com
build:remote --remote_executor=grpcs://remotebuildexecution.googleapis.com
+# Avoid fetching unnecessary intermediate files locally.
+build:remote --remote_download_toplevel
# TODO(schroederc): add buildeventservice
# build:remote --bes_backend="buildeventservice.googleapis.com"
@@ -60,18 +62,17 @@ build:remote --remote_executor=grpcs://remotebuildexecution.googleapis.com
# # defined. See https://github.com/bazelbuild/bazel/issues/7480
build:remote --define=EXECUTOR=remote
-build:remote --host_javabase=@rbe_default//java:jdk
-build:remote --javabase=@rbe_default//java:jdk
-build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java8
-build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_java8
+build:remote --java_runtime_version=rbe_jdk
+build:remote --tool_java_runtime_version=rbe_jdk
+build:remote --extra_toolchains=//tools/platforms/configs/rbe_default/java:all
build:remote --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
-build:remote --crosstool_top=@rbe_default//cc:toolchain
-build:remote --extra_toolchains=@rbe_default//config:cc-toolchain
+build:remote --crosstool_top=//tools/platforms/configs/rbe_default/cc:toolchain
+build:remote --extra_toolchains=//tools/platforms/configs/rbe_default/config:cc-toolchain
-build:remote --extra_execution_platforms=@rbe_default//config:platform
-build:remote --host_platform=@rbe_default//config:platform
-build:remote --platforms=@rbe_default//config:platform
+build:remote --extra_execution_platforms=//tools/platforms:rbe
+build:remote --host_platform=//tools/platforms:rbe
+build:remote --platforms=//tools/platforms:rbe
build:remote --repo_env=KYTHE_DO_NOT_DETECT_BAZEL_TOOLCHAINS=1
build:remote --extra_toolchains=//tools/build_rules/lexyacc:lexyacc_remote_toolchain
diff --git a/.bazelversion b/.bazelversion
index 6aba2b245..0062ac971 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-4.2.0
+5.0.0
diff --git a/.gitignore b/.gitignore
index d673acf35..2a27e16e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,12 @@ tools/node
# Ignore Rust build artifacts
kythe/rust/**/target
+rust-project.json
+
+### Added by Hedron's Bazel Compile Commands Extractor: https://github.com/hedronvision/bazel-compile-commands-extractor
+# The external link: Differs on Windows vs macOS/Linux, so we can't check it in. The pattern needs to not have a trailing / because it's a symlink on macOS/Linux.
+/external
+# Compiled output -> don't check in
+/compile_commands.json
+# Directory where clangd puts its indexing work
+/.cache/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ba13c1697..6c350eb98 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -94,4 +94,4 @@ repos:
args: [--config-path, tools/rust/rustfmt.toml]
types: [rust]
exclude: '^(kythe/proto/.*|third_party/.*)'
-exclude: '(.*/testdata/.*)|(third_party/.*)|(tools/platforms/configs/(versions.bzl|default_toolchain_config_spec_name/.*)$)'
+exclude: '(.*/testdata/.*|third_party/.*|tools/platforms/configs/rbe_default/.*)$'
diff --git a/BUILD b/BUILD
index fb266f03a..e5cfc52aa 100644
--- a/BUILD
+++ b/BUILD
@@ -1,6 +1,8 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("//:version.bzl", "MAX_VERSION", "MIN_VERSION")
load("@bazel_gazelle//:def.bzl", "gazelle")
+load("@rules_rust//proto:toolchain.bzl", "rust_proto_toolchain")
+load("@hedron_compile_commands//:refresh_compile_commands.bzl", "refresh_compile_commands")
package(default_visibility = ["//visibility:private"])
@@ -49,3 +51,27 @@ bzl_library(
name = "setup_bzl",
srcs = ["setup.bzl"],
)
+
+# Create a Rust protobuf toolchain with protobuf version 2.8.2
+rust_proto_toolchain(
+ name = "rust_proto_toolchain_impl",
+ edition = "2021",
+ proto_compile_deps = ["@crate_index//:protobuf"],
+ proto_plugin = "@crate_index//:protobuf-codegen__protoc-gen-rust",
+)
+
+toolchain(
+ name = "rust_proto_toolchain",
+ toolchain = ":rust_proto_toolchain_impl",
+ toolchain_type = "@rules_rust//proto:toolchain",
+)
+
+refresh_compile_commands(
+ name = "refresh_compile_commands",
+ # Gathering header compile commands fails due to mismatched clang versions with RBE.
+ exclude_headers = "all",
+ # If clangd is complaining about missing headers (and all that goes along with it),
+ # and you're using remote builds, rebuild with --remote_download_outputs=all
+ # With layering_check enabled, clangd warns about missing dependencies on standard library headers.
+ targets = {"//kythe/cxx/...": "--features=-layering_check"},
+)
diff --git a/kythe/rust/cargo/Cargo.raze.lock b/Cargo.Bazel.lock
index 96b395059..c324dca8d 100644
--- a/kythe/rust/cargo/Cargo.raze.lock
+++ b/Cargo.Bazel.lock
@@ -1,5 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+version = 3
+
[[package]]
name = "adler"
version = "1.0.2"
@@ -17,18 +19,18 @@ dependencies = [
[[package]]
name = "ansi_term"
-version = "0.11.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
dependencies = [
"winapi",
]
[[package]]
name = "anyhow"
-version = "1.0.43"
+version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf"
+checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
[[package]]
name = "atty"
@@ -43,9 +45,9 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "base64"
@@ -61,9 +63,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "block-buffer"
-version = "0.9.0"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
dependencies = [
"generic-array",
]
@@ -75,6 +77,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
+name = "bytes"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+dependencies = [
+ "byteorder",
+ "iovec",
+]
+
+[[package]]
name = "bzip2"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -97,15 +109,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.70"
+version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0"
-
-[[package]]
-name = "cfg-if"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "cfg-if"
@@ -115,9 +121,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
-version = "2.33.3"
+version = "2.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
dependencies = [
"ansi_term",
"atty",
@@ -129,15 +135,6 @@ dependencies = [
]
[[package]]
-name = "cloudabi"
-version = "0.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
-dependencies = [
- "bitflags",
-]
-
-[[package]]
name = "colored"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -150,64 +147,75 @@ dependencies = [
[[package]]
name = "cpufeatures"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469"
+checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
dependencies = [
"libc",
]
[[package]]
name = "crc32fast"
-version = "1.2.1"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
]
[[package]]
name = "crossbeam-channel"
-version = "0.5.1"
+version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.1"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
-version = "0.9.5"
+version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
+checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1"
dependencies = [
- "cfg-if 1.0.0",
+ "autocfg",
+ "cfg-if",
"crossbeam-utils",
- "lazy_static",
"memoffset",
+ "once_cell",
"scopeguard",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.5"
+version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
dependencies = [
- "cfg-if 1.0.0",
- "lazy_static",
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
]
[[package]]
@@ -223,28 +231,54 @@ dependencies = [
[[package]]
name = "digest"
-version = "0.9.0"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
- "generic-array",
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "direct-cargo-bazel-deps"
+version = "0.0.1"
+dependencies = [
+ "anyhow",
+ "base64",
+ "clap",
+ "colored",
+ "glob",
+ "hex",
+ "lazy_static",
+ "path-clean",
+ "protobuf",
+ "protobuf-codegen",
+ "quick-error",
+ "rayon",
+ "regex",
+ "rls-analysis",
+ "rls-data",
+ "serde",
+ "serde_json",
+ "serial_test",
+ "sha2",
+ "tempdir",
+ "zip",
]
[[package]]
name = "either"
-version = "1.6.1"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
[[package]]
name = "flate2"
-version = "1.0.21"
+version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80edafed416a46fb378521624fab1cfa2eb514784fd8921adbe8a8d8321da811"
+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
dependencies = [
- "cfg-if 1.0.0",
"crc32fast",
- "libc",
"miniz_oxide",
]
@@ -262,15 +296,21 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
[[package]]
name = "generic-array"
-version = "0.14.4"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
+checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
dependencies = [
"typenum",
"version_check",
]
[[package]]
+name = "glob"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+
+[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -286,19 +326,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "iovec"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "itertools"
-version = "0.9.0"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
dependencies = [
"either",
]
[[package]]
name = "itoa"
-version = "0.4.8"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
[[package]]
name = "json"
@@ -307,29 +365,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd"
[[package]]
-name = "kythe_rust"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "base64",
- "clap",
- "colored",
- "hex",
- "lazy_static",
- "quick-error",
- "rayon",
- "regex",
- "rls-analysis",
- "rls-data",
- "serde",
- "serde_json",
- "serial_test",
- "sha2",
- "tempdir",
- "zip",
-]
-
-[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -337,87 +372,88 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.101"
+version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "lock_api"
-version = "0.3.4"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
+checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
dependencies = [
+ "autocfg",
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.14"
+version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
]
[[package]]
name = "memchr"
-version = "2.4.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "memoffset"
-version = "0.6.4"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
"autocfg",
]
[[package]]
name = "miniz_oxide"
-version = "0.4.4"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
+checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
dependencies = [
"adler",
- "autocfg",
]
[[package]]
name = "num_cpus"
-version = "1.13.0"
+version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
-name = "opaque-debug"
-version = "0.3.0"
+name = "once_cell"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "parking_lot"
-version = "0.10.2"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
dependencies = [
+ "instant",
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
-version = "0.7.2"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"
+checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
dependencies = [
- "cfg-if 0.1.10",
- "cloudabi",
+ "cfg-if",
+ "instant",
"libc",
"redox_syscall",
"smallvec",
@@ -425,18 +461,66 @@ dependencies = [
]
[[package]]
+name = "path-clean"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd"
+
+[[package]]
name = "pkg-config"
-version = "0.3.19"
+version = "0.3.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
+checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
[[package]]
name = "proc-macro2"
-version = "1.0.29"
+version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d"
+checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b"
dependencies = [
- "unicode-xid",
+ "unicode-ident",
+]
+
+[[package]]
+name = "protobuf"
+version = "2.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70731852eec72c56d11226c8a5f96ad5058a3dab73647ca5f7ee351e464f2571"
+dependencies = [
+ "bytes",
+]
+
+[[package]]
+name = "protobuf-codegen"
+version = "2.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d74b9cbbf2ac9a7169c85a3714ec16c51ee9ec7cfd511549527e9a7df720795"
+dependencies = [
+ "protobuf",
]
[[package]]
@@ -447,9 +531,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quote"
-version = "1.0.9"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
+checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
dependencies = [
"proc-macro2",
]
@@ -462,7 +546,7 @@ checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
dependencies = [
"fuchsia-cprng",
"libc",
- "rand_core 0.3.1",
+ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rdrand",
"winapi",
]
@@ -473,7 +557,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
dependencies = [
- "rand_core 0.4.2",
+ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -484,9 +568,9 @@ checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
[[package]]
name = "rayon"
-version = "1.5.1"
+version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
dependencies = [
"autocfg",
"crossbeam-deque",
@@ -496,14 +580,13 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.9.1"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "lazy_static",
"num_cpus",
]
@@ -513,20 +596,23 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
dependencies = [
- "rand_core 0.3.1",
+ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "redox_syscall"
-version = "0.1.57"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
[[package]]
name = "regex"
-version = "1.5.4"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
@@ -535,9 +621,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.25"
+version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "remove_dir_all"
@@ -550,9 +636,9 @@ dependencies = [
[[package]]
name = "rls-analysis"
-version = "0.18.2"
+version = "0.18.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3f485c06c41fd839ea396dd1491615a1286916ade1e3d3cc0b1e7146f5c424"
+checksum = "85293f293444a5f569dd394024b2af9e91fc6b71d336f35c02bc936a29a5fe7e"
dependencies = [
"derive-new",
"fst",
@@ -585,10 +671,16 @@ dependencies = [
]
[[package]]
+name = "rustversion"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8"
+
+[[package]]
name = "ryu"
-version = "1.0.5"
+version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
[[package]]
name = "scopeguard"
@@ -598,18 +690,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
-version = "1.0.130"
+version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
+checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.130"
+version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
+checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da"
dependencies = [
"proc-macro2",
"quote",
@@ -618,9 +710,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.67"
+version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950"
+checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
dependencies = [
"itoa",
"ryu",
@@ -629,9 +721,9 @@ dependencies = [
[[package]]
name = "serial_test"
-version = "0.4.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fef5f7c7434b2f2c598adc6f9494648a1e41274a75c0ba4056f680ae0c117fd6"
+checksum = "e5bcc41d18f7a1d50525d080fd3e953be87c4f9f1a974f3c21798ca00d54ec15"
dependencies = [
"lazy_static",
"parking_lot",
@@ -640,33 +732,33 @@ dependencies = [
[[package]]
name = "serial_test_derive"
-version = "0.4.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d08338d8024b227c62bd68a12c7c9883f5c66780abaef15c550dc56f46ee6515"
+checksum = "2881bccd7d60fb32dfa3d7b3136385312f8ad75e2674aab2852867a09790cae8"
dependencies = [
+ "proc-macro-error",
"proc-macro2",
"quote",
+ "rustversion",
"syn",
]
[[package]]
name = "sha2"
-version = "0.9.6"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9204c41a1597a8c5af23c82d1c921cb01ec0a4c59e07a9c7306062829a3903f3"
+checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
dependencies = [
- "block-buffer",
- "cfg-if 1.0.0",
+ "cfg-if",
"cpufeatures",
"digest",
- "opaque-debug",
]
[[package]]
name = "smallvec"
-version = "1.6.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
+checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
[[package]]
name = "strsim"
@@ -676,13 +768,13 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "syn"
-version = "1.0.75"
+version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7f58f7e8eaa0009c5fec437aabf511bd9933e4b2d7407bd05273c01a8906ea7"
+checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
@@ -706,18 +798,18 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.28"
+version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "283d5230e63df9608ac7d9691adc1dfb6e701225436eb64d0b9a7f0a5a04f6ec"
+checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.28"
+version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa3884228611f5cd3608e2d409bf7dce832e4eb3135e3f11addbd7e41bd68e71"
+checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
dependencies = [
"proc-macro2",
"quote",
@@ -737,21 +829,21 @@ dependencies = [
[[package]]
name = "typenum"
-version = "1.14.0"
+version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec"
+checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
-name = "unicode-width"
-version = "0.1.8"
+name = "unicode-ident"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
[[package]]
-name = "unicode-xid"
-version = "0.2.2"
+name = "unicode-width"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "vec_map"
@@ -761,9 +853,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "version_check"
-version = "0.9.3"
+version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "wasi"
diff --git a/METADATA b/METADATA
index abec195a1..135ce2628 100644
--- a/METADATA
+++ b/METADATA
@@ -12,6 +12,7 @@ third_party {
type: GIT
value: "https://github.com/kythe/kythe"
}
- version: "v0.0.55"
- last_upgrade_date { year: 2021 month: 12 day: 03 }
+ version: "v0.0.60"
+ last_upgrade_date { year: 2022 month: 11 day: 8 }
+ license_type: NOTICE
}
diff --git a/RELEASES.md b/RELEASES.md
index 08f0f57b6..625a9ccd4 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1,5 +1,145 @@
# Release Notes
+## [v0.0.60] - 2022-08-01
+
+#### Bug Fixes
+
+* **build:** remove use of managed_directories (issue #5287) (#5288) ([8ad0e685](https://github.com/kythe/kythe/commit/8ad0e685616462dbf85472984c99aa5d2ea6de3f))
+* **cxx_indexer:** emit non-implicit refs to explicit template specializations (#5290) ([9f0a3379](https://github.com/kythe/kythe/commit/9f0a33793c624043529cf5c8510c79587423d93f))
+* **java:** rollback recent annotation ref/id changes (#5294) ([77a9a8e6](https://github.com/kythe/kythe/commit/77a9a8e6d3db4d24be19d31632651e44cd49908a))
+* **java_indexer:**
+ * guard against NPE in ImmutableList (#5310) ([74dc8410](https://github.com/kythe/kythe/commit/74dc8410d24586bccb1f7853a8f37019fcba6e46))
+ * assert that annotation invocations aren't refs (#5284) ([4b3e0f44](https://github.com/kythe/kythe/commit/4b3e0f44ac11b908e3299dd24c34ff5dfc00c373))
+* **rust_extractor:** find the analysis file based on crate name (#5306) ([48b4edf3](https://github.com/kythe/kythe/commit/48b4edf36193ffe9f1b8d5263c54e6e2d058f6e4))
+* **rust_indexer:**
+ * set the VName root on emitted Rust anchors (#5329) ([d282719f](https://github.com/kythe/kythe/commit/d282719f5fe1d97ff260964335f59145ed927a3e))
+ * clean relative paths in indexer to match vname paths (#5279) ([0cd64758](https://github.com/kythe/kythe/commit/0cd64758cd54ff567bbe9babf74d4364a02c6859))
+ * set corpus+lang on diagnostic (#5263) ([7274df4c](https://github.com/kythe/kythe/commit/7274df4cc8c09d5cbf0f2c6123cbcd8fa836d5c1))
+* **textproto:** workaround upstream proto path bug (#5307) ([e770a7b0](https://github.com/kythe/kythe/commit/e770a7b03fb44ed5e2a3889aae10c2fbda77f734))
+* **typescript_indexer:**
+ * fix lint issue (#5265) ([56a3e50d](https://github.com/kythe/kythe/commit/56a3e50de0bdaab5892d614f0ba2cd66178b3d59))
+ * don't emit absvar nodes (#5273) ([1e4467b1](https://github.com/kythe/kythe/commit/1e4467b1051820340b90b510a14d68d079b2d64f))
+* **verifier:** include @ in anchor labels and support EVars (#5291) ([992a3e94](https://github.com/kythe/kythe/commit/992a3e946df73948afaba06e384b1d164e27a86f))
+
+#### Features
+
+* **api:** add resolved path filters for xrefs (#5274) ([cdde24e7](https://github.com/kythe/kythe/commit/cdde24e79b7b93670e9f89479942178bd30bfa27))
+* **cxx_indexer:**
+ * record full signatures in a separate file (#5323) ([179c0282](https://github.com/kythe/kythe/commit/179c0282dc82000182cae84dbdcb08650345ad55))
+ * implement directory traversal in indexer VFS (#5325) ([541aa64b](https://github.com/kythe/kythe/commit/541aa64bf3e5831c165a14b2da77e73b629c9f97))
+* **go_indexer:**
+ * add --override_stdlib_corpus flag (#5314) ([5617eb8f](https://github.com/kythe/kythe/commit/5617eb8f211b0ee7f421f299f6c3b041e39c54e8))
+ * optionally put builtins and stdlib items in main corpus (#5124) ([f83f9321](https://github.com/kythe/kythe/commit/f83f9321570d81a95039751278d41c5c198cf918))
+* **java extractor:**
+ * use default value if corpus is ambiguous (#5305) ([40808f97](https://github.com/kythe/kythe/commit/40808f97d474b2e6a609b585974311c4b8d32892))
+ * assign a corpus to compilation units (#5320) ([aa76256b](https://github.com/kythe/kythe/commit/aa76256b6fc2818301074f8225e646481669608c))
+* **java_indexer:**
+ * use ref/id in annotation utterance contexts (#5281) ([584f65e7](https://github.com/kythe/kythe/commit/584f65e74a2bb016add70f609b310c027c78876c))
+ * log error when CU VName has empty corpus (#5303) ([c22d736b](https://github.com/kythe/kythe/commit/c22d736be1693aa43c9e85040fa1bc0d3934b585))
+* **proto:** add a proto field to signify whether a file is protected (#5308) ([d08fbe6b](https://github.com/kythe/kythe/commit/d08fbe6b8af92efcb8639421362c71447e262c68))
+* **rust_indexer:** emit proper xrefs to files generated by dependencies (#5326) ([82a61189](https://github.com/kythe/kythe/commit/82a61189a1af2558a3cec703f3a9a9e003ee7557))
+* **tooling:**
+ * add --workspace_uri to kythe decor cmd (#5313) ([18f24c21](https://github.com/kythe/kythe/commit/18f24c21fb787dfb5de60d94f5934b1cbd26d287))
+ * treat absolute kzips as a set (#5271) ([b5e81531](https://github.com/kythe/kythe/commit/b5e8153151dbe3a2c8a352f10c4a9081f03c375e))
+* **typescript_indexer:**
+ * emit `field` subkind fact for class/interface/ojbect literal properties (#5293) ([3a3c772b](https://github.com/kythe/kythe/commit/3a3c772b4b9dc91692d961980d70943ef91700f9))
+ * use ref/id for destructuring variables (#5292) ([60c0e854](https://github.com/kythe/kythe/commit/60c0e854e860314e9201dd008b53f1d20ad99c60))
+ * emit edges from object literals to corresponding types (#5262) ([c496c5c0](https://github.com/kythe/kythe/commit/c496c5c00177e437e28bb3a75a5ef811d5d55ff7))
+* **verifier:**
+ * allow simplifying graph output data (#5286) ([b6554980](https://github.com/kythe/kythe/commit/b655498061af8866ac2822c8beedfa0a043a6f09))
+ * add a flag to elide nodes not bound as goals (#5269) ([2d4bc69e](https://github.com/kythe/kythe/commit/2d4bc69eaf31016bc86d53e2bd1b48ac7b70adc9))
+
+## [v0.0.59] - 2022-04-18
+
+#### Features
+
+* **api:**
+ * support patching Documentation definitions (#5244) ([fa5b6aa9](https://github.com/kythe/kythe/commit/fa5b6aa9e0e6adbbd5601acf2ba8121c7c0841b8))
+ * support filtering xrefs by their enclosing files (#5242) ([bf5b1ac0](https://github.com/kythe/kythe/commit/bf5b1ac037da8d3edca3739ba664f127d5270a57))
+ * support patching FileDecorations definitions (#5241) ([44cece43](https://github.com/kythe/kythe/commit/44cece4393a4fe1cfd58e0d4786a4f753cb3cbd3))
+ * allow a Workspace to be passed for xrefs patching (#5224) ([38c43a11](https://github.com/kythe/kythe/commit/38c43a11c439250fb2fae5c8a0e0885b0521fbc3))
+* **go_indexer:** populate ReleaseTags/ToolTags with defaults (#5237) ([0ad2c8ae](https://github.com/kythe/kythe/commit/0ad2c8aec9eebe61fe7b64662d69071dd789d736))
+* **java:** bump Java version to 11 (#5223) ([f4af9da3](https://github.com/kythe/kythe/commit/f4af9da356678f80ee453b47c83967afe0638e32))
+* **schema:** add flag nodes (#5243) ([e72c520a](https://github.com/kythe/kythe/commit/e72c520a107c974a0c5d4d48759f1409c1ee3bf4))
+
+#### Bug Fixes
+
+* **cxx_indexer:** remove another source of corpusless nodes (#5247) ([33fb1f0d](https://github.com/kythe/kythe/commit/33fb1f0dc43803ac32915198567330f70dfa198f))
+* **doc:** update description and examples for extends edge kind (#5229) ([be6d3fd4](https://github.com/kythe/kythe/commit/be6d3fd4a37867837519af6259453e9bacc41edf))
+* **extraction:** fix javac9 extractor path (#5234) ([e57ba0a6](https://github.com/kythe/kythe/commit/e57ba0a6000d10d23ed6d6ffb16c5b484699eb58))
+* **go_extractor:** handle top-level source files in modules (#5239) ([888c26d9](https://github.com/kythe/kythe/commit/888c26d9c4d3d98a8c0d4881271437efc5e2ec66))
+* **go_indexer:** fix satisfies check for 1.18beta2 (#5235) ([60bd2fad](https://github.com/kythe/kythe/commit/60bd2fad0ecd8d6b8eb2f4bbb3b8e3117a74ce0e))
+* **java:** emit wildcard generics in default corpus (#5210) ([e8886d54](https://github.com/kythe/kythe/commit/e8886d540bd64b42ea4e29f396eaae7e18dbea2b))
+* **serving:** close MultiFilePatcher when requests exit early (#5245) ([26df4b61](https://github.com/kythe/kythe/commit/26df4b6119d4248b129983a8304a44c0b6250084))
+
+## [v0.0.58] - 2022-02-22
+
+#### Deprecation
+
+* **java:** last release with JDK 8 support
+
+#### Bug Fixes
+
+* **cxx_indexer:**
+ * constructer initializers should be writes (#5220) ([9efa5c92](https://github.com/kythe/kythe/commit/9efa5c92014021c99ede023c912465a1cee6845e))
+ * don't traverse field decls in lambdas (#5215) ([ae62778b](https://github.com/kythe/kythe/commit/ae62778be330a963078c55226f41008c56a01d9b))
+ * use function names, not exps, for semantics (#5213) ([a11bf38f](https://github.com/kythe/kythe/commit/a11bf38fdb72ae0362b042a1917639f7b5ab8e28))
+ * treat calls to inherited constructors like other members (#5198) ([3db22d38](https://github.com/kythe/kythe/commit/3db22d38823f1edb6cec1204448f50c7e086e1bf))
+* **go extractor image:** updates for extracting to a single corpus (#5173) ([8697a6c4](https://github.com/kythe/kythe/commit/8697a6c4b15caf12b59d8e32b9ac0ee4aa9306bc))
+* **go_indexer:**
+ * fix refs to anonymous members across packages (#5195) ([e40b0a0c](https://github.com/kythe/kythe/commit/e40b0a0c1ffa4e8a67199b5e147b097dd5414aca))
+ * ensure generic references work across packages (#5166) ([f2701611](https://github.com/kythe/kythe/commit/f27016111e0a19c6f9628e4b106aa3eff9c0e14e))
+* **java:**
+ * do not emit doc nodes for non-javadoc commits by default (#5191) ([b3b97642](https://github.com/kythe/kythe/commit/b3b976429254d979b739a304f98f0fb5152a180b))
+* **java_indexer:**
+ * use ref/id edges for class references in new expressions (#5211) ([e151c464](https://github.com/kythe/kythe/commit/e151c46460e7991c32dc0fd8bac24326219a8238))
+ * set the corpus path of diagnostics (#5203) ([cf72c6e8](https://github.com/kythe/kythe/commit/cf72c6e8595dee132a02291464744b8d49da91e4))
+ * fix ambiguous variable def position (#5196) ([159055e4](https://github.com/kythe/kythe/commit/159055e43fb1ded7bcf14cb7f3e9fdf098415d70))
+* **proto_indexer:**
+ * actually elide refs for top-level map types (#5219) ([84181c2a](https://github.com/kythe/kythe/commit/84181c2afb926ee4d168caecab0fea97aa4695a7))
+ * elide references to builtins and maps (#5212) ([0501c36b](https://github.com/kythe/kythe/commit/0501c36b8f1bbae2391a7df5b56361bd2d9601a4))
+* **rust_common:**
+ * update Rust toolchain to fix tests on macOS Monterey (#5183) ([86dbcbb8](https://github.com/kythe/kythe/commit/86dbcbb8d765a13476741dc9cfa0479e557f72da))
+ * clippy fixes for new Rust version (#5161) ([d65a6871](https://github.com/kythe/kythe/commit/d65a6871612136cb190c623f67351ff5466540fa))
+ * ensure release rust extractor script is executable (#5155) ([64969a85](https://github.com/kythe/kythe/commit/64969a853711c228b4e3cfc3ce91b84b5bb853d7))
+* **rust_extractor:** set the working_directory (#5200) ([07f4e5e5](https://github.com/kythe/kythe/commit/07f4e5e51239f6c4d3364be8bdc7ce711a9b6879))
+* **rust_indexer:** emit built-in types in the same corpus as the CU (#5202) ([63bc29e3](https://github.com/kythe/kythe/commit/63bc29e3ba35fee7d1004948c043e4123dd905ac))
+* **serving:** do not unnecessarily read indirection pages (#5178) ([4b9c4789](https://github.com/kythe/kythe/commit/4b9c4789d596f659c087dd09028ec7541cbccbf4))
+
+#### Features
+
+* **cxx_indexer:**
+ * handle more proto functions (#5209) ([effb97ae](https://github.com/kythe/kythe/commit/effb97ae9d6ee0f97c36af7ad4c76acac08acb2d))
+ * guess protobuf semantics (#5188) ([7ddc015f](https://github.com/kythe/kythe/commit/7ddc015f56c6f2f827df864580bce9b69e81835b))
+ * support r/w and influence for user-defined operators (#5187) ([c3236f7d](https://github.com/kythe/kythe/commit/c3236f7dc0201f5dfb01fa11a8f0d643785ec59e))
+* **go extractor:** add flag to put deps in default corpus (#5169) ([234f17f6](https://github.com/kythe/kythe/commit/234f17f6fa606f0aa7f8e5e82be71f1ed0cf32fd))
+* **go_indexer:**
+ * add definition links to MarkedSource (#5194) ([86948564](https://github.com/kythe/kythe/commit/86948564a1002b5531a1e4df91939abae32c07c3))
+ * correct instantiated member references (#5163) ([fccf5440](https://github.com/kythe/kythe/commit/fccf54400fe1ce438d8388c38464ccd907cd7484))
+ * add receiver type parameters to MarkedSource (#5160) ([19e1699c](https://github.com/kythe/kythe/commit/19e1699cfd6efa343767b7732128e3bb2e317a6e))
+ * add MarkedSource for function type parameters (#5159) ([9bad9c81](https://github.com/kythe/kythe/commit/9bad9c81e24fb6c33cd7d89c3b8e1d5dcdce22a6))
+ * emit tapps for instantiated Named types (#5158) ([dd574ee5](https://github.com/kythe/kythe/commit/dd574ee523b12d5d16a316d3c7939a8680c0b220))
+ * ensure references are to non-instantiated methods (#5157) ([7dc3b79f](https://github.com/kythe/kythe/commit/7dc3b79fea2a7709b0aac69403157ea60ee294cd))
+ * support satisfies edges for instance types (#5156) ([eed1ece4](https://github.com/kythe/kythe/commit/eed1ece4eb42eddb97def548ed1592b13249c343))
+* **rust_indexer:**
+ * add flag to disable emitting xrefs for stdlib (#5197) ([1aa5b943](https://github.com/kythe/kythe/commit/1aa5b9437c1c3f9fbb9d6d5e742eaee2b0c121f3))
+ * remove need for save-analysis files to be saved to fs (#5193) ([3806d62d](https://github.com/kythe/kythe/commit/3806d62d7cfeab9fa0f06a5c2023dfd356307009))
+* **schema:** include Go generics examples (#5154) ([4b7ae7b2](https://github.com/kythe/kythe/commit/4b7ae7b2fb2213a5fc04ab029314dc43219cc0b3))
+* **serving:** add Hash to FileInfo protos (#5207) ([dd53bcde](https://github.com/kythe/kythe/commit/dd53bcdec65fa35591d8d650e801aa4e9e60ef44))
+* **tooling:** Support filtering of kzips by language. (#5167) ([d3cea029](https://github.com/kythe/kythe/commit/d3cea0294253a6c7e5d6fae7471b09c007a583bf))
+
+## [v0.0.57] - 2021-12-16
+
+#### Bug Fixes
+
+* **java:** Update Flogger dependency to 0.7.3 due to log4j (#5152) ([9a9fb44](https://github.com/kythe/kythe/commit/9a9fb44c710dc3dabf1309840f20790a7325fc83)))
+
+## [v0.0.56] - 2021-12-13
+
+#### Bug Fixes
+
+* **java:** Update Flogger dependency to 0.7.2 due to log4j (#5147) ([ec0359e](https://github.com/kythe/kythe/commit/ec0359e92f253e6e412cb063539eaf4e571ef6a2)))
+
## [v0.0.55] - 2021-10-18
* Fixes an issue with the Bazel Rust extractor
@@ -1215,7 +1355,12 @@ https://github.com/kythe/kythe/compare/v0.0.26...v0.0.27
Initial release
-[Unreleased] https://github.com/kythe/kythe/compare/v0.0.55...HEAD
+[Unreleased] https://github.com/kythe/kythe/compare/v0.0.60...HEAD
+[v0.0.60] https://github.com/kythe/kythe/compare/v0.0.59...v0.0.60
+[v0.0.59] https://github.com/kythe/kythe/compare/v0.0.58...v0.0.59
+[v0.0.58] https://github.com/kythe/kythe/compare/v0.0.57...v0.0.58
+[v0.0.57] https://github.com/kythe/kythe/compare/v0.0.56...v0.0.57
+[v0.0.56] https://github.com/kythe/kythe/compare/v0.0.55...v0.0.56
[v0.0.55] https://github.com/kythe/kythe/compare/v0.0.54...v0.0.55
[v0.0.54] https://github.com/kythe/kythe/compare/v0.0.53...v0.0.54
[v0.0.53] https://github.com/kythe/kythe/compare/v0.0.52...v0.0.53
diff --git a/WORKSPACE b/WORKSPACE
index ea2bca9ba..51a205f35 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1,7 +1,4 @@
-workspace(
- name = "io_kythe",
- managed_directories = {"@npm": ["node_modules"]},
-)
+workspace(name = "io_kythe")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
@@ -11,34 +8,10 @@ load("//:version.bzl", "MAX_VERSION", "MIN_VERSION", "check_version")
# Bazel and our maximum supported version of Bazel.
check_version(MIN_VERSION, MAX_VERSION)
-http_archive(
- name = "bazel_toolchains",
- sha256 = "179ec02f809e86abf56356d8898c8bd74069f1bd7c56044050c2cd3d79d0e024",
- strip_prefix = "bazel-toolchains-4.1.0",
- urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
- "https://github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
- ],
-)
-
load("//:setup.bzl", "kythe_rule_repositories")
kythe_rule_repositories()
-# TODO(schroederc): remove this. This needs to be loaded before loading the
-# go_* rules. Normally, this is done by go_rules_dependencies in external.bzl,
-# but because we want to overload some of those dependencies, we need the go_*
-# rules before go_rules_dependencies. Likewise, we can't precisely control
-# when loads occur within a Starlark file so we now need to load this
-# manually...
-load("@io_bazel_rules_go//go/private:repositories.bzl", "go_name_hack")
-
-maybe(
- go_name_hack,
- name = "io_bazel_rules_go_name_hack",
- is_rules_go = False,
-)
-
# gazelle:repository_macro external.bzl%_go_dependencies
load("//:external.bzl", "kythe_dependencies")
@@ -56,18 +29,9 @@ load("@maven//:compat.bzl", "compat_repositories")
compat_repositories()
-# If the configuration here changes, run tools/platforms/configs/rebuild.sh
-load("@bazel_toolchains//rules:environments.bzl", "clang_env")
-load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
-load("//tools/platforms:toolchain_config_suite_spec.bzl", "DEFAULT_TOOLCHAIN_CONFIG_SUITE_SPEC")
-
-rbe_autoconfig(
- name = "rbe_default",
- env = clang_env(),
- export_configs = True,
- toolchain_config_suite_spec = DEFAULT_TOOLCHAIN_CONFIG_SUITE_SPEC,
- use_legacy_platform_definition = False,
-)
+load("@maven//:defs.bzl", "pinned_maven_install")
+
+pinned_maven_install()
load(
"@bazelruby_rules_ruby//ruby:defs.bzl",
@@ -80,3 +44,92 @@ ruby_bundle(
gemfile = "//kythe/web/site:Gemfile",
gemfile_lock = "//kythe/web/site:Gemfile.lock",
)
+
+load("@rules_rust//crate_universe:defs.bzl", "crate", "crates_repository", "render_config")
+
+# Run `CARGO_BAZEL_REPIN=1 bazel sync --only=crate_index` after updating
+crates_repository(
+ name = "crate_index",
+ cargo_lockfile = "//:Cargo.Bazel.lock",
+ lockfile = "//:cargo-bazel-lock.json",
+ packages = {
+ "anyhow": crate.spec(
+ version = "1.0.58",
+ ),
+ "base64": crate.spec(
+ version = "0.13.0",
+ ),
+ "clap": crate.spec(
+ version = "2.34.0",
+ ),
+ "colored": crate.spec(
+ version = "2.0.0",
+ ),
+ "glob": crate.spec(
+ version = "0.3.0",
+ ),
+ "hex": crate.spec(
+ version = "0.4.3",
+ ),
+ "lazy_static": crate.spec(
+ version = "1.4.0",
+ ),
+ "quick-error": crate.spec(
+ version = "2.0.1",
+ ),
+ "path-clean": crate.spec(
+ version = "0.1.0",
+ ),
+ "rayon": crate.spec(
+ version = "1.5.3",
+ ),
+ "regex": crate.spec(
+ version = "1.5.6",
+ ),
+ "rls-analysis": crate.spec(
+ version = "0.18.3",
+ ),
+ "rls-data": crate.spec(
+ version = "0.19.1",
+ ),
+ "serde": crate.spec(
+ version = "1.0.137",
+ ),
+ "serde_json": crate.spec(
+ version = "1.0.64",
+ ),
+ "sha2": crate.spec(
+ version = "0.10.2",
+ ),
+ "tempdir": crate.spec(
+ version = "0.3.7",
+ ),
+ "zip": crate.spec(
+ version = "0.5.11",
+ ),
+ # Dev dependency for fuchsia extractor
+ "serial_test": crate.spec(
+ version = "0.6.0",
+ ),
+ # Dependencies for our Rust protobuf toolchain
+ "protobuf": crate.spec(
+ features = ["with-bytes"],
+ version = "=2.8.2",
+ ),
+ "protobuf-codegen": crate.spec(
+ version = "=2.8.2",
+ ),
+ },
+ render_config = render_config(
+ default_package_name = "",
+ ),
+)
+
+load("@crate_index//:defs.bzl", "crate_repositories")
+
+crate_repositories()
+
+# Register our Rust protobuf toolchain from the BUILD file
+register_toolchains(
+ ":rust_proto_toolchain",
+)
diff --git a/cargo-bazel-lock.json b/cargo-bazel-lock.json
new file mode 100644
index 000000000..c9951da83
--- /dev/null
+++ b/cargo-bazel-lock.json
@@ -0,0 +1,5470 @@
+{
+ "checksum": "847f1bfc00946a28ade62d7d37bb79cacffe46bf6bb30e73e6b0a82334184e41",
+ "crates": {
+ "adler 1.0.2": {
+ "name": "adler",
+ "version": "1.0.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/adler/1.0.2/download",
+ "sha256": "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "adler",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "adler",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "1.0.2"
+ },
+ "license": "0BSD OR MIT OR Apache-2.0"
+ },
+ "aho-corasick 0.7.18": {
+ "name": "aho-corasick",
+ "version": "0.7.18",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/aho-corasick/0.7.18/download",
+ "sha256": "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "aho_corasick",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "aho_corasick",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "memchr 2.5.0",
+ "target": "memchr"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.7.18"
+ },
+ "license": "Unlicense/MIT"
+ },
+ "ansi_term 0.12.1": {
+ "name": "ansi_term",
+ "version": "0.12.1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/ansi_term/0.12.1/download",
+ "sha256": "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "ansi_term",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "ansi_term",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "cfg(target_os = \"windows\")": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.12.1"
+ },
+ "license": "MIT"
+ },
+ "anyhow 1.0.58": {
+ "name": "anyhow",
+ "version": "1.0.58",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/anyhow/1.0.58/download",
+ "sha256": "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "anyhow",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "anyhow",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "anyhow 1.0.58",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.58"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "atty 0.2.14": {
+ "name": "atty",
+ "version": "0.2.14",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/atty/0.2.14/download",
+ "sha256": "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "atty",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "atty",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "cfg(target_os = \"hermit\")": [
+ {
+ "id": "hermit-abi 0.1.19",
+ "target": "hermit_abi"
+ }
+ ],
+ "cfg(unix)": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "cfg(windows)": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.2.14"
+ },
+ "license": "MIT"
+ },
+ "autocfg 1.1.0": {
+ "name": "autocfg",
+ "version": "1.1.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/autocfg/1.1.0/download",
+ "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "autocfg",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "autocfg",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "1.1.0"
+ },
+ "license": "Apache-2.0 OR MIT"
+ },
+ "base64 0.13.0": {
+ "name": "base64",
+ "version": "0.13.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/base64/0.13.0/download",
+ "sha256": "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "base64",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "base64",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "edition": "2018",
+ "version": "0.13.0"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "bitflags 1.3.2": {
+ "name": "bitflags",
+ "version": "1.3.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/bitflags/1.3.2/download",
+ "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "bitflags",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "bitflags",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "edition": "2018",
+ "version": "1.3.2"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "block-buffer 0.10.2": {
+ "name": "block-buffer",
+ "version": "0.10.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/block-buffer/0.10.2/download",
+ "sha256": "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "block_buffer",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "block_buffer",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "generic-array 0.14.5",
+ "target": "generic_array"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.10.2"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "byteorder 1.4.3": {
+ "name": "byteorder",
+ "version": "1.4.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/byteorder/1.4.3/download",
+ "sha256": "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "byteorder",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "byteorder",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "edition": "2018",
+ "version": "1.4.3"
+ },
+ "license": "Unlicense OR MIT"
+ },
+ "bytes 0.4.12": {
+ "name": "bytes",
+ "version": "0.4.12",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/bytes/0.4.12/download",
+ "sha256": "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "bytes",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "bytes",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "byteorder 1.4.3",
+ "target": "byteorder"
+ },
+ {
+ "id": "iovec 0.1.4",
+ "target": "iovec"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.4.12"
+ },
+ "license": "MIT"
+ },
+ "bzip2 0.4.3": {
+ "name": "bzip2",
+ "version": "0.4.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/bzip2/0.4.3/download",
+ "sha256": "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "bzip2",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "bzip2",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "bzip2-sys 0.1.11+1.0.8",
+ "target": "bzip2_sys"
+ },
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.4.3"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "bzip2-sys 0.1.11+1.0.8": {
+ "name": "bzip2-sys",
+ "version": "0.1.11+1.0.8",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/bzip2-sys/0.1.11+1.0.8/download",
+ "sha256": "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "bzip2_sys",
+ "crate_root": "lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "bzip2_sys",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "bzip2-sys 0.1.11+1.0.8",
+ "target": "build_script_build"
+ },
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.1.11+1.0.8"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cc 1.0.73",
+ "target": "cc"
+ },
+ {
+ "id": "pkg-config 0.3.25",
+ "target": "pkg_config"
+ }
+ ],
+ "selects": {}
+ },
+ "links": "bzip2"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "cc 1.0.73": {
+ "name": "cc",
+ "version": "1.0.73",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/cc/1.0.73/download",
+ "sha256": "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "cc",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "Binary": {
+ "crate_name": "gcc-shim",
+ "crate_root": "src/bin/gcc-shim.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "cc",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.0.73"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "cfg-if 1.0.0": {
+ "name": "cfg-if",
+ "version": "1.0.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download",
+ "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "cfg_if",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "cfg_if",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.0.0"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "clap 2.34.0": {
+ "name": "clap",
+ "version": "2.34.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/clap/2.34.0/download",
+ "sha256": "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "clap",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "clap",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "ansi_term",
+ "atty",
+ "color",
+ "default",
+ "strsim",
+ "suggestions",
+ "vec_map"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "atty 0.2.14",
+ "target": "atty"
+ },
+ {
+ "id": "bitflags 1.3.2",
+ "target": "bitflags"
+ },
+ {
+ "id": "strsim 0.8.0",
+ "target": "strsim"
+ },
+ {
+ "id": "textwrap 0.11.0",
+ "target": "textwrap"
+ },
+ {
+ "id": "unicode-width 0.1.9",
+ "target": "unicode_width"
+ },
+ {
+ "id": "vec_map 0.8.2",
+ "target": "vec_map"
+ }
+ ],
+ "selects": {
+ "cfg(not(windows))": [
+ {
+ "id": "ansi_term 0.12.1",
+ "target": "ansi_term"
+ }
+ ]
+ }
+ },
+ "edition": "2018",
+ "version": "2.34.0"
+ },
+ "license": "MIT"
+ },
+ "colored 2.0.0": {
+ "name": "colored",
+ "version": "2.0.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/colored/2.0.0/download",
+ "sha256": "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "colored",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "colored",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "atty 0.2.14",
+ "target": "atty"
+ },
+ {
+ "id": "lazy_static 1.4.0",
+ "target": "lazy_static"
+ }
+ ],
+ "selects": {
+ "cfg(windows)": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "2.0.0"
+ },
+ "license": "MPL-2.0"
+ },
+ "cpufeatures 0.2.2": {
+ "name": "cpufeatures",
+ "version": "0.2.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/cpufeatures/0.2.2/download",
+ "sha256": "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "cpufeatures",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "cpufeatures",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "aarch64-apple-darwin": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "aarch64-linux-android": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ]
+ }
+ },
+ "edition": "2018",
+ "version": "0.2.2"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "crc32fast 1.3.2": {
+ "name": "crc32fast",
+ "version": "1.3.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/crc32fast/1.3.2/download",
+ "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "crc32fast",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "crc32fast",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "crc32fast 1.3.2",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "1.3.2"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "crossbeam-channel 0.5.6": {
+ "name": "crossbeam-channel",
+ "version": "0.5.6",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/crossbeam-channel/0.5.6/download",
+ "sha256": "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "crossbeam_channel",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "crossbeam_channel",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "crossbeam-utils",
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "crossbeam-utils 0.8.11",
+ "target": "crossbeam_utils"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.5.6"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "crossbeam-deque 0.8.2": {
+ "name": "crossbeam-deque",
+ "version": "0.8.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/crossbeam-deque/0.8.2/download",
+ "sha256": "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "crossbeam_deque",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "crossbeam_deque",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "crossbeam-epoch 0.9.10",
+ "target": "crossbeam_epoch"
+ },
+ {
+ "id": "crossbeam-utils 0.8.11",
+ "target": "crossbeam_utils"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.8.2"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "crossbeam-epoch 0.9.10": {
+ "name": "crossbeam-epoch",
+ "version": "0.9.10",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/crossbeam-epoch/0.9.10/download",
+ "sha256": "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "crossbeam_epoch",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "crossbeam_epoch",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "alloc",
+ "once_cell",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "crossbeam-epoch 0.9.10",
+ "target": "build_script_build"
+ },
+ {
+ "id": "crossbeam-utils 0.8.11",
+ "target": "crossbeam_utils"
+ },
+ {
+ "id": "memoffset 0.6.5",
+ "target": "memoffset"
+ },
+ {
+ "id": "once_cell 1.13.0",
+ "target": "once_cell"
+ },
+ {
+ "id": "scopeguard 1.1.0",
+ "target": "scopeguard"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.9.10"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "autocfg 1.1.0",
+ "target": "autocfg"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "crossbeam-utils 0.8.11": {
+ "name": "crossbeam-utils",
+ "version": "0.8.11",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/crossbeam-utils/0.8.11/download",
+ "sha256": "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "crossbeam_utils",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "crossbeam_utils",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "once_cell",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "crossbeam-utils 0.8.11",
+ "target": "build_script_build"
+ },
+ {
+ "id": "once_cell 1.13.0",
+ "target": "once_cell"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.8.11"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "crypto-common 0.1.6": {
+ "name": "crypto-common",
+ "version": "0.1.6",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/crypto-common/0.1.6/download",
+ "sha256": "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "crypto_common",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "crypto_common",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "generic-array 0.14.5",
+ "target": "generic_array"
+ },
+ {
+ "id": "typenum 1.15.0",
+ "target": "typenum"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.1.6"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "derive-new 0.5.9": {
+ "name": "derive-new",
+ "version": "0.5.9",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/derive-new/0.5.9/download",
+ "sha256": "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535"
+ }
+ },
+ "targets": [
+ {
+ "ProcMacro": {
+ "crate_name": "derive_new",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "derive_new",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ },
+ {
+ "id": "syn 1.0.98",
+ "target": "syn"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.5.9"
+ },
+ "license": "MIT"
+ },
+ "digest 0.10.3": {
+ "name": "digest",
+ "version": "0.10.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/digest/0.10.3/download",
+ "sha256": "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "digest",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "digest",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "alloc",
+ "block-buffer",
+ "core-api",
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "block-buffer 0.10.2",
+ "target": "block_buffer"
+ },
+ {
+ "id": "crypto-common 0.1.6",
+ "target": "crypto_common"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.10.3"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "direct-cargo-bazel-deps 0.0.1": {
+ "name": "direct-cargo-bazel-deps",
+ "version": "0.0.1",
+ "repository": null,
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "direct_cargo_bazel_deps",
+ "crate_root": ".direct_cargo_bazel_deps.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "direct_cargo_bazel_deps",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "anyhow 1.0.58",
+ "target": "anyhow"
+ },
+ {
+ "id": "base64 0.13.0",
+ "target": "base64"
+ },
+ {
+ "id": "clap 2.34.0",
+ "target": "clap"
+ },
+ {
+ "id": "colored 2.0.0",
+ "target": "colored"
+ },
+ {
+ "id": "glob 0.3.0",
+ "target": "glob"
+ },
+ {
+ "id": "hex 0.4.3",
+ "target": "hex"
+ },
+ {
+ "id": "lazy_static 1.4.0",
+ "target": "lazy_static"
+ },
+ {
+ "id": "path-clean 0.1.0",
+ "target": "path_clean"
+ },
+ {
+ "id": "protobuf 2.8.2",
+ "target": "protobuf"
+ },
+ {
+ "id": "protobuf-codegen 2.8.2",
+ "target": "protobuf_codegen"
+ },
+ {
+ "id": "quick-error 2.0.1",
+ "target": "quick_error"
+ },
+ {
+ "id": "rayon 1.5.3",
+ "target": "rayon"
+ },
+ {
+ "id": "regex 1.6.0",
+ "target": "regex"
+ },
+ {
+ "id": "rls-analysis 0.18.3",
+ "target": "rls_analysis"
+ },
+ {
+ "id": "rls-data 0.19.1",
+ "target": "rls_data"
+ },
+ {
+ "id": "serde 1.0.140",
+ "target": "serde"
+ },
+ {
+ "id": "serde_json 1.0.82",
+ "target": "serde_json"
+ },
+ {
+ "id": "serial_test 0.6.0",
+ "target": "serial_test"
+ },
+ {
+ "id": "sha2 0.10.2",
+ "target": "sha2"
+ },
+ {
+ "id": "tempdir 0.3.7",
+ "target": "tempdir"
+ },
+ {
+ "id": "zip 0.5.13",
+ "target": "zip"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.0.1"
+ },
+ "license": null
+ },
+ "either 1.7.0": {
+ "name": "either",
+ "version": "1.7.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/either/1.7.0/download",
+ "sha256": "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "either",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "either",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.7.0"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "flate2 1.0.24": {
+ "name": "flate2",
+ "version": "1.0.24",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/flate2/1.0.24/download",
+ "sha256": "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "flate2",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "flate2",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "miniz_oxide",
+ "rust_backend"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "crc32fast 1.3.2",
+ "target": "crc32fast"
+ },
+ {
+ "id": "miniz_oxide 0.5.3",
+ "target": "miniz_oxide"
+ }
+ ],
+ "selects": {
+ "cfg(all(target_arch = \"wasm32\", not(target_os = \"emscripten\")))": [
+ {
+ "id": "miniz_oxide 0.5.3",
+ "target": "miniz_oxide"
+ }
+ ]
+ }
+ },
+ "edition": "2018",
+ "version": "1.0.24"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "fst 0.4.7": {
+ "name": "fst",
+ "version": "0.4.7",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/fst/0.4.7/download",
+ "sha256": "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "fst",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "fst",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "fst 0.4.7",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.4.7"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "Unlicense/MIT"
+ },
+ "fuchsia-cprng 0.1.1": {
+ "name": "fuchsia-cprng",
+ "version": "0.1.1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/fuchsia-cprng/0.1.1/download",
+ "sha256": "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "fuchsia_cprng",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "fuchsia_cprng",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "0.1.1"
+ },
+ "license": null
+ },
+ "generic-array 0.14.5": {
+ "name": "generic-array",
+ "version": "0.14.5",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/generic-array/0.14.5/download",
+ "sha256": "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "generic_array",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "generic_array",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "more_lengths"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "generic-array 0.14.5",
+ "target": "build_script_build"
+ },
+ {
+ "id": "typenum 1.15.0",
+ "target": "typenum"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.14.5"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "version_check 0.9.4",
+ "target": "version_check"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT"
+ },
+ "glob 0.3.0": {
+ "name": "glob",
+ "version": "0.3.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/glob/0.3.0/download",
+ "sha256": "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "glob",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "glob",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.3.0"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "hermit-abi 0.1.19": {
+ "name": "hermit-abi",
+ "version": "0.1.19",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download",
+ "sha256": "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "hermit_abi",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "hermit_abi",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.1.19"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "hex 0.4.3": {
+ "name": "hex",
+ "version": "0.4.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/hex/0.4.3/download",
+ "sha256": "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "hex",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "hex",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "alloc",
+ "default",
+ "std"
+ ],
+ "edition": "2018",
+ "version": "0.4.3"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "instant 0.1.12": {
+ "name": "instant",
+ "version": "0.1.12",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/instant/0.1.12/download",
+ "sha256": "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "instant",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "instant",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.1.12"
+ },
+ "license": "BSD-3-Clause"
+ },
+ "iovec 0.1.4": {
+ "name": "iovec",
+ "version": "0.1.4",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/iovec/0.1.4/download",
+ "sha256": "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "iovec",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "iovec",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "cfg(unix)": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.1.4"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "itertools 0.10.3": {
+ "name": "itertools",
+ "version": "0.10.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/itertools/0.10.3/download",
+ "sha256": "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "itertools",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "itertools",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "use_alloc",
+ "use_std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "either 1.7.0",
+ "target": "either"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.10.3"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "itoa 1.0.2": {
+ "name": "itoa",
+ "version": "1.0.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/itoa/1.0.2/download",
+ "sha256": "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "itoa",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "itoa",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.0.2"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "json 0.12.4": {
+ "name": "json",
+ "version": "0.12.4",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/json/0.12.4/download",
+ "sha256": "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "json",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "json",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "0.12.4"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "lazy_static 1.4.0": {
+ "name": "lazy_static",
+ "version": "1.4.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/lazy_static/1.4.0/download",
+ "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "lazy_static",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "lazy_static",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "1.4.0"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "libc 0.2.126": {
+ "name": "libc",
+ "version": "0.2.126",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/libc/0.2.126/download",
+ "sha256": "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "libc",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "libc",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "libc 0.2.126",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.2.126"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "lock_api 0.4.7": {
+ "name": "lock_api",
+ "version": "0.4.7",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/lock_api/0.4.7/download",
+ "sha256": "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "lock_api",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "lock_api",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "lock_api 0.4.7",
+ "target": "build_script_build"
+ },
+ {
+ "id": "scopeguard 1.1.0",
+ "target": "scopeguard"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.4.7"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "autocfg 1.1.0",
+ "target": "autocfg"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "log 0.4.17": {
+ "name": "log",
+ "version": "0.4.17",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/log/0.4.17/download",
+ "sha256": "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "log",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "log",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "log 0.4.17",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.4.17"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "memchr 2.5.0": {
+ "name": "memchr",
+ "version": "2.5.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/memchr/2.5.0/download",
+ "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "memchr",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "memchr",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "memchr 2.5.0",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "2.5.0"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "Unlicense/MIT"
+ },
+ "memoffset 0.6.5": {
+ "name": "memoffset",
+ "version": "0.6.5",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/memoffset/0.6.5/download",
+ "sha256": "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "memoffset",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "memoffset",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "memoffset 0.6.5",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.6.5"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "autocfg 1.1.0",
+ "target": "autocfg"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT"
+ },
+ "miniz_oxide 0.5.3": {
+ "name": "miniz_oxide",
+ "version": "0.5.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/miniz_oxide/0.5.3/download",
+ "sha256": "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "miniz_oxide",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "miniz_oxide",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "adler 1.0.2",
+ "target": "adler"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.5.3"
+ },
+ "license": "MIT OR Zlib OR Apache-2.0"
+ },
+ "num_cpus 1.13.1": {
+ "name": "num_cpus",
+ "version": "1.13.1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/num_cpus/1.13.1/download",
+ "sha256": "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "num_cpus",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "num_cpus",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "cfg(all(any(target_arch = \"x86_64\", target_arch = \"aarch64\"), target_os = \"hermit\"))": [
+ {
+ "id": "hermit-abi 0.1.19",
+ "target": "hermit_abi"
+ }
+ ],
+ "cfg(not(windows))": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "1.13.1"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "once_cell 1.13.0": {
+ "name": "once_cell",
+ "version": "1.13.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/once_cell/1.13.0/download",
+ "sha256": "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "once_cell",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "once_cell",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "alloc",
+ "default",
+ "race",
+ "std"
+ ],
+ "edition": "2018",
+ "version": "1.13.0"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "parking_lot 0.11.2": {
+ "name": "parking_lot",
+ "version": "0.11.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/parking_lot/0.11.2/download",
+ "sha256": "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "parking_lot",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "parking_lot",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "instant 0.1.12",
+ "target": "instant"
+ },
+ {
+ "id": "lock_api 0.4.7",
+ "target": "lock_api"
+ },
+ {
+ "id": "parking_lot_core 0.8.5",
+ "target": "parking_lot_core"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.11.2"
+ },
+ "license": "Apache-2.0/MIT"
+ },
+ "parking_lot_core 0.8.5": {
+ "name": "parking_lot_core",
+ "version": "0.8.5",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/parking_lot_core/0.8.5/download",
+ "sha256": "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "parking_lot_core",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "parking_lot_core",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "instant 0.1.12",
+ "target": "instant"
+ },
+ {
+ "id": "parking_lot_core 0.8.5",
+ "target": "build_script_build"
+ },
+ {
+ "id": "smallvec 1.9.0",
+ "target": "smallvec"
+ }
+ ],
+ "selects": {
+ "cfg(target_os = \"redox\")": [
+ {
+ "id": "redox_syscall 0.2.16",
+ "target": "syscall"
+ }
+ ],
+ "cfg(unix)": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "cfg(windows)": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2018",
+ "version": "0.8.5"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "Apache-2.0/MIT"
+ },
+ "path-clean 0.1.0": {
+ "name": "path-clean",
+ "version": "0.1.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/path-clean/0.1.0/download",
+ "sha256": "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "path_clean",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "path_clean",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.1.0"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "pkg-config 0.3.25": {
+ "name": "pkg-config",
+ "version": "0.3.25",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/pkg-config/0.3.25/download",
+ "sha256": "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "pkg_config",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "pkg_config",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.3.25"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "proc-macro-error 1.0.4": {
+ "name": "proc-macro-error",
+ "version": "1.0.4",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/proc-macro-error/1.0.4/download",
+ "sha256": "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "proc_macro_error",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "proc_macro_error",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "syn",
+ "syn-error"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro-error 1.0.4",
+ "target": "build_script_build"
+ },
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ },
+ {
+ "id": "syn 1.0.98",
+ "target": "syn"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "proc_macro_deps": {
+ "common": [
+ {
+ "id": "proc-macro-error-attr 1.0.4",
+ "target": "proc_macro_error_attr"
+ }
+ ],
+ "selects": {}
+ },
+ "version": "1.0.4"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "version_check 0.9.4",
+ "target": "version_check"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "proc-macro-error-attr 1.0.4": {
+ "name": "proc-macro-error-attr",
+ "version": "1.0.4",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4/download",
+ "sha256": "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+ }
+ },
+ "targets": [
+ {
+ "ProcMacro": {
+ "crate_name": "proc_macro_error_attr",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "proc_macro_error_attr",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro-error-attr 1.0.4",
+ "target": "build_script_build"
+ },
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.4"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "version_check 0.9.4",
+ "target": "version_check"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "proc-macro2 1.0.42": {
+ "name": "proc-macro2",
+ "version": "1.0.42",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.42/download",
+ "sha256": "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "proc_macro2",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "proc_macro2",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "proc-macro"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "build_script_build"
+ },
+ {
+ "id": "unicode-ident 1.0.2",
+ "target": "unicode_ident"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.42"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "protobuf 2.8.2": {
+ "name": "protobuf",
+ "version": "2.8.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/protobuf/2.8.2/download",
+ "sha256": "70731852eec72c56d11226c8a5f96ad5058a3dab73647ca5f7ee351e464f2571"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "protobuf",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "protobuf",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "bytes",
+ "with-bytes"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "bytes 0.4.12",
+ "target": "bytes"
+ },
+ {
+ "id": "protobuf 2.8.2",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "2.8.2"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT"
+ },
+ "protobuf-codegen 2.8.2": {
+ "name": "protobuf-codegen",
+ "version": "2.8.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/protobuf-codegen/2.8.2/download",
+ "sha256": "3d74b9cbbf2ac9a7169c85a3714ec16c51ee9ec7cfd511549527e9a7df720795"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "protobuf_codegen",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "Binary": {
+ "crate_name": "protoc-gen-rust",
+ "crate_root": "src/bin/protoc-gen-rust.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "Binary": {
+ "crate_name": "protobuf-bin-gen-rust-do-not-use",
+ "crate_root": "src/bin/protobuf-bin-gen-rust-do-not-use.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "protobuf_codegen",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "protobuf 2.8.2",
+ "target": "protobuf"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "2.8.2"
+ },
+ "license": "MIT"
+ },
+ "quick-error 2.0.1": {
+ "name": "quick-error",
+ "version": "2.0.1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/quick-error/2.0.1/download",
+ "sha256": "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "quick_error",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "quick_error",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "2.0.1"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "quote 1.0.20": {
+ "name": "quote",
+ "version": "1.0.20",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/quote/1.0.20/download",
+ "sha256": "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "quote",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "quote",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "proc-macro"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.20"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "rand 0.4.6": {
+ "name": "rand",
+ "version": "0.4.6",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rand/0.4.6/download",
+ "sha256": "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rand",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rand",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "libc",
+ "std"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "cfg(target_env = \"sgx\")": [
+ {
+ "id": "rand_core 0.3.1",
+ "target": "rand_core"
+ },
+ {
+ "id": "rdrand 0.4.0",
+ "target": "rdrand"
+ }
+ ],
+ "cfg(target_os = \"fuchsia\")": [
+ {
+ "id": "fuchsia-cprng 0.1.1",
+ "target": "fuchsia_cprng"
+ }
+ ],
+ "cfg(unix)": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "cfg(windows)": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.4.6"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "rand_core 0.3.1": {
+ "name": "rand_core",
+ "version": "0.3.1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rand_core/0.3.1/download",
+ "sha256": "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rand_core",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rand_core",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "rand_core 0.4.2",
+ "target": "rand_core"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.3.1"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "rand_core 0.4.2": {
+ "name": "rand_core",
+ "version": "0.4.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rand_core/0.4.2/download",
+ "sha256": "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rand_core",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rand_core",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.4.2"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "rayon 1.5.3": {
+ "name": "rayon",
+ "version": "1.5.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rayon/1.5.3/download",
+ "sha256": "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rayon",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rayon",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "crossbeam-deque 0.8.2",
+ "target": "crossbeam_deque"
+ },
+ {
+ "id": "either 1.7.0",
+ "target": "either"
+ },
+ {
+ "id": "rayon 1.5.3",
+ "target": "build_script_build"
+ },
+ {
+ "id": "rayon-core 1.9.3",
+ "target": "rayon_core"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.5.3"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "autocfg 1.1.0",
+ "target": "autocfg"
+ }
+ ],
+ "selects": {}
+ }
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "rayon-core 1.9.3": {
+ "name": "rayon-core",
+ "version": "1.9.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rayon-core/1.9.3/download",
+ "sha256": "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rayon_core",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rayon_core",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "crossbeam-channel 0.5.6",
+ "target": "crossbeam_channel"
+ },
+ {
+ "id": "crossbeam-deque 0.8.2",
+ "target": "crossbeam_deque"
+ },
+ {
+ "id": "crossbeam-utils 0.8.11",
+ "target": "crossbeam_utils"
+ },
+ {
+ "id": "num_cpus 1.13.1",
+ "target": "num_cpus"
+ },
+ {
+ "id": "rayon-core 1.9.3",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.9.3"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ],
+ "links": "rayon-core"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "rdrand 0.4.0": {
+ "name": "rdrand",
+ "version": "0.4.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rdrand/0.4.0/download",
+ "sha256": "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rdrand",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rdrand",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "rand_core 0.3.1",
+ "target": "rand_core"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.4.0"
+ },
+ "license": "ISC"
+ },
+ "redox_syscall 0.2.16": {
+ "name": "redox_syscall",
+ "version": "0.2.16",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/redox_syscall/0.2.16/download",
+ "sha256": "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "syscall",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "syscall",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "bitflags 1.3.2",
+ "target": "bitflags"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.2.16"
+ },
+ "license": "MIT"
+ },
+ "regex 1.6.0": {
+ "name": "regex",
+ "version": "1.6.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/regex/1.6.0/download",
+ "sha256": "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "regex",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "regex",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "aho-corasick",
+ "default",
+ "memchr",
+ "perf",
+ "perf-cache",
+ "perf-dfa",
+ "perf-inline",
+ "perf-literal",
+ "std",
+ "unicode",
+ "unicode-age",
+ "unicode-bool",
+ "unicode-case",
+ "unicode-gencat",
+ "unicode-perl",
+ "unicode-script",
+ "unicode-segment"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "aho-corasick 0.7.18",
+ "target": "aho_corasick"
+ },
+ {
+ "id": "memchr 2.5.0",
+ "target": "memchr"
+ },
+ {
+ "id": "regex-syntax 0.6.27",
+ "target": "regex_syntax"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.6.0"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "regex-syntax 0.6.27": {
+ "name": "regex-syntax",
+ "version": "0.6.27",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/regex-syntax/0.6.27/download",
+ "sha256": "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "regex_syntax",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "regex_syntax",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "unicode",
+ "unicode-age",
+ "unicode-bool",
+ "unicode-case",
+ "unicode-gencat",
+ "unicode-perl",
+ "unicode-script",
+ "unicode-segment"
+ ],
+ "edition": "2018",
+ "version": "0.6.27"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "remove_dir_all 0.5.3": {
+ "name": "remove_dir_all",
+ "version": "0.5.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/remove_dir_all/0.5.3/download",
+ "sha256": "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "remove_dir_all",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "remove_dir_all",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [],
+ "selects": {
+ "cfg(windows)": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.5.3"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "rls-analysis 0.18.3": {
+ "name": "rls-analysis",
+ "version": "0.18.3",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rls-analysis/0.18.3/download",
+ "sha256": "85293f293444a5f569dd394024b2af9e91fc6b71d336f35c02bc936a29a5fe7e"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rls_analysis",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rls_analysis",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "fst 0.4.7",
+ "target": "fst"
+ },
+ {
+ "id": "itertools 0.10.3",
+ "target": "itertools"
+ },
+ {
+ "id": "json 0.12.4",
+ "target": "json"
+ },
+ {
+ "id": "log 0.4.17",
+ "target": "log"
+ },
+ {
+ "id": "rls-data 0.19.1",
+ "target": "rls_data"
+ },
+ {
+ "id": "rls-span 0.5.4",
+ "target": "rls_span"
+ },
+ {
+ "id": "serde 1.0.140",
+ "target": "serde"
+ },
+ {
+ "id": "serde_json 1.0.82",
+ "target": "serde_json"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "proc_macro_deps": {
+ "common": [
+ {
+ "id": "derive-new 0.5.9",
+ "target": "derive_new"
+ }
+ ],
+ "selects": {}
+ },
+ "version": "0.18.3"
+ },
+ "license": "Apache-2.0/MIT"
+ },
+ "rls-data 0.19.1": {
+ "name": "rls-data",
+ "version": "0.19.1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rls-data/0.19.1/download",
+ "sha256": "a58135eb039f3a3279a33779192f0ee78b56f57ae636e25cec83530e41debb99"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rls_data",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rls_data",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "derive"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "rls-span 0.5.4",
+ "target": "rls_span"
+ },
+ {
+ "id": "serde 1.0.140",
+ "target": "serde"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.19.1"
+ },
+ "license": "Apache-2.0/MIT"
+ },
+ "rls-span 0.5.4": {
+ "name": "rls-span",
+ "version": "0.5.4",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rls-span/0.5.4/download",
+ "sha256": "b6e80f614ad4b37910bfe9b029af19c6f92612bb8e1af66e37d35829bf4ef6d1"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "rls_span",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rls_span",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "derive"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "serde 1.0.140",
+ "target": "serde"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.5.4"
+ },
+ "license": "Apache-2.0/MIT"
+ },
+ "rustversion 1.0.8": {
+ "name": "rustversion",
+ "version": "1.0.8",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/rustversion/1.0.8/download",
+ "sha256": "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8"
+ }
+ },
+ "targets": [
+ {
+ "ProcMacro": {
+ "crate_name": "rustversion",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build/build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "rustversion",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "rustversion 1.0.8",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.8"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "ryu 1.0.10": {
+ "name": "ryu",
+ "version": "1.0.10",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/ryu/1.0.10/download",
+ "sha256": "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "ryu",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "ryu",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.0.10"
+ },
+ "license": "Apache-2.0 OR BSL-1.0"
+ },
+ "scopeguard 1.1.0": {
+ "name": "scopeguard",
+ "version": "1.1.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/scopeguard/1.1.0/download",
+ "sha256": "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "scopeguard",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "scopeguard",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "1.1.0"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "serde 1.0.140": {
+ "name": "serde",
+ "version": "1.0.140",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/serde/1.0.140/download",
+ "sha256": "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "serde",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "serde",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "derive",
+ "serde_derive",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "serde 1.0.140",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "proc_macro_deps": {
+ "common": [
+ {
+ "id": "serde_derive 1.0.140",
+ "target": "serde_derive"
+ }
+ ],
+ "selects": {}
+ },
+ "version": "1.0.140"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "serde_derive 1.0.140": {
+ "name": "serde_derive",
+ "version": "1.0.140",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/serde_derive/1.0.140/download",
+ "sha256": "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da"
+ }
+ },
+ "targets": [
+ {
+ "ProcMacro": {
+ "crate_name": "serde_derive",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "serde_derive",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ },
+ {
+ "id": "serde_derive 1.0.140",
+ "target": "build_script_build"
+ },
+ {
+ "id": "syn 1.0.98",
+ "target": "syn"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "1.0.140"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "serde_json 1.0.82": {
+ "name": "serde_json",
+ "version": "1.0.82",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/serde_json/1.0.82/download",
+ "sha256": "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "serde_json",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "serde_json",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "itoa 1.0.2",
+ "target": "itoa"
+ },
+ {
+ "id": "ryu 1.0.10",
+ "target": "ryu"
+ },
+ {
+ "id": "serde 1.0.140",
+ "target": "serde"
+ },
+ {
+ "id": "serde_json 1.0.82",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.82"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "serial_test 0.6.0": {
+ "name": "serial_test",
+ "version": "0.6.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/serial_test/0.6.0/download",
+ "sha256": "e5bcc41d18f7a1d50525d080fd3e953be87c4f9f1a974f3c21798ca00d54ec15"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "serial_test",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "serial_test",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "lazy_static 1.4.0",
+ "target": "lazy_static"
+ },
+ {
+ "id": "parking_lot 0.11.2",
+ "target": "parking_lot"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "proc_macro_deps": {
+ "common": [
+ {
+ "id": "serial_test_derive 0.6.0",
+ "target": "serial_test_derive"
+ }
+ ],
+ "selects": {}
+ },
+ "version": "0.6.0"
+ },
+ "license": "MIT"
+ },
+ "serial_test_derive 0.6.0": {
+ "name": "serial_test_derive",
+ "version": "0.6.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/serial_test_derive/0.6.0/download",
+ "sha256": "2881bccd7d60fb32dfa3d7b3136385312f8ad75e2674aab2852867a09790cae8"
+ }
+ },
+ "targets": [
+ {
+ "ProcMacro": {
+ "crate_name": "serial_test_derive",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "serial_test_derive",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro-error 1.0.4",
+ "target": "proc_macro_error"
+ },
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ },
+ {
+ "id": "syn 1.0.98",
+ "target": "syn"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "proc_macro_deps": {
+ "common": [
+ {
+ "id": "rustversion 1.0.8",
+ "target": "rustversion"
+ }
+ ],
+ "selects": {}
+ },
+ "version": "0.6.0"
+ },
+ "license": "MIT"
+ },
+ "sha2 0.10.2": {
+ "name": "sha2",
+ "version": "0.10.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/sha2/0.10.2/download",
+ "sha256": "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "sha2",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "sha2",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "cfg-if 1.0.0",
+ "target": "cfg_if"
+ },
+ {
+ "id": "digest 0.10.3",
+ "target": "digest"
+ }
+ ],
+ "selects": {
+ "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))": [
+ {
+ "id": "cpufeatures 0.2.2",
+ "target": "cpufeatures"
+ }
+ ]
+ }
+ },
+ "edition": "2018",
+ "version": "0.10.2"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "smallvec 1.9.0": {
+ "name": "smallvec",
+ "version": "1.9.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/smallvec/1.9.0/download",
+ "sha256": "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "smallvec",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "smallvec",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.9.0"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "strsim 0.8.0": {
+ "name": "strsim",
+ "version": "0.8.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/strsim/0.8.0/download",
+ "sha256": "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "strsim",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "strsim",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.8.0"
+ },
+ "license": "MIT"
+ },
+ "syn 1.0.98": {
+ "name": "syn",
+ "version": "1.0.98",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/syn/1.0.98/download",
+ "sha256": "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "syn",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "syn",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "clone-impls",
+ "default",
+ "derive",
+ "full",
+ "parsing",
+ "printing",
+ "proc-macro",
+ "quote"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ },
+ {
+ "id": "syn 1.0.98",
+ "target": "build_script_build"
+ },
+ {
+ "id": "unicode-ident 1.0.2",
+ "target": "unicode_ident"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.98"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "tempdir 0.3.7": {
+ "name": "tempdir",
+ "version": "0.3.7",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/tempdir/0.3.7/download",
+ "sha256": "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "tempdir",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "tempdir",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "rand 0.4.6",
+ "target": "rand"
+ },
+ {
+ "id": "remove_dir_all 0.5.3",
+ "target": "remove_dir_all"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.3.7"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "textwrap 0.11.0": {
+ "name": "textwrap",
+ "version": "0.11.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/textwrap/0.11.0/download",
+ "sha256": "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "textwrap",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "textwrap",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "unicode-width 0.1.9",
+ "target": "unicode_width"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.11.0"
+ },
+ "license": "MIT"
+ },
+ "thiserror 1.0.31": {
+ "name": "thiserror",
+ "version": "1.0.31",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/thiserror/1.0.31/download",
+ "sha256": "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "thiserror",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "thiserror",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "proc_macro_deps": {
+ "common": [
+ {
+ "id": "thiserror-impl 1.0.31",
+ "target": "thiserror_impl"
+ }
+ ],
+ "selects": {}
+ },
+ "version": "1.0.31"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "thiserror-impl 1.0.31": {
+ "name": "thiserror-impl",
+ "version": "1.0.31",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/thiserror-impl/1.0.31/download",
+ "sha256": "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
+ }
+ },
+ "targets": [
+ {
+ "ProcMacro": {
+ "crate_name": "thiserror_impl",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "thiserror_impl",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "proc-macro2 1.0.42",
+ "target": "proc_macro2"
+ },
+ {
+ "id": "quote 1.0.20",
+ "target": "quote"
+ },
+ {
+ "id": "syn 1.0.98",
+ "target": "syn"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.0.31"
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "time 0.1.44": {
+ "name": "time",
+ "version": "0.1.44",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/time/0.1.44/download",
+ "sha256": "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "time",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "time",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "libc 0.2.126",
+ "target": "libc"
+ }
+ ],
+ "selects": {
+ "cfg(target_os = \"wasi\")": [
+ {
+ "id": "wasi 0.10.0+wasi-snapshot-preview1",
+ "target": "wasi"
+ }
+ ],
+ "cfg(windows)": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "winapi"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.1.44"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "typenum 1.15.0": {
+ "name": "typenum",
+ "version": "1.15.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/typenum/1.15.0/download",
+ "sha256": "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "typenum",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_main",
+ "crate_root": "build/main.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "typenum",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "typenum 1.15.0",
+ "target": "build_script_main"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "1.15.0"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT OR Apache-2.0"
+ },
+ "unicode-ident 1.0.2": {
+ "name": "unicode-ident",
+ "version": "1.0.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/unicode-ident/1.0.2/download",
+ "sha256": "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "unicode_ident",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "unicode_ident",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2018",
+ "version": "1.0.2"
+ },
+ "license": "(MIT OR Apache-2.0) AND Unicode-DFS-2016"
+ },
+ "unicode-width 0.1.9": {
+ "name": "unicode-width",
+ "version": "0.1.9",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/unicode-width/0.1.9/download",
+ "sha256": "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "unicode_width",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "unicode_width",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default"
+ ],
+ "edition": "2015",
+ "version": "0.1.9"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "vec_map 0.8.2": {
+ "name": "vec_map",
+ "version": "0.8.2",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/vec_map/0.8.2/download",
+ "sha256": "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "vec_map",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "vec_map",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.8.2"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "version_check 0.9.4": {
+ "name": "version_check",
+ "version": "0.9.4",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/version_check/0.9.4/download",
+ "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "version_check",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "version_check",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "edition": "2015",
+ "version": "0.9.4"
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "wasi 0.10.0+wasi-snapshot-preview1": {
+ "name": "wasi",
+ "version": "0.10.0+wasi-snapshot-preview1",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/wasi/0.10.0+wasi-snapshot-preview1/download",
+ "sha256": "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "wasi",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "wasi",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "default",
+ "std"
+ ],
+ "edition": "2018",
+ "version": "0.10.0+wasi-snapshot-preview1"
+ },
+ "license": "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
+ },
+ "winapi 0.3.9": {
+ "name": "winapi",
+ "version": "0.3.9",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/winapi/0.3.9/download",
+ "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "winapi",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "winapi",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "consoleapi",
+ "errhandlingapi",
+ "fileapi",
+ "handleapi",
+ "minwinbase",
+ "minwindef",
+ "ntdef",
+ "ntsecapi",
+ "ntstatus",
+ "processenv",
+ "profileapi",
+ "std",
+ "sysinfoapi",
+ "timezoneapi",
+ "winbase",
+ "winerror",
+ "winnt"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "winapi 0.3.9",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {
+ "i686-pc-windows-gnu": [
+ {
+ "id": "winapi-i686-pc-windows-gnu 0.4.0",
+ "target": "winapi_i686_pc_windows_gnu"
+ }
+ ],
+ "x86_64-pc-windows-gnu": [
+ {
+ "id": "winapi-x86_64-pc-windows-gnu 0.4.0",
+ "target": "winapi_x86_64_pc_windows_gnu"
+ }
+ ]
+ }
+ },
+ "edition": "2015",
+ "version": "0.3.9"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "winapi-i686-pc-windows-gnu 0.4.0": {
+ "name": "winapi-i686-pc-windows-gnu",
+ "version": "0.4.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download",
+ "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "winapi_i686_pc_windows_gnu",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "winapi_i686_pc_windows_gnu",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "winapi-i686-pc-windows-gnu 0.4.0",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.4.0"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "winapi-x86_64-pc-windows-gnu 0.4.0": {
+ "name": "winapi-x86_64-pc-windows-gnu",
+ "version": "0.4.0",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download",
+ "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "winapi_x86_64_pc_windows_gnu",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ },
+ {
+ "BuildScript": {
+ "crate_name": "build_script_build",
+ "crate_root": "build.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "winapi_x86_64_pc_windows_gnu",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "winapi-x86_64-pc-windows-gnu 0.4.0",
+ "target": "build_script_build"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2015",
+ "version": "0.4.0"
+ },
+ "build_script_attrs": {
+ "data_glob": [
+ "**"
+ ]
+ },
+ "license": "MIT/Apache-2.0"
+ },
+ "zip 0.5.13": {
+ "name": "zip",
+ "version": "0.5.13",
+ "repository": {
+ "Http": {
+ "url": "https://crates.io/api/v1/crates/zip/0.5.13/download",
+ "sha256": "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815"
+ }
+ },
+ "targets": [
+ {
+ "Library": {
+ "crate_name": "zip",
+ "crate_root": "src/lib.rs",
+ "srcs": {
+ "include": [
+ "**/*.rs"
+ ],
+ "exclude": []
+ }
+ }
+ }
+ ],
+ "library_target_name": "zip",
+ "common_attrs": {
+ "compile_data_glob": [
+ "**"
+ ],
+ "crate_features": [
+ "bzip2",
+ "default",
+ "deflate",
+ "flate2",
+ "time"
+ ],
+ "deps": {
+ "common": [
+ {
+ "id": "byteorder 1.4.3",
+ "target": "byteorder"
+ },
+ {
+ "id": "bzip2 0.4.3",
+ "target": "bzip2"
+ },
+ {
+ "id": "crc32fast 1.3.2",
+ "target": "crc32fast"
+ },
+ {
+ "id": "flate2 1.0.24",
+ "target": "flate2"
+ },
+ {
+ "id": "thiserror 1.0.31",
+ "target": "thiserror"
+ },
+ {
+ "id": "time 0.1.44",
+ "target": "time"
+ }
+ ],
+ "selects": {}
+ },
+ "edition": "2018",
+ "version": "0.5.13"
+ },
+ "license": "MIT"
+ }
+ },
+ "binary_crates": [
+ "cc 1.0.73",
+ "protobuf-codegen 2.8.2"
+ ],
+ "workspace_members": {
+ "direct-cargo-bazel-deps 0.0.1": ""
+ },
+ "conditions": {
+ "aarch64-apple-darwin": [
+ "aarch64-apple-darwin"
+ ],
+ "aarch64-linux-android": [
+ "aarch64-linux-android"
+ ],
+ "cfg(all(any(target_arch = \"x86_64\", target_arch = \"aarch64\"), target_os = \"hermit\"))": [],
+ "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": [
+ "aarch64-unknown-linux-gnu"
+ ],
+ "cfg(all(target_arch = \"wasm32\", not(target_os = \"emscripten\")))": [
+ "wasm32-unknown-unknown",
+ "wasm32-wasi"
+ ],
+ "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))": [
+ "aarch64-apple-darwin",
+ "aarch64-apple-ios",
+ "aarch64-apple-ios-sim",
+ "aarch64-linux-android",
+ "aarch64-unknown-linux-gnu",
+ "i686-apple-darwin",
+ "i686-linux-android",
+ "i686-pc-windows-msvc",
+ "i686-unknown-freebsd",
+ "i686-unknown-linux-gnu",
+ "x86_64-apple-darwin",
+ "x86_64-apple-ios",
+ "x86_64-linux-android",
+ "x86_64-pc-windows-msvc",
+ "x86_64-unknown-freebsd",
+ "x86_64-unknown-linux-gnu"
+ ],
+ "cfg(not(windows))": [
+ "aarch64-apple-darwin",
+ "aarch64-apple-ios",
+ "aarch64-apple-ios-sim",
+ "aarch64-linux-android",
+ "aarch64-unknown-linux-gnu",
+ "arm-unknown-linux-gnueabi",
+ "armv7-linux-androideabi",
+ "armv7-unknown-linux-gnueabi",
+ "i686-apple-darwin",
+ "i686-linux-android",
+ "i686-unknown-freebsd",
+ "i686-unknown-linux-gnu",
+ "powerpc-unknown-linux-gnu",
+ "riscv32imc-unknown-none-elf",
+ "s390x-unknown-linux-gnu",
+ "wasm32-unknown-unknown",
+ "wasm32-wasi",
+ "x86_64-apple-darwin",
+ "x86_64-apple-ios",
+ "x86_64-linux-android",
+ "x86_64-unknown-freebsd",
+ "x86_64-unknown-linux-gnu"
+ ],
+ "cfg(target_env = \"sgx\")": [],
+ "cfg(target_os = \"fuchsia\")": [],
+ "cfg(target_os = \"hermit\")": [],
+ "cfg(target_os = \"redox\")": [],
+ "cfg(target_os = \"wasi\")": [
+ "wasm32-wasi"
+ ],
+ "cfg(target_os = \"windows\")": [
+ "i686-pc-windows-msvc",
+ "x86_64-pc-windows-msvc"
+ ],
+ "cfg(unix)": [
+ "aarch64-apple-darwin",
+ "aarch64-apple-ios",
+ "aarch64-apple-ios-sim",
+ "aarch64-linux-android",
+ "aarch64-unknown-linux-gnu",
+ "arm-unknown-linux-gnueabi",
+ "armv7-linux-androideabi",
+ "armv7-unknown-linux-gnueabi",
+ "i686-apple-darwin",
+ "i686-linux-android",
+ "i686-unknown-freebsd",
+ "i686-unknown-linux-gnu",
+ "powerpc-unknown-linux-gnu",
+ "s390x-unknown-linux-gnu",
+ "x86_64-apple-darwin",
+ "x86_64-apple-ios",
+ "x86_64-linux-android",
+ "x86_64-unknown-freebsd",
+ "x86_64-unknown-linux-gnu"
+ ],
+ "cfg(windows)": [
+ "i686-pc-windows-msvc",
+ "x86_64-pc-windows-msvc"
+ ],
+ "i686-pc-windows-gnu": [],
+ "x86_64-pc-windows-gnu": []
+ }
+}
diff --git a/external.bzl b/external.bzl
index dfda2e28e..e07ac6d52 100644
--- a/external.bzl
+++ b/external.bzl
@@ -1,7 +1,7 @@
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@rules_java//java:repositories.bzl", "rules_java_dependencies")
@@ -14,9 +14,10 @@ load("@io_kythe//tools/build_rules/lexyacc:lexyacc.bzl", "lexyacc_configure")
load("@io_kythe//tools/build_rules/build_event_stream:repo.bzl", "build_event_stream_repository")
load("@io_kythe//kythe/cxx/extractor:toolchain.bzl", cxx_extractor_register_toolchains = "register_toolchains")
load("@rules_python//python:repositories.bzl", "py_repositories")
-load("@bazel_toolchains//repositories:repositories.bzl", bazel_toolchains_repositories = "repositories")
-load("@rules_rust//rust:repositories.bzl", "rust_repositories")
+load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
+load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_deps")
load("@rules_rust//proto:repositories.bzl", "rust_proto_repositories")
+load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
load("@build_bazel_rules_nodejs//:index.bzl", "npm_install")
load(
"@bazelruby_rules_ruby//ruby:deps.bzl",
@@ -27,21 +28,20 @@ load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_depende
load("@llvm-project-raw//utils/bazel:configure.bzl", "llvm_configure")
load("@llvm-project-raw//utils/bazel:terminfo.bzl", "llvm_terminfo_disable")
load("@llvm-project-raw//utils/bazel:zlib.bzl", "llvm_zlib_external")
-
-# The raze macros automatically check for duplicated dependencies so we can
-# simply load each macro here.
-load("//kythe/rust/cargo:crates.bzl", "raze_fetch_remote_crates")
+load("@hedron_compile_commands//:workspace_setup.bzl", "hedron_compile_commands_setup")
def _rule_dependencies():
go_rules_dependencies()
- go_register_toolchains(version = "1.17")
+ go_register_toolchains(version = "1.18.1")
gazelle_dependencies()
rules_java_dependencies()
rules_proto_dependencies()
py_repositories()
- bazel_toolchains_repositories()
- rust_repositories(version = "nightly", iso_date = "2021-08-19", dev_components = True)
- rust_proto_repositories()
+ rules_rust_dependencies()
+ rust_register_toolchains(version = "nightly", iso_date = "2022-07-27", dev_components = True, include_rustc_srcs = True)
+ rust_proto_repositories(register_default_toolchain = False)
+ rust_analyzer_deps()
+ crate_universe_dependencies()
rules_ruby_dependencies()
rules_ruby_select_sdk(version = "host")
rules_foreign_cc_dependencies(register_built_tools = False)
@@ -160,8 +160,8 @@ def _cc_dependencies():
github_archive,
name = "com_google_absl",
repo_name = "abseil/abseil-cpp",
- commit = "e9b9e38f67a008d66133535a72ada843bd66013f",
- sha256 = "49c93740b3b09f73cd2f10da778ea4129d59733085393f458a4acd17774503fb",
+ commit = "ec0d76f1d012cc1a4b3b08dfafcfc5237f5ba2c9",
+ sha256 = "32a00f5834195d6656097c800a773e2fc766741e434d1eff092ed5578a21dd3a",
)
maybe(
@@ -277,23 +277,6 @@ def _cc_dependencies():
def _java_dependencies():
maybe(
- # For @com_google_common_flogger
- http_archive,
- name = "google_bazel_common",
- strip_prefix = "bazel-common-b3778739a9c67eaefe0725389f03cf821392ac67",
- sha256 = "4ae0fd0af627be9523a166b88d1298375335f418dcc13a82e9e77a0089a4d254",
- urls = [
- "https://mirror.bazel.build/github.com/google/bazel-common/archive/b3778739a9c67eaefe0725389f03cf821392ac67.zip",
- "https://github.com/google/bazel-common/archive/b3778739a9c67eaefe0725389f03cf821392ac67.zip",
- ],
- )
- maybe(
- git_repository,
- name = "com_google_common_flogger",
- commit = "ca8ad22bc1479b5675118308f88ef3fff7d26c1f",
- remote = "https://github.com/google/flogger",
- )
- maybe(
git_repository,
name = "io_bazel",
commit = "20c4596365d6e198ce9e4559a372190ceedff3f5",
@@ -302,7 +285,9 @@ def _java_dependencies():
maven_install(
name = "maven",
artifacts = [
- "com.beust:jcommander:1.81",
+ "com.google.flogger:flogger:0.7.3",
+ "com.google.flogger:flogger-system-backend:0.7.3",
+ "com.beust:jcommander:1.82",
"com.google.auto.service:auto-service:1.0",
"com.google.auto.service:auto-service-annotations:1.0",
"com.google.auto.value:auto-value:1.8",
@@ -312,7 +297,7 @@ def _java_dependencies():
"com.google.code.gson:gson:2.8.6",
"com.google.common.html.types:types:1.0.8",
"com.google.errorprone:error_prone_annotations:2.6.0",
- "com.google.guava:guava:30.1.1-jre",
+ "com.google.guava:guava:31.0.1-jre",
"com.google.jimfs:jimfs:1.2",
"com.google.re2j:re2j:1.6",
"com.google.truth:truth:1.1.2",
@@ -330,6 +315,7 @@ def _java_dependencies():
fetch_sources = True,
generate_compat_repositories = True, # Required by bazel-common's dependencies
version_conflict_policy = "pinned",
+ maven_install_json = "//:maven_install.json",
)
def _go_dependencies():
@@ -1168,16 +1154,20 @@ def _go_dependencies():
http_archive(
name = "org_golang_x_tools",
- # v0.1.5, as of 2021-06-09
+ # v0.1.9, latest as of 2022-03-14
urls = [
- "https://mirror.bazel.build/github.com/golang/tools/archive/v0.1.5.zip",
- "https://github.com/golang/tools/archive/v0.1.5.zip",
+ "https://mirror.bazel.build/github.com/golang/tools/archive/v0.1.9.zip",
+ "https://github.com/golang/tools/archive/v0.1.9.zip",
],
- #sha256 = "60a5cee8304b4d9130344f156a10ba648e315b5fca4b84939b765b26ce217dee",
- strip_prefix = "tools-0.1.5",
+ sha256 = "1d338afb3cd8013cfb035da6831dea2210efb0386c17b9c99b5e84724e3d733a",
+ strip_prefix = "tools-0.1.9",
patches = [
"@io_kythe//third_party/go:add_export_license.patch",
- # gazelle args: -repo_root . -go_prefix golang.org/x/tools -go_naming_convention import_alias
+ # deletegopls removes the gopls subdirectory. It contains a nested
+ # module with additional dependencies. It's not needed by rules_go.
+ # releaser:patch-cmd rm -rf gopls
+ "@io_bazel_rules_go//third_party:org_golang_x_tools-deletegopls.patch",
+ # releaser:patch-cmd gazelle -repo_root . -go_prefix golang.org/x/tools -go_naming_convention import_alias
"@io_bazel_rules_go//third_party:org_golang_x_tools-gazelle.patch",
],
patch_args = ["-p1"],
@@ -1190,9 +1180,6 @@ def _go_dependencies():
version = "v0.0.0-20200804184101-5ec99f83aff1",
)
-def _rust_dependencies():
- raze_fetch_remote_crates()
-
def _js_dependencies():
npm_install(
name = "npm",
@@ -1280,7 +1267,6 @@ def kythe_dependencies(sample_ui = True):
_cc_dependencies()
_go_dependencies()
_java_dependencies()
- _rust_dependencies()
_js_dependencies()
# proto_library, cc_proto_library, and java_proto_library rules implicitly
@@ -1299,7 +1285,19 @@ def kythe_dependencies(sample_ui = True):
_bindings()
_rule_dependencies()
+ hedron_compile_commands_setup()
if sample_ui:
_sample_ui_dependencies()
_extractor_image_dependencies()
+
+ maybe(
+ http_file,
+ name = "bazel_toolchains_rbe_gen_config_linux_amd64",
+ urls = [
+ "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/v5.1.1/rbe_configs_gen_linux_amd64",
+ "https://github.com/bazelbuild/bazel-toolchains/releases/download/v5.1.1/rbe_configs_gen_linux_amd64",
+ ],
+ sha256 = "3e3ba75f14eb7c87de8934ae8dfa814f84b5be3b0081dcb8cb95ff42ed1a73b2",
+ executable = True,
+ )
diff --git a/go.mod b/go.mod
index dd278d1c0..49142743a 100644
--- a/go.mod
+++ b/go.mod
@@ -16,8 +16,7 @@ require (
github.com/google/go-cmp v0.5.6
github.com/google/orderedcode v0.0.1
github.com/google/subcommands v1.2.0
- github.com/google/uuid v1.1.2 // indirect
- github.com/googleapis/gax-go/v2 v2.0.5 // indirect
+ github.com/google/uuid v1.3.0 // indirect
github.com/hanwen/go-fuse v1.0.0
github.com/jmhodges/levigo v1.0.0
github.com/jstemmer/go-junit-report v0.9.1 // indirect
@@ -29,10 +28,7 @@ require (
github.com/sourcegraph/go-langserver v2.0.0+incompatible
github.com/sourcegraph/jsonrpc2 v0.1.0
github.com/syndtr/goleveldb v1.0.0
- go.opencensus.io v0.23.0 // indirect
- golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
- golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
- golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f
+ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654
@@ -40,7 +36,6 @@ require (
golang.org/x/tools v0.1.5
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
google.golang.org/api v0.52.0
- google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20210803142424-70bd63adacf2 // indirect
google.golang.org/grpc v1.39.0
google.golang.org/protobuf v1.27.1
diff --git a/go.sum b/go.sum
index e62bd8b53..71e4580ef 100644
--- a/go.sum
+++ b/go.sum
@@ -1,3 +1,7 @@
+bitbucket.org/creachadair/shell v0.0.6 h1:reJflDbKqnlnqb4Oo2pQ1/BqmY/eCWcNGHrIUO8qIzc=
+bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M=
+bitbucket.org/creachadair/stringset v0.0.9 h1:L4vld9nzPt90UZNrXjNelTshD74ps4P5NGs3Iq6yN3o=
+bitbucket.org/creachadair/stringset v0.0.9/go.mod h1:t+4WcQ4+PXTa8aQdNKe40ZP6iwesoMFWAxPGd3UGjyY=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -45,7 +49,6 @@ cloud.google.com/go/storage v1.16.0 h1:1UwAux2OZP4310YXg5ohqBEpV16Y93uZG4+qOX7K2
cloud.google.com/go/storage v1.16.0/go.mod h1:ieKBmUyzcftN5tbxwnXClMKH00CfcQ+xL6NN0r5QfmE=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DataDog/zstd v1.4.8 h1:Rpmta4xZ/MgZnriKNd24iZMhGpP5dvUcs/uqfBapKZY=
github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
@@ -54,6 +57,8 @@ github.com/apache/beam v2.31.0+incompatible h1:7C2/JDa+fiRJs8kAcfCHxVTf0xxwKsCFQ
github.com/apache/beam v2.31.0+incompatible/go.mod h1:/8NX3Qi8vGstDLLaeaU7+lzVEu/ACaQhYjeefzQ0y1o=
github.com/bazelbuild/rules_go v0.28.0 h1:fNtx0dJpG5ENGdMj3/GICoi/7z+ixB3IIW5rERTzOgM=
github.com/bazelbuild/rules_go v0.28.0/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M=
+github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=
+github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
@@ -63,6 +68,7 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/creachadair/staticfile v0.1.3/go.mod h1:a3qySzCIXEprDGxk6tSxSI+dBBdLzqeBOMhZ+o2d3pM=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -74,6 +80,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -120,6 +127,19 @@ github.com/google/brotli/go/cbrotli v0.0.0-20210804124202-19d86fb9a60a h1:Hxy9Hj
github.com/google/brotli/go/cbrotli v0.0.0-20210804124202-19d86fb9a60a/go.mod h1:nOPhAkwVliJdNTkj3gXpljmWhjc4wCaVqbMJcPKWP4s=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
@@ -144,7 +164,8 @@ github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210715191844-86eeefc3e471/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
+github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE=
+github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
@@ -200,6 +221,11 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
@@ -280,6 +306,7 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
@@ -304,6 +331,63 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 h1:3B43BWw0xEBsLZ/NO1VALz6fppU3481pik+2Ksv45z8=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -318,6 +402,59 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
+golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
+golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
diff --git a/kythe/cxx/common/indexing/KytheGraphRecorder.cc b/kythe/cxx/common/indexing/KytheGraphRecorder.cc
index 3536177b0..6534ddf59 100644
--- a/kythe/cxx/common/indexing/KytheGraphRecorder.cc
+++ b/kythe/cxx/common/indexing/KytheGraphRecorder.cc
@@ -31,7 +31,8 @@ static const std::string* const kNodeKindSpellings[] = {
new std::string("interface"), new std::string("package"),
new std::string("tsigma"), new std::string("doc"),
new std::string("tbuiltin"), new std::string("meta"),
- new std::string("diagnostic"), new std::string("clang/usr")};
+ new std::string("diagnostic"), new std::string("clang/usr"),
+ new std::string("tvar")};
static const std::string* kEdgeKindSpellings[] = {
new std::string("/kythe/edge/defines"),
@@ -84,7 +85,9 @@ static const std::string* kEdgeKindSpellings[] = {
new std::string("/kythe/edge/ref/writes"),
new std::string("/kythe/edge/ref/writes/implicit"),
new std::string("/kythe/edge/influences"),
- new std::string("/kythe/edge/ref/file")};
+ new std::string("/kythe/edge/ref/file"),
+ new std::string("/kythe/edge/tparam"),
+ new std::string("/kythe/edge/completedby")};
bool of_spelling(absl::string_view str, EdgeKindID* edge_id) {
size_t edge_index = 0;
diff --git a/kythe/cxx/common/indexing/KytheGraphRecorder.h b/kythe/cxx/common/indexing/KytheGraphRecorder.h
index 134bd5ba3..a5d0038ef 100644
--- a/kythe/cxx/common/indexing/KytheGraphRecorder.h
+++ b/kythe/cxx/common/indexing/KytheGraphRecorder.h
@@ -45,7 +45,8 @@ enum class NodeKindID {
kTBuiltin,
kMeta,
kDiagnostic,
- kClangUsr
+ kClangUsr,
+ kTVar
};
/// \brief Known properties of nodes. See the schema for details.
@@ -126,7 +127,9 @@ enum class EdgeKindID {
kRefWrites,
kRefWritesImplicit,
kInfluences,
- kRefFile
+ kRefFile,
+ kTParam,
+ kCompletedby
};
/// \brief Returns the Kythe spelling of `node_kind_id`
diff --git a/kythe/cxx/common/json_proto.cc b/kythe/cxx/common/json_proto.cc
index 7eecff9dc..b14d6353a 100644
--- a/kythe/cxx/common/json_proto.cc
+++ b/kythe/cxx/common/json_proto.cc
@@ -238,9 +238,7 @@ absl::Status ParseFromJsonString(absl::string_view input,
void PackAny(const google::protobuf::Message& message,
absl::string_view type_uri, google::protobuf::Any* out) {
out->set_type_url(type_uri.data(), type_uri.size());
- google::protobuf::io::StringOutputStream stream(out->mutable_value());
- google::protobuf::io::CodedOutputStream coded_output_stream(&stream);
- message.SerializeToCodedStream(&coded_output_stream);
+ message.SerializeToString(out->mutable_value());
}
bool UnpackAny(const google::protobuf::Any& any,
diff --git a/kythe/cxx/common/kythe_metadata_file.cc b/kythe/cxx/common/kythe_metadata_file.cc
index 3f82c6e8c..fc3b66f92 100644
--- a/kythe/cxx/common/kythe_metadata_file.cc
+++ b/kythe/cxx/common/kythe_metadata_file.cc
@@ -202,7 +202,7 @@ std::unique_ptr<MetadataFile> KytheMetadataSupport::LoadFromJSON(
std::unique_ptr<kythe::MetadataFile> KytheMetadataSupport::ParseFile(
const std::string& raw_filename, const std::string& filename,
- absl::string_view buffer) {
+ absl::string_view buffer, absl::string_view target_buffer) {
auto metadata = LoadFromJSON(raw_filename, buffer);
if (!metadata) {
LOG(WARNING) << "Failed loading " << raw_filename;
@@ -218,7 +218,7 @@ void MetadataSupports::UseVNameLookup(VNameLookup lookup) const {
std::unique_ptr<kythe::MetadataFile> MetadataSupports::ParseFile(
const std::string& filename, absl::string_view buffer,
- const std::string& search_string) const {
+ const std::string& search_string, absl::string_view target_buffer) const {
std::string modified_filename = filename;
absl::optional<std::string> decoded_buffer_storage;
absl::string_view decoded_buffer = buffer;
@@ -240,8 +240,8 @@ std::unique_ptr<kythe::MetadataFile> MetadataSupports::ParseFile(
}
}
for (const auto& support : supports_) {
- if (auto metadata =
- support->ParseFile(filename, modified_filename, decoded_buffer)) {
+ if (auto metadata = support->ParseFile(filename, modified_filename,
+ decoded_buffer, target_buffer)) {
return metadata;
}
}
diff --git a/kythe/cxx/common/kythe_metadata_file.h b/kythe/cxx/common/kythe_metadata_file.h
index 1f7f24a5b..a43d5ff19 100644
--- a/kythe/cxx/common/kythe_metadata_file.h
+++ b/kythe/cxx/common/kythe_metadata_file.h
@@ -114,11 +114,12 @@ class MetadataSupport {
public:
virtual ~MetadataSupport() {}
/// \brief Attempt to parse the file originally named `raw_filename` with
- /// decoded filename `filename` and contents in `buffer`.
+ /// decoded filename `filename` and contents in `buffer` to be applied
+ /// to a target file with contents `target_buffer`.
/// \return A `MetadataFile` on success; otherwise, null.
virtual std::unique_ptr<kythe::MetadataFile> ParseFile(
const std::string& raw_filename, const std::string& filename,
- absl::string_view buffer) {
+ absl::string_view buffer, absl::string_view target_buffer) {
return nullptr;
}
@@ -154,7 +155,7 @@ class MetadataSupports {
std::unique_ptr<kythe::MetadataFile> ParseFile(
const std::string& filename, absl::string_view buffer,
- const std::string& search_string) const;
+ const std::string& search_string, absl::string_view target_buffer) const;
void UseVNameLookup(VNameLookup lookup) const;
@@ -167,7 +168,7 @@ class KytheMetadataSupport : public MetadataSupport {
public:
std::unique_ptr<kythe::MetadataFile> ParseFile(
const std::string& raw_filename, const std::string& filename,
- absl::string_view buffer) override;
+ absl::string_view buffer, absl::string_view target_buffer) override;
private:
/// \brief Load the JSON-encoded metadata from `json`.
diff --git a/kythe/cxx/common/protobuf_metadata_file.cc b/kythe/cxx/common/protobuf_metadata_file.cc
index c94aa24dc..60ddcde46 100644
--- a/kythe/cxx/common/protobuf_metadata_file.cc
+++ b/kythe/cxx/common/protobuf_metadata_file.cc
@@ -27,7 +27,6 @@
#include "kythe/cxx/common/vname_ordering.h"
namespace kythe {
-
proto::VName ProtobufMetadataSupport::VNameForAnnotation(
const proto::VName& context_vname,
const google::protobuf::GeneratedCodeInfo::Annotation& annotation) {
@@ -44,7 +43,7 @@ proto::VName ProtobufMetadataSupport::VNameForAnnotation(
std::unique_ptr<kythe::MetadataFile> ProtobufMetadataSupport::ParseFile(
const std::string& raw_filename, const std::string& filename,
- absl::string_view buffer) {
+ absl::string_view buffer, absl::string_view target_buffer) {
absl::string_view file_ref(filename);
if (!(absl::EndsWith(filename, ".pb.h.meta") ||
absl::EndsWith(filename, ".pb.h") ||
@@ -77,12 +76,34 @@ std::unique_ptr<kythe::MetadataFile> ProtobufMetadataSupport::ParseFile(
rule.generate_anchor = false;
rule.anchor_begin = 0;
rule.anchor_end = 0;
- rules.push_back(rule);
if (!rule.vname.path().empty()) {
if (file_rule < 0 || rule.begin > rules[file_rule].begin) {
file_rule = rules.size() - 1;
}
}
+ if (should_guess_semantics_) {
+ if (rule.begin > target_buffer.size() ||
+ rule.end > target_buffer.size() || rule.end < rule.begin ||
+ annotation.path().size() < 2 ||
+ ((annotation.path().size() & 1) != 0) ||
+ (annotation.path()[annotation.path().size() - 2] != 2 &&
+ annotation.path()[annotation.path().size() - 2] != 8)) {
+ auto token = target_buffer.substr(rule.begin, rule.end - rule.begin);
+ rules.push_back(rule);
+ continue;
+ }
+ // token names something related to a field or a oneof.
+ auto token = target_buffer.substr(rule.begin, rule.end - rule.begin);
+ if (absl::StartsWith(token, "clear_") ||
+ absl::StartsWith(token, "set_") || // covers set_allocated_
+ absl::StartsWith(token, "add_") ||
+ absl::StartsWith(token, "release_")) {
+ rule.semantic = kythe::MetadataFile::Semantic::kWrite;
+ } else if (absl::StartsWith(token, "mutable_")) {
+ rule.semantic = kythe::MetadataFile::Semantic::kReadWrite;
+ }
+ }
+ rules.push_back(rule);
}
// Add a file-scoped rule for the last encountered vname; this
diff --git a/kythe/cxx/common/protobuf_metadata_file.h b/kythe/cxx/common/protobuf_metadata_file.h
index 532313170..3dd4b5f87 100644
--- a/kythe/cxx/common/protobuf_metadata_file.h
+++ b/kythe/cxx/common/protobuf_metadata_file.h
@@ -57,10 +57,14 @@ class ProtobufMetadataSupport : public MetadataSupport {
/// a warning.
std::unique_ptr<kythe::MetadataFile> ParseFile(
const std::string& raw_filename, const std::string& filename,
- absl::string_view buffer) override;
+ absl::string_view buffer, absl::string_view target_buffer) override;
void UseVNameLookup(VNameLookup lookup) override { vname_lookup_ = lookup; }
+ void GuessSemantics(bool should_guess_semantics) {
+ should_guess_semantics_ = should_guess_semantics;
+ };
+
private:
/// Returns the VName for the node that should be used between
/// generated semantic objects and the objects that generate them.
@@ -74,6 +78,9 @@ class ProtobufMetadataSupport : public MetadataSupport {
VNameLookup vname_lookup_ = [](const std::string& path, proto::VName* out) {
return false;
};
+
+ /// Guess semantics for proto methods.
+ bool should_guess_semantics_ = false;
};
} // namespace kythe
diff --git a/kythe/cxx/extractor/toolchain.bzl b/kythe/cxx/extractor/toolchain.bzl
index 6e55c2d3b..5c7c24489 100644
--- a/kythe/cxx/extractor/toolchain.bzl
+++ b/kythe/cxx/extractor/toolchain.bzl
@@ -15,7 +15,7 @@
#
"""C++ Verifier toolchain support rules and macros."""
-load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
+load("//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", "use_cpp_toolchain")
CxxExtractorToolchainInfo = provider(
doc = "Provides required information for C++/ObjectiveC extractors.",
@@ -64,7 +64,7 @@ cxx_extractor_toolchain = rule(
CxxExtractorToolchainInfo,
platform_common.ToolchainInfo,
],
- toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
+ toolchains = use_cpp_toolchain(),
implementation = _cxx_extractor_toolchain_impl,
)
diff --git a/kythe/cxx/indexer/cxx/BUILD b/kythe/cxx/indexer/cxx/BUILD
index 87dfd83f6..a27934d49 100644
--- a/kythe/cxx/indexer/cxx/BUILD
+++ b/kythe/cxx/indexer/cxx/BUILD
@@ -163,7 +163,9 @@ cc_library(
"//third_party/llvm/src:clang_builtin_headers",
"@boringssl//:crypto",
"@com_github_google_glog//:glog",
+ "@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/strings",
+ "@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@llvm-project//clang:basic",
@@ -412,6 +414,9 @@ cc_library(
"//kythe/proto:analysis_cc_proto",
"//kythe/proto:common_cc_proto",
"//kythe/proto:storage_cc_proto",
+ "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/base:core_headers",
+ "@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
@@ -422,6 +427,19 @@ cc_library(
],
)
+cc_test(
+ name = "vfs_test",
+ srcs = ["KytheVFS_test.cc"],
+ deps = [
+ ":vfs",
+ "//kythe/proto:analysis_cc_proto",
+ "//third_party:gtest",
+ "//third_party:gtest_main",
+ "@com_google_absl//absl/strings",
+ "@llvm-project//llvm:Support",
+ ],
+)
+
cc_library(
name = "lib",
srcs = [
diff --git a/kythe/cxx/indexer/cxx/GoogleFlagsLibrarySupport.cc b/kythe/cxx/indexer/cxx/GoogleFlagsLibrarySupport.cc
index c0c75e9d7..1ee145261 100644
--- a/kythe/cxx/indexer/cxx/GoogleFlagsLibrarySupport.cc
+++ b/kythe/cxx/indexer/cxx/GoogleFlagsLibrarySupport.cc
@@ -166,9 +166,10 @@ static clang::SourceRange GetVarDeclFlagDeclLoc(
/// \brief Given the NodeId of the primary variable defn or decl of a flag,
/// returns a NodeId for the flag itself.
/// \param VarId the NodeId for the flag's primary variable (not a _no or _nono)
-static GraphObserver::NodeId NodeIdForFlag(const GraphObserver::NodeId& VarId) {
- return GraphObserver::NodeId(VarId.getToken(),
- "google/gflag#" + VarId.getRawIdentity());
+static GraphObserver::NodeId NodeIdForFlag(GraphObserver& Observer,
+ const GraphObserver::NodeId& VarId) {
+ return Observer.MakeNodeId(VarId.getToken(),
+ "google/gflag#" + VarId.getRawIdentity());
}
void GoogleFlagsLibrarySupport::InspectVariable(
@@ -191,7 +192,7 @@ void GoogleFlagsLibrarySupport::InspectVariable(
// NB: Flags are always global.
FlagNameId.Path = FlagName.str();
FlagNameId.EqClass = GraphObserver::NameId::NameEqClass::None;
- GraphObserver::NodeId FlagNodeId = NodeIdForFlag(NodeId);
+ GraphObserver::NodeId FlagNodeId = NodeIdForFlag(GO, NodeId);
GO.recordUserDefinedNode(FlagNodeId, "google/gflag", Compl);
if (auto RCC = V.ExplicitRangeInCurrentContext(Range)) {
GO.recordDefinitionBindingRange(*RCC, FlagNodeId);
@@ -206,7 +207,7 @@ void GoogleFlagsLibrarySupport::InspectVariable(
clang::FileID NextDeclFile =
GO.getSourceManager()->getFileID(NextDeclRange.getBegin());
GO.recordCompletionRange(
- *RCC, NodeIdForFlag(C.DeclId),
+ *RCC, NodeIdForFlag(GO, C.DeclId),
NextDeclFile == DeclFile
? GraphObserver::Specificity::UniquelyCompletes
: GraphObserver::Specificity::Completes,
@@ -230,7 +231,7 @@ void GoogleFlagsLibrarySupport::InspectDeclRef(
}
auto Range = GetVarDeclFlagDeclLoc(*GO.getLangOptions(), VD, DeclRefLocation);
if (Range.isValid()) {
- GO.recordDeclUseLocation(Ref, NodeIdForFlag(RefId),
+ GO.recordDeclUseLocation(Ref, NodeIdForFlag(GO, RefId),
GraphObserver::Claimability::Unclaimable,
V.IsImplicit(Ref));
}
diff --git a/kythe/cxx/indexer/cxx/GraphObserver.cc b/kythe/cxx/indexer/cxx/GraphObserver.cc
index 6086da5d1..728fba08c 100644
--- a/kythe/cxx/indexer/cxx/GraphObserver.cc
+++ b/kythe/cxx/indexer/cxx/GraphObserver.cc
@@ -19,30 +19,13 @@
#include <openssl/sha.h> // for SHA256
#include "absl/strings/escaping.h"
+#include "absl/strings/str_format.h"
namespace kythe {
// base64 has a 4:3 overhead and SHA256_DIGEST_LENGTH is 32. 32*4/3 = 42.66666
constexpr size_t kSha256DigestBase64MaxEncodingLength = 43;
-std::string CompressString(absl::string_view InString, bool Force) {
- if (InString.size() <= kSha256DigestBase64MaxEncodingLength && !Force) {
- return std::string(InString);
- }
- ::SHA256_CTX Sha;
- ::SHA256_Init(&Sha);
- ::SHA256_Update(&Sha, reinterpret_cast<const unsigned char*>(InString.data()),
- InString.size());
- std::string Hash(SHA256_DIGEST_LENGTH, '\0');
- ::SHA256_Final(reinterpret_cast<unsigned char*>(&Hash[0]), &Sha);
- std::string Result;
- // Use web-safe escaping because vnames are frequently URI-encoded. This
- // doesn't include padding ('=') or the characters + or /, all of which will
- // expand to three-byte sequences in such an encoding.
- absl::WebSafeBase64Escape(Hash, &Result);
- return Result;
-}
-
namespace {
struct MintedVNameHeader {
size_t path_offset;
@@ -52,6 +35,68 @@ struct MintedVNameHeader {
};
} // anonymous namespace
+FileHashRecorder::FileHashRecorder(absl::string_view path)
+ : out_file_(::fopen(std::string(path).c_str(), "w")) {
+ if (out_file_ == nullptr) ::perror("Error in fopen");
+ CHECK(out_file_ != nullptr)
+ << "Couldn't open file " << path << " for hash recording.";
+}
+
+void FileHashRecorder::RecordHash(absl::string_view hash,
+ absl::string_view web64hash,
+ absl::string_view original) {
+ auto result = hashes_.insert(std::string(hash));
+ if (!result.second) return;
+ absl::FPrintF(out_file_, "%s\t%s\n", web64hash, original);
+}
+FileHashRecorder::~FileHashRecorder() {
+ CHECK(::fclose(out_file_) == 0) << "Couldn't close file for hash recording.";
+}
+
+namespace {
+std::string Sha256(absl::string_view in_string) {
+ ::SHA256_CTX sha;
+ ::SHA256_Init(&sha);
+ ::SHA256_Update(&sha,
+ reinterpret_cast<const unsigned char*>(in_string.data()),
+ in_string.size());
+ std::string hash(SHA256_DIGEST_LENGTH, '\0');
+ ::SHA256_Final(reinterpret_cast<unsigned char*>(&hash[0]), &sha);
+ return hash;
+}
+} // anonymous namespace
+
+std::string GraphObserver::ForceEncodeString(absl::string_view InString) const {
+ auto hash = Sha256(InString);
+ std::string result;
+ // Use web-safe escaping because vnames are frequently URI-encoded. This
+ // doesn't include padding ('=') or the characters + or /, all of which will
+ // expand to three-byte sequences in such an encoding.
+ absl::WebSafeBase64Escape(hash, &result);
+ if (hash_recorder_ != nullptr) {
+ hash_recorder_->RecordHash(hash, result, InString);
+ }
+ return result;
+}
+
+std::string GraphObserver::CompressAnchorSignature(
+ absl::string_view InSignature) const {
+ if (InSignature.size() <= kSha256DigestBase64MaxEncodingLength) {
+ return std::string(InSignature);
+ }
+ auto hash = Sha256(InSignature);
+ std::string result;
+ absl::WebSafeBase64Escape(hash, &result);
+ return result;
+}
+
+std::string GraphObserver::CompressString(absl::string_view InString) const {
+ if (InString.size() <= kSha256DigestBase64MaxEncodingLength) {
+ return std::string(InString);
+ }
+ return ForceEncodeString(InString);
+}
+
GraphObserver::NodeId GraphObserver::MintNodeIdForVName(
const proto::VName& vname) {
std::string id;
diff --git a/kythe/cxx/indexer/cxx/GraphObserver.h b/kythe/cxx/indexer/cxx/GraphObserver.h
index aa9017ed2..e9dcb4ce9 100644
--- a/kythe/cxx/indexer/cxx/GraphObserver.h
+++ b/kythe/cxx/indexer/cxx/GraphObserver.h
@@ -22,6 +22,7 @@
#include <string>
+#include "absl/container/flat_hash_set.h"
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include "absl/types/span.h"
@@ -42,9 +43,6 @@ namespace kythe {
// TODO(zarko): Most of the documentation for this interface belongs here.
-/// \brief A one-way hash for `InString`.
-std::string CompressString(absl::string_view InString, bool Force = false);
-
enum class ProfilingEvent {
Enter, ///< A profiling section was entered.
Exit ///< A profiling section was left.
@@ -72,6 +70,25 @@ class ProfileBlock {
const char* SectionName;
};
+class HashRecorder {
+ public:
+ virtual void RecordHash(absl::string_view hash, absl::string_view web64hash,
+ absl::string_view original) {}
+ virtual ~HashRecorder() = default;
+};
+
+class FileHashRecorder : public HashRecorder {
+ public:
+ explicit FileHashRecorder(absl::string_view path);
+ void RecordHash(absl::string_view hash, absl::string_view web64hash,
+ absl::string_view original) override;
+ ~FileHashRecorder() override;
+
+ private:
+ FILE* out_file_ = nullptr;
+ absl::flat_hash_set<std::string> hashes_;
+};
+
/// \brief An interface for processing elements discovered as part of a
/// compilation unit.
///
@@ -112,6 +129,19 @@ class GraphObserver {
GraphObserver& S;
};
+ /// \brief Uses a one-way function to encode `InString`. Guaranteed to return
+ /// only websafe base64 characters.
+ std::string ForceEncodeString(absl::string_view InString) const;
+
+ /// \brief Uses a one-way function to compress `InString` if it's longer than
+ /// the result of using that function would be.
+ std::string CompressString(absl::string_view InString) const;
+
+ /// \brief Uses a one-way function to compress the anchor signature
+ /// `InSignature` if it's longer than the result of using that function would
+ /// be.
+ std::string CompressAnchorSignature(absl::string_view InSignature) const;
+
/// \brief Push another group onto the group stack, assigning
/// any observations that follow to it.
virtual void Delimit() {}
@@ -126,8 +156,7 @@ class GraphObserver {
/// determined by the `IndexerASTHooks` and `GraphObserver` override.
class NodeId {
public:
- NodeId(const ClaimToken* Token, const std::string& Identity)
- : Token(Token), Identity(CompressString(Identity)) {}
+ NodeId() {}
NodeId(const NodeId& C) { *this = C; }
NodeId& operator=(const NodeId* C) {
Token = C->Token;
@@ -163,10 +192,19 @@ class GraphObserver {
const ClaimToken* getToken() const { return Token; }
private:
- const ClaimToken* Token;
+ friend class GraphObserver;
+ explicit NodeId(const ClaimToken* Token, const std::string& Identity)
+ : Token(Token), Identity(Identity) {}
+
+ const ClaimToken* Token = nullptr;
std::string Identity;
};
+ NodeId MakeNodeId(const ClaimToken* Token,
+ const std::string& Identity) const {
+ return NodeId(Token, CompressString(Identity));
+ }
+
/// \brief A range of source text, potentially associated with a node.
///
/// The `GraphObserver` interface uses `clang::SourceRange` instances to
@@ -292,8 +330,10 @@ class GraphObserver {
/// \brief Loads and applies the metadata file `FE` to the given FileId.
/// \param SearchString if non-empty, is used to locate a C-style comment
/// inside `FE` that contains metadata.
+ /// \param TargetFile the file to which the metadata is being applied.
virtual void applyMetadataFile(clang::FileID ID, const clang::FileEntry* FE,
- const std::string& SearchString) {}
+ const std::string& SearchString,
+ const clang::FileEntry* TargetFile) {}
/// \param LO the language options in use.
virtual void setLangOptions(clang::LangOptions* LO) { LangOptions = LO; }
@@ -578,6 +618,13 @@ class GraphObserver {
virtual void recordAbsVarNode(
const NodeId& Node, const absl::optional<MarkedSource>& MarkedSource) {}
+ /// \brief Records a node representing a variable in a dependent type
+ /// abstraction.
+ /// \param Node The `NodeId` of the variable.
+ /// \param MarkedSource marked source for this variable.
+ virtual void recordTVarNode(
+ const NodeId& Node, const absl::optional<MarkedSource>& MarkedSource) {}
+
/// \brief Records a node representing a deferred lookup.
/// \param Node The `NodeId` of the lookup.
/// \param Name The `Name` for which resolution has been deferred
@@ -591,6 +638,13 @@ class GraphObserver {
virtual void recordParamEdge(const NodeId& ParamOfNode, uint32_t Ordinal,
const NodeId& ParamNode) {}
+ /// \brief Records a type parameter relationship.
+ /// \param `ParamOfNode` The node this `ParamNode` is the type parameter of.
+ /// \param `Ordinal` The ordinal for the parameter (0 is the first).
+ /// \param `ParamNode` The `NodeId` for the parameter.
+ virtual void recordTParamEdge(const NodeId& ParamOfNode, uint32_t Ordinal,
+ const NodeId& ParamNode) {}
+
/// \brief Records a node representing an enumerated type.
/// \param Compl Whether the enum is complete.
/// \param EnumKind Whether the enum is scoped.
@@ -1077,7 +1131,7 @@ class GraphObserver {
return {};
}
- virtual ~GraphObserver() = 0;
+ virtual ~GraphObserver() = default;
clang::SourceManager* getSourceManager() const { return SourceManager; }
@@ -1103,10 +1157,9 @@ class GraphObserver {
clang::LangOptions* LangOptions = nullptr;
clang::Preprocessor* Preprocessor = nullptr;
ProfilingCallback ReportProfileEvent = [](const char*, ProfilingEvent) {};
+ HashRecorder* hash_recorder_ = nullptr;
};
-inline GraphObserver::~GraphObserver() {}
-
/// \brief A GraphObserver that does nothing.
class NullGraphObserver : public GraphObserver {
public:
@@ -1130,33 +1183,33 @@ class NullGraphObserver : public GraphObserver {
NodeId getNodeIdForBuiltinType(
const llvm::StringRef& Spelling) const override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId nodeIdForTypeAliasNode(const NameId& AliasName,
const NodeId& AliasedType) const override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId recordTypeAliasNode(
const NodeId& AliasId, const NodeId& AliasedType,
const absl::optional<NodeId>& RootAliasedType,
const absl::optional<MarkedSource>& MarkedSource) override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId nodeIdForNominalTypeNode(const NameId& type_name) const override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId recordNominalTypeNode(const NodeId& TypeNode,
const absl::optional<MarkedSource>& MarkedSource,
const absl::optional<NodeId>& Parent) override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId nodeIdForTsigmaNode(absl::Span<const NodeId> Params) const override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId recordTsigmaNode(const NodeId& TsigmaId,
@@ -1166,13 +1219,13 @@ class NullGraphObserver : public GraphObserver {
NodeId nodeIdForTappNode(const NodeId& TyconId,
absl::Span<const NodeId> Params) const override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
NodeId recordTappNode(const NodeId& TappId, const NodeId& TyconId,
absl::Span<const NodeId> Params,
unsigned FirstDefaultParam) override {
- return NodeId(getDefaultClaimToken(), "");
+ return NodeId::CreateUncompressed(getDefaultClaimToken(), "");
}
const ClaimToken* getDefaultClaimToken() const override {
diff --git a/kythe/cxx/indexer/cxx/IndexerASTHooks.cc b/kythe/cxx/indexer/cxx/IndexerASTHooks.cc
index 60519a2d1..38aebef9d 100644
--- a/kythe/cxx/indexer/cxx/IndexerASTHooks.cc
+++ b/kythe/cxx/indexer/cxx/IndexerASTHooks.cc
@@ -456,7 +456,7 @@ class PruneCheck {
}
}
}
- cleanup_id_ = CompressString(cleanup_id_);
+ cleanup_id_ = visitor_->Observer.CompressString(cleanup_id_);
}
Prunability can_prune_ = Prunability::kNone;
std::string cleanup_id_;
@@ -974,31 +974,38 @@ bool IndexerASTVisitor::VisitDecl(const clang::Decl* Decl) {
VisitComment(CommentOrNull, DCxt, DCID.value());
}
}
- if (const auto* CTPSD =
- dyn_cast_or_null<ClassTemplatePartialSpecializationDecl>(Decl)) {
- auto NodeId = BuildNodeIdForDecl(CTPSD);
- VisitAttributes(Decl, NodeId);
- if (CommentOrNull != nullptr) VisitComment(CommentOrNull, DCxt, NodeId);
- }
- if (const auto* FD = dyn_cast_or_null<FunctionDecl>(Decl)) {
- if (const auto* FTD = FD->getDescribedFunctionTemplate()) {
- auto NodeId = BuildNodeIdForDecl(FTD);
+ if (options_.AbsNodes) {
+ if (const auto* CTPSD =
+ dyn_cast_or_null<ClassTemplatePartialSpecializationDecl>(Decl)) {
+ auto NodeId = BuildNodeIdForDecl(CTPSD);
VisitAttributes(Decl, NodeId);
if (CommentOrNull != nullptr) VisitComment(CommentOrNull, DCxt, NodeId);
}
+ if (const auto* FD = dyn_cast_or_null<FunctionDecl>(Decl)) {
+ if (const auto* FTD = FD->getDescribedFunctionTemplate()) {
+ auto NodeId = BuildNodeIdForDecl(FTD);
+ VisitAttributes(Decl, NodeId);
+ if (CommentOrNull != nullptr)
+ VisitComment(CommentOrNull, DCxt, NodeId);
+ }
+ }
}
} else {
- if (const auto* VD = dyn_cast_or_null<VarDecl>(Decl)) {
- if (const auto* VTD = VD->getDescribedVarTemplate()) {
- auto NodeId = BuildNodeIdForDecl(VTD);
- VisitAttributes(VTD, NodeId);
- if (CommentOrNull != nullptr) VisitComment(CommentOrNull, DCxt, NodeId);
- }
- } else if (const auto* AD = dyn_cast_or_null<TypeAliasDecl>(Decl)) {
- if (const auto* TATD = AD->getDescribedAliasTemplate()) {
- auto NodeId = BuildNodeIdForDecl(TATD);
- VisitAttributes(TATD, NodeId);
- if (CommentOrNull != nullptr) VisitComment(CommentOrNull, DCxt, NodeId);
+ if (options_.AbsNodes) {
+ if (const auto* VD = dyn_cast_or_null<VarDecl>(Decl)) {
+ if (const auto* VTD = VD->getDescribedVarTemplate()) {
+ auto NodeId = BuildNodeIdForDecl(VTD);
+ VisitAttributes(VTD, NodeId);
+ if (CommentOrNull != nullptr)
+ VisitComment(CommentOrNull, DCxt, NodeId);
+ }
+ } else if (const auto* AD = dyn_cast_or_null<TypeAliasDecl>(Decl)) {
+ if (const auto* TATD = AD->getDescribedAliasTemplate()) {
+ auto NodeId = BuildNodeIdForDecl(TATD);
+ VisitAttributes(TATD, NodeId);
+ if (CommentOrNull != nullptr)
+ VisitComment(CommentOrNull, DCxt, NodeId);
+ }
}
}
auto NodeId = BuildNodeIdForDecl(Decl);
@@ -1108,13 +1115,13 @@ clang::SourceLocation GetImplicitlyInstantiatedTemplateLoc(
bool IndexerASTVisitor::ShouldIndex(const clang::Decl* Decl) {
// This function effectively returns true if:
- // - There is no TemplateInstanceExcludePathPattern specified.
+ // - There is no options_.TemplateInstanceExcludePathPattern specified.
// - `Decl` is not a template instantiation or specialization.
// - `Decl` is an explicit template instantiation or partial specialization.
// - `Decl` is an implicit template instantiation that appears in a
// concrete location (not a macro) with a path that is not matched by
- // TemplateInstanceExcludePathPattern.
- if (TemplateInstanceExcludePathPattern == nullptr) {
+ // options_.TemplateInstanceExcludePathPattern.
+ if (options_.TemplateInstanceExcludePathPattern == nullptr) {
return true;
}
auto loc = GetImplicitlyInstantiatedTemplateLoc(Decl);
@@ -1127,14 +1134,14 @@ bool IndexerASTVisitor::ShouldIndex(const clang::Decl* Decl) {
return true;
}
if (re2::RE2::FullMatch({file.data(), file.size()},
- *TemplateInstanceExcludePathPattern)) {
+ *options_.TemplateInstanceExcludePathPattern)) {
return false;
}
return true;
}
bool IndexerASTVisitor::TraverseDecl(clang::Decl* Decl) {
- if (ShouldStopIndexing()) {
+ if (options_.ShouldStopIndexing()) {
return false;
}
if (Decl == nullptr || !ShouldIndex(Decl)) {
@@ -1337,9 +1344,18 @@ bool IndexerASTVisitor::VisitMemberExpr(const clang::MemberExpr* E) {
// We still want to link the template args.
BuildTemplateArgumentList(E->template_arguments());
}
- if (DataflowEdges && !Job->InfluenceSets.empty()) {
+ if (options_.DataflowEdges && !Job->InfluenceSets.empty()) {
Job->InfluenceSets.back().insert(FieldDecl);
}
+ if (isa<clang::CXXMethodDecl>(FieldDecl)) {
+ if (const auto* semantic = AlternateSemanticForDecl(FieldDecl);
+ semantic != nullptr && semantic->node) {
+ Observer.recordSemanticDeclUseLocation(
+ RCC.value(), *(semantic->node), semantic->use_kind,
+ GraphObserver::Claimability::Unclaimable,
+ this->IsImplicit(RCC.value()));
+ }
+ }
}
}
return true;
@@ -1348,6 +1364,12 @@ bool IndexerASTVisitor::VisitMemberExpr(const clang::MemberExpr* E) {
bool IndexerASTVisitor::IndexConstructExpr(const clang::CXXConstructExpr* E,
const clang::TypeSourceInfo* TSI) {
if (const auto* Callee = E->getConstructor()) {
+ // If this constructor is inherited via a using declaration,
+ // references should point at the original. This mirrors the behavior
+ // for normal member functions.
+ if (const auto Inherited = Callee->getInheritedConstructor()) {
+ Callee = Inherited.getConstructor();
+ }
// Clang doesn't invoke VisitDeclRefExpr on constructors, so we
// must do so manually.
// TODO(zarko): What about static initializers? Do we blame these on the
@@ -1582,6 +1604,43 @@ bool IndexerASTVisitor::VisitCXXUnresolvedConstructExpr(
return true;
}
+bool IndexerASTVisitor::TraverseCXXOperatorCallExpr(
+ clang::CXXOperatorCallExpr* E) {
+ if (!options_.DataflowEdges ||
+ (!E->isAssignmentOp() && E->getOperator() != clang::OO_PlusPlus &&
+ E->getOperator() != clang::OO_MinusMinus))
+ return Base::TraverseCXXOperatorCallExpr(E);
+ if (!WalkUpFromCXXOperatorCallExpr(E)) return false;
+ auto arg_begin = E->arg_begin();
+ auto arg_end = E->arg_end();
+ if (arg_begin != arg_end && *arg_begin != nullptr) {
+ // `this` is the first argument in the case of a member function.
+ auto* lvhead = FindLValueHead(*arg_begin);
+ if (E->getOperator() == clang::OO_Equal) {
+ UsedAsWrite(lvhead);
+ } else {
+ UsedAsReadWrite(lvhead);
+ }
+ if (!TraverseStmt(*arg_begin)) return false;
+ auto scope_guard = PushScope(Job->InfluenceSets, {});
+ for (++arg_begin; arg_begin != arg_end; ++arg_begin) {
+ if (*arg_begin != nullptr && !TraverseStmt(*arg_begin)) return false;
+ }
+ if (auto* influenced = GetInfluencedDeclFromLValueHead(lvhead)) {
+ for (const auto* decl : Job->InfluenceSets.back()) {
+ Observer.recordInfluences(BuildNodeIdForDecl(decl),
+ BuildNodeIdForDecl(influenced));
+ }
+ if (E->getOperator() != clang::OO_Equal) {
+ Observer.recordInfluences(BuildNodeIdForDecl(influenced),
+ BuildNodeIdForDecl(influenced));
+ }
+ }
+ return true;
+ }
+ return Base::TraverseCXXOperatorCallExpr(E);
+}
+
bool IndexerASTVisitor::VisitCallExpr(const clang::CallExpr* E) {
clang::SourceRange SR = NormalizeRange(E->getSourceRange());
auto StmtId = BuildNodeIdForImplicitStmt(E);
@@ -1592,20 +1651,13 @@ bool IndexerASTVisitor::VisitCallExpr(const clang::CallExpr* E) {
for (const auto& S : Supports) {
S->InspectCallExpr(*this, E, RCC.value(), CalleeId);
}
- if (const auto* semantic = AlternateSemanticForDecl(Callee);
- semantic != nullptr && semantic->node) {
- Observer.recordSemanticDeclUseLocation(
- RCC.value(), *(semantic->node), semantic->use_kind,
- GraphObserver::Claimability::Unclaimable, IsImplicit(RCC.value()));
- }
-
} else if (const auto* CE = E->getCallee()) {
if (auto CalleeId = BuildNodeIdForExpr(CE, EmitRanges::Yes)) {
RecordCallEdges(RCC.value(), CalleeId.value());
}
}
}
- if (DataflowEdges) {
+ if (options_.DataflowEdges) {
if (!Job->InfluenceSets.empty() && E->getDirectCallee() != nullptr) {
Job->InfluenceSets.back().insert(E->getDirectCallee());
}
@@ -1770,15 +1822,17 @@ IndexerASTVisitor::BuildNodeIdForDeclContext(const clang::DeclContext* DC) {
if (llvm::isa<TranslationUnitDecl>(DCDecl)) {
return absl::nullopt;
}
- if (llvm::isa<ClassTemplatePartialSpecializationDecl>(DCDecl)) {
- return BuildNodeIdForDecl(DCDecl, 0);
- } else if (auto* CRD = dyn_cast<const clang::CXXRecordDecl>(DCDecl)) {
- if (const auto* CTD = CRD->getDescribedClassTemplate()) {
- return BuildNodeIdForDecl(DCDecl, 0);
- }
- } else if (auto* FD = dyn_cast<const clang::FunctionDecl>(DCDecl)) {
- if (FD->getDescribedFunctionTemplate()) {
+ if (options_.AbsNodes) {
+ if (llvm::isa<ClassTemplatePartialSpecializationDecl>(DCDecl)) {
return BuildNodeIdForDecl(DCDecl, 0);
+ } else if (auto* CRD = dyn_cast<const clang::CXXRecordDecl>(DCDecl)) {
+ if (const auto* CTD = CRD->getDescribedClassTemplate()) {
+ return BuildNodeIdForDecl(DCDecl, 0);
+ }
+ } else if (auto* FD = dyn_cast<const clang::FunctionDecl>(DCDecl)) {
+ if (FD->getDescribedFunctionTemplate()) {
+ return BuildNodeIdForDecl(DCDecl, 0);
+ }
}
}
return BuildNodeIdForDecl(DCDecl);
@@ -1885,6 +1939,15 @@ bool IndexerASTVisitor::VisitDeducedTemplateSpecializationTypePair(
bool IndexerASTVisitor::VisitAutoTypePair(clang::AutoTypeLoc TL,
const clang::AutoType* T) {
+ if (TL.getTypePtr()->isDecltypeAuto()) {
+ // For consistency with DecltypeTypeLoc below, only decorate the `decltype`
+ // keyword, even if Clang would normally attribute the entirety of
+ // `decltype(auto)`.
+ auto Range = TL.getSourceRange();
+ Range.setEnd(TL.getNameLoc());
+ RecordTypeSpellingLocation(T, Range);
+ return true;
+ }
RecordTypeLocSpellingLocation(TL, T);
return true;
}
@@ -1898,6 +1961,10 @@ bool IndexerASTVisitor::VisitSubstTemplateTypeParmTypeLoc(
}
bool IndexerASTVisitor::VisitDecltypeTypeLoc(clang::DecltypeTypeLoc TL) {
+ // Only decorate the `decltype` keyword, not the entire expression, by
+ // truncating the source range from (DecltypeLoc, RParenLoc) to just
+ // (DecltypeLoc, DecltypeLoc).
+ TL.setRParenLoc(TL.getDecltypeLoc());
RecordTypeLocSpellingLocation(TL);
return true;
}
@@ -1915,6 +1982,13 @@ bool IndexerASTVisitor::VisitTypedefTypeLoc(clang::TypedefTypeLoc TL) {
return true;
}
+bool IndexerASTVisitor::VisitUsingTypeLoc(clang::UsingTypeLoc TL) {
+ // Uses of using-declared types should match uses of other using-declared
+ // names and reference the underlying entity.
+ RecordTypeLocSpellingLocation(TL);
+ return true;
+}
+
bool IndexerASTVisitor::VisitInjectedClassNameTypeLoc(
clang::InjectedClassNameTypeLoc TL) {
RecordTypeLocSpellingLocation(TL);
@@ -2066,7 +2140,7 @@ bool IndexerASTVisitor::VisitInitListExpr(const clang::InitListExpr* ILE) {
}
bool IndexerASTVisitor::TraverseCallExpr(clang::CallExpr* CE) {
- if (!DataflowEdges) {
+ if (!options_.DataflowEdges) {
return Base::TraverseCallExpr(CE);
}
auto callee = CE->getDirectCallee();
@@ -2099,7 +2173,7 @@ bool IndexerASTVisitor::TraverseCallExpr(clang::CallExpr* CE) {
}
bool IndexerASTVisitor::TraverseReturnStmt(clang::ReturnStmt* RS) {
- if (!DataflowEdges) {
+ if (!options_.DataflowEdges) {
return Base::TraverseReturnStmt(RS);
}
if (auto rv = RS->getRetValue(); rv != nullptr && !Job->BlameStack.empty()) {
@@ -2117,7 +2191,7 @@ bool IndexerASTVisitor::TraverseReturnStmt(clang::ReturnStmt* RS) {
}
bool IndexerASTVisitor::TraverseVarDecl(clang::VarDecl* Decl) {
- if (!DataflowEdges) {
+ if (!options_.DataflowEdges) {
return Base::TraverseVarDecl(Decl);
}
auto scope_guard = PushScope(Job->InfluenceSets, {});
@@ -2132,7 +2206,14 @@ bool IndexerASTVisitor::TraverseVarDecl(clang::VarDecl* Decl) {
}
bool IndexerASTVisitor::TraverseFieldDecl(clang::FieldDecl* Decl) {
- if (!DataflowEdges) {
+ if (const auto* P = Decl->getParent(); P && P->isLambda()) {
+ // Don't traverse fields in the anonymous class used for lambda captures.
+ // They are implicit and end up ref'ing everything either to the init
+ // capture list (for explicit captures) or to the in-body use which
+ // caused the capture (for implicit captures).
+ return true;
+ }
+ if (!options_.DataflowEdges) {
return Base::TraverseFieldDecl(Decl);
}
auto scope_guard = PushScope(Job->InfluenceSets, {});
@@ -2149,7 +2230,7 @@ bool IndexerASTVisitor::TraverseFieldDecl(clang::FieldDecl* Decl) {
}
bool IndexerASTVisitor::TraverseBinaryOperator(clang::BinaryOperator* BO) {
- if (!DataflowEdges) {
+ if (!options_.DataflowEdges) {
return Base::TraverseBinaryOperator(BO);
}
if (BO->getOpcode() != clang::BO_Assign)
@@ -2176,7 +2257,7 @@ bool IndexerASTVisitor::TraverseBinaryOperator(clang::BinaryOperator* BO) {
bool IndexerASTVisitor::TraverseCompoundAssignOperator(
clang::CompoundAssignOperator* CAO) {
- if (!DataflowEdges) {
+ if (!options_.DataflowEdges) {
return Base::TraverseCompoundAssignOperator(CAO);
}
if (auto rhs = CAO->getRHS(), lhs = CAO->getLHS();
@@ -2202,7 +2283,7 @@ bool IndexerASTVisitor::TraverseCompoundAssignOperator(
}
bool IndexerASTVisitor::TraverseUnaryOperator(clang::UnaryOperator* UO) {
- if (!DataflowEdges) {
+ if (!options_.DataflowEdges) {
return Base::TraverseUnaryOperator(UO);
}
if (UO->getOpcode() != clang::UO_PostDec &&
@@ -2259,8 +2340,13 @@ NodeSet IndexerASTVisitor::RecordTypeLocSpellingLocation(clang::TypeLoc TL) {
NodeSet IndexerASTVisitor::RecordTypeLocSpellingLocation(
clang::TypeLoc Written, const clang::Type* Resolved) {
- if (auto RCC = ExpandedRangeInCurrentContext(Written.getSourceRange())) {
- if (auto Nodes = BuildNodeSetForType(Resolved)) {
+ return RecordTypeSpellingLocation(Resolved, Written.getSourceRange());
+}
+
+NodeSet IndexerASTVisitor::RecordTypeSpellingLocation(
+ const clang::Type* Type, clang::SourceRange Range) {
+ if (auto RCC = ExpandedRangeInCurrentContext(Range)) {
+ if (auto Nodes = BuildNodeSetForType(Type)) {
Observer.recordTypeSpellingLocation(
*RCC, Nodes.ForReference(), Nodes.claimability(), IsImplicit(*RCC));
return Nodes;
@@ -2322,13 +2408,22 @@ bool IndexerASTVisitor::VisitDeclRefOrIvarRefExpr(
if (auto RCC = RangeInCurrentContext(StmtId, Range)) {
GraphObserver::NodeId DeclId = BuildNodeIdForRefToDecl(FoundDecl);
RecordBlame(FoundDecl, *RCC);
- if (DataflowEdges) {
+ if (options_.DataflowEdges) {
if (!Job->InfluenceSets.empty() &&
(FoundDecl->getKind() == clang::Decl::Kind::Var ||
FoundDecl->getKind() == clang::Decl::Kind::ParmVar)) {
Job->InfluenceSets.back().insert(FoundDecl);
}
}
+ if (isa<clang::FunctionDecl>(FoundDecl)) {
+ if (const auto* semantic = AlternateSemanticForDecl(FoundDecl);
+ semantic != nullptr && semantic->node) {
+ Observer.recordSemanticDeclUseLocation(
+ RCC.value(), *(semantic->node), semantic->use_kind,
+ GraphObserver::Claimability::Unclaimable,
+ this->IsImplicit(RCC.value()));
+ }
+ }
Observer.recordSemanticDeclUseLocation(
*RCC, DeclId, UseKindFor(Expr),
GraphObserver::Claimability::Unclaimable, this->IsImplicit(*RCC));
@@ -2386,13 +2481,16 @@ bool IndexerASTVisitor::VisitVarDecl(const clang::VarDecl* Decl) {
auto Marks = MarkedSources.Generate(Decl);
SourceLocation DeclLoc = Decl->getLocation();
SourceRange NameRange = RangeForNameOfDeclaration(Decl);
- GraphObserver::NodeId BodyDeclNode(Observer.getDefaultClaimToken(), "");
- GraphObserver::NodeId DeclNode(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId BodyDeclNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId DeclNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
const clang::ASTTemplateArgumentListInfo* ArgsAsWritten = nullptr;
if (const auto* VTPSD =
dyn_cast<const clang::VarTemplatePartialSpecializationDecl>(Decl)) {
ArgsAsWritten = VTPSD->getTemplateArgsAsWritten();
- BodyDeclNode = BuildNodeIdForDecl(Decl, 0);
+ BodyDeclNode = options_.AbsNodes ? BuildNodeIdForDecl(Decl, 0)
+ : BuildNodeIdForDecl(Decl);
DeclNode = RecordTemplate(VTPSD, BodyDeclNode);
} else if (const auto* VTD = Decl->getDescribedVarTemplate()) {
CHECK(!isa<clang::VarTemplateSpecializationDecl>(VTD));
@@ -2484,8 +2582,8 @@ bool IndexerASTVisitor::VisitVarDecl(const clang::VarDecl* Decl) {
FileID NextDeclFile =
Observer.getSourceManager()->getFileID(NextDecl->getLocation());
// We should not point a completes edge from an abs node to a var node.
- GraphObserver::NodeId TargetDecl =
- BuildNodeIdForDecl(OuterTemplate ? OuterTemplate : NextDecl);
+ GraphObserver::NodeId TargetDecl = BuildNodeIdForDecl(
+ OuterTemplate && options_.AbsNodes ? OuterTemplate : NextDecl);
if (NameRangeInContext) {
Observer.recordCompletionRange(
NameRangeInContext.value(), TargetDecl,
@@ -2666,11 +2764,27 @@ bool IndexerASTVisitor::TraverseClassTemplateDecl(
// TraverseClassTemplate{Partial}SpecializationDecl will be called).
bool IndexerASTVisitor::TraverseClassTemplateSpecializationDecl(
clang::ClassTemplateSpecializationDecl* TD) {
+ // Differentiate between implicit instantiations and explicit instantiations
+ // based on the presence of TypeSourceInfo.
+ // See RecursiveASTVisitor::TraverseClassTemplateSpecializationDecl for more
+ // detail.
+ if (TypeSourceInfo* TSI = TD->getTypeAsWritten()) {
+ if (!TraverseTypeLoc(TSI->getTypeLoc())) {
+ return false;
+ }
+ }
+ if (!TraverseNestedNameSpecifierLoc(TD->getQualifierLoc())) {
+ return false;
+ }
+
auto Scope = std::make_tuple(
RestoreStack(Job->RangeContext),
RestoreValue(Job->UnderneathImplicitTemplateInstantiation));
+
// If this specialization was spelled out in the file, it has
- // physical ranges.
+ // physical ranges, but only for children. In all cases, if present
+ // the TypeSourceInfo and NestedNameSpecifierLoc are within the current
+ // RangeContext.
if (TD->getTemplateSpecializationKind() !=
clang::TSK_ExplicitSpecialization) {
Job->RangeContext.push_back(BuildNodeIdForDecl(TD));
@@ -2678,7 +2792,22 @@ bool IndexerASTVisitor::TraverseClassTemplateSpecializationDecl(
if (!TD->isExplicitInstantiationOrSpecialization()) {
Job->UnderneathImplicitTemplateInstantiation = true;
}
- return Base::TraverseClassTemplateSpecializationDecl(TD);
+ for (auto* Child : TD->decls()) {
+ if (!canIgnoreChildDeclWhileTraversingDeclContext(Child)) {
+ if (!TraverseDecl(Child)) {
+ return false;
+ }
+ }
+ }
+ return WalkUpFromClassTemplateSpecializationDecl(TD);
+}
+
+bool IndexerASTVisitor::TraverseClassTemplatePartialSpecializationDecl(
+ clang::ClassTemplatePartialSpecializationDecl* TD) {
+ // Implicit partial specializations don't happen, so we don't need
+ // to consider changing the Job->RangeContext stack.
+ auto Scope = PushScope(Job->TypeContext, TD->getTemplateParameters());
+ return Base::TraverseClassTemplatePartialSpecializationDecl(TD);
}
bool IndexerASTVisitor::TraverseVarTemplateSpecializationDecl(
@@ -2709,14 +2838,6 @@ bool IndexerASTVisitor::ForceTraverseVarTemplateSpecializationDecl(
return Base::TraverseVarTemplateSpecializationDecl(TD);
}
-bool IndexerASTVisitor::TraverseClassTemplatePartialSpecializationDecl(
- clang::ClassTemplatePartialSpecializationDecl* TD) {
- // Implicit partial specializations don't happen, so we don't need
- // to consider changing the Job->RangeContext stack.
- auto Scope = PushScope(Job->TypeContext, TD->getTemplateParameters());
- return Base::TraverseClassTemplatePartialSpecializationDecl(TD);
-}
-
bool IndexerASTVisitor::TraverseVarTemplateDecl(clang::VarTemplateDecl* TD) {
auto Scope = PushScope(Job->TypeContext, TD->getTemplateParameters());
if (!TraverseDecl(TD->getTemplatedDecl())) {
@@ -2870,9 +2991,12 @@ absl::optional<GraphObserver::Range> IndexerASTVisitor::RangeInCurrentContext(
GraphObserver::NodeId IndexerASTVisitor::RecordGenericClass(
const ObjCInterfaceDecl* IDecl, const ObjCTypeParamList* TPL,
const GraphObserver::NodeId& BodyId) {
- auto AbsId = BuildNodeIdForDecl(IDecl);
- Observer.recordAbsNode(AbsId);
- Observer.recordChildOfEdge(BodyId, AbsId);
+ GraphObserver::NodeId AbsId = BodyId;
+ if (options_.AbsNodes) {
+ AbsId = BuildNodeIdForDecl(IDecl);
+ Observer.recordAbsNode(AbsId);
+ Observer.recordChildOfEdge(BodyId, AbsId);
+ }
for (const ObjCTypeParamDecl* TP : *TPL) {
GraphObserver::NodeId TypeParamId = BuildNodeIdForDecl(TP);
@@ -2881,7 +3005,10 @@ GraphObserver::NodeId IndexerASTVisitor::RecordGenericClass(
// specific to this context, which is how it interacts with the generic type
// (BodyID). See VisitObjCTypeParamDecl for where we record this other
// information.
- Observer.recordParamEdge(AbsId, TP->getIndex(), TypeParamId);
+ if (options_.AbsNodes)
+ Observer.recordParamEdge(AbsId, TP->getIndex(), TypeParamId);
+ else
+ Observer.recordTParamEdge(AbsId, TP->getIndex(), TypeParamId);
}
return AbsId;
}
@@ -2889,29 +3016,45 @@ GraphObserver::NodeId IndexerASTVisitor::RecordGenericClass(
template <typename TemplateDeclish>
GraphObserver::NodeId IndexerASTVisitor::RecordTemplate(
const TemplateDeclish* Decl, const GraphObserver::NodeId& BodyDeclNode) {
- GraphObserver::NodeId DeclNode(BuildNodeIdForDecl(Decl));
- Observer.recordChildOfEdge(BodyDeclNode, DeclNode);
- Observer.recordAbsNode(DeclNode);
+ auto DeclNode = BodyDeclNode;
+ if (options_.AbsNodes) {
+ DeclNode = BuildNodeIdForDecl(Decl);
+ Observer.recordChildOfEdge(BodyDeclNode, DeclNode);
+ Observer.recordAbsNode(DeclNode);
+ }
for (const auto* ND : *Decl->getTemplateParameters()) {
- GraphObserver::NodeId ParamId(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId ParamId =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
unsigned ParamIndex = 0;
auto Marks = MarkedSources.Generate(ND);
if (const auto* TTPD = dyn_cast<clang::TemplateTypeParmDecl>(ND)) {
ParamId = BuildNodeIdForDecl(ND);
- Observer.recordAbsVarNode(ParamId, Marks.GenerateMarkedSource(ParamId));
+ if (options_.AbsNodes)
+ Observer.recordAbsVarNode(ParamId, Marks.GenerateMarkedSource(ParamId));
+ else
+ Observer.recordTVarNode(ParamId, Marks.GenerateMarkedSource(ParamId));
ParamIndex = TTPD->getIndex();
} else if (const auto* NTTPD =
dyn_cast<clang::NonTypeTemplateParmDecl>(ND)) {
ParamId = BuildNodeIdForDecl(ND);
- Observer.recordAbsVarNode(ParamId, Marks.GenerateMarkedSource(ParamId));
+ if (options_.AbsNodes)
+ Observer.recordAbsVarNode(ParamId, Marks.GenerateMarkedSource(ParamId));
+ else
+ Observer.recordTVarNode(ParamId, Marks.GenerateMarkedSource(ParamId));
ParamIndex = NTTPD->getIndex();
} else if (const auto* TTPD =
dyn_cast<clang::TemplateTemplateParmDecl>(ND)) {
// We make the external Abs the primary node for TTPD so that
// uses of the ParmDecl later on point at the Abs and not the wrapped
// AbsVar.
- GraphObserver::NodeId ParamBodyId = BuildNodeIdForDecl(ND, 0);
- Observer.recordAbsVarNode(ParamBodyId,
+ GraphObserver::NodeId ParamBodyId = options_.AbsNodes
+ ? BuildNodeIdForDecl(ND, 0)
+ : BuildNodeIdForDecl(ND);
+ if (options_.AbsNodes)
+ Observer.recordAbsVarNode(ParamBodyId,
+ Marks.GenerateMarkedSource(ParamBodyId));
+ else
+ Observer.recordTVarNode(ParamBodyId,
Marks.GenerateMarkedSource(ParamBodyId));
ParamId = RecordTemplate(TTPD, ParamBodyId);
ParamIndex = TTPD->getIndex();
@@ -2922,7 +3065,10 @@ GraphObserver::NodeId IndexerASTVisitor::RecordTemplate(
MaybeRecordDefinitionRange(
RangeInCurrentContext(Decl->isImplicit(), ParamId, Range), ParamId,
absl::nullopt);
- Observer.recordParamEdge(DeclNode, ParamIndex, ParamId);
+ if (options_.AbsNodes)
+ Observer.recordParamEdge(DeclNode, ParamIndex, ParamId);
+ else
+ Observer.recordTParamEdge(DeclNode, ParamIndex, ParamId);
}
return DeclNode;
}
@@ -2943,18 +3089,22 @@ bool IndexerASTVisitor::VisitRecordDecl(const clang::RecordDecl* Decl) {
auto Marks = MarkedSources.Generate(Decl);
SourceRange NameRange = RangeForNameOfDeclaration(Decl);
- GraphObserver::NodeId BodyDeclNode(Observer.getDefaultClaimToken(), "");
- GraphObserver::NodeId DeclNode(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId BodyDeclNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId DeclNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
const clang::ASTTemplateArgumentListInfo* ArgsAsWritten = nullptr;
if (const auto* CTPSD =
dyn_cast<const clang::ClassTemplatePartialSpecializationDecl>(Decl)) {
ArgsAsWritten = CTPSD->getTemplateArgsAsWritten();
- BodyDeclNode = BuildNodeIdForDecl(Decl, 0);
+ BodyDeclNode = options_.AbsNodes ? BuildNodeIdForDecl(Decl, 0)
+ : BuildNodeIdForDecl(Decl);
DeclNode = RecordTemplate(CTPSD, BodyDeclNode);
} else if (auto* CRD = dyn_cast<const clang::CXXRecordDecl>(Decl)) {
if (const auto* CTD = CRD->getDescribedClassTemplate()) {
CHECK(!isa<clang::ClassTemplateSpecializationDecl>(CRD));
- BodyDeclNode = BuildNodeIdForDecl(Decl, 0);
+ BodyDeclNode = options_.AbsNodes ? BuildNodeIdForDecl(Decl, 0)
+ : BuildNodeIdForDecl(Decl);
DeclNode = RecordTemplate(CTD, BodyDeclNode);
} else {
BodyDeclNode = BuildNodeIdForDecl(Decl);
@@ -3041,8 +3191,8 @@ bool IndexerASTVisitor::VisitRecordDecl(const clang::RecordDecl* Decl) {
Observer.getSourceManager()->getFileID(NextDecl->getLocation());
// We should not point a completes edge from an abs node to a record
// node.
- GraphObserver::NodeId TargetDecl =
- BuildNodeIdForDecl(OuterTemplate ? OuterTemplate : NextDecl);
+ GraphObserver::NodeId TargetDecl = BuildNodeIdForDecl(
+ OuterTemplate && options_.AbsNodes ? OuterTemplate : NextDecl);
Observer.recordCompletionRange(
NameRangeInContext.value(), TargetDecl,
NextDeclFile == DeclFile
@@ -3076,8 +3226,10 @@ bool IndexerASTVisitor::VisitFunctionDecl(clang::FunctionDecl* Decl) {
// definition is not, and a later use site uses the definition.
(void)AlternateSemanticForDecl(Decl);
auto Marks = MarkedSources.Generate(Decl);
- GraphObserver::NodeId InnerNode(Observer.getDefaultClaimToken(), "");
- GraphObserver::NodeId OuterNode(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId InnerNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId OuterNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
// There are five flavors of function (see TemplateOrSpecialization in
// FunctionDecl).
const clang::TemplateArgumentLoc* ArgsAsWritten = nullptr;
@@ -3089,7 +3241,8 @@ bool IndexerASTVisitor::VisitFunctionDecl(clang::FunctionDecl* Decl) {
SourceLocation TemplateKeywordLoc;
if (auto* FTD = Decl->getDescribedFunctionTemplate()) {
// Function template (inc. overloads)
- InnerNode = BuildNodeIdForDecl(Decl, 0);
+ InnerNode = options_.AbsNodes ? BuildNodeIdForDecl(Decl, 0)
+ : BuildNodeIdForDecl(Decl);
OuterNode = RecordTemplate(FTD, InnerNode);
TemplateKeywordLoc = FTD->getSourceRange().getBegin();
} else if (auto* MSI = Decl->getMemberSpecializationInfo()) {
@@ -3307,8 +3460,9 @@ bool IndexerASTVisitor::VisitFunctionDecl(clang::FunctionDecl* Decl) {
}
if (auto RCC = ExplicitRangeInCurrentContext(MemberSR)) {
const auto& ID = BuildNodeIdForRefToDecl(M);
- Observer.recordDeclUseLocation(
- RCC.value(), ID, GraphObserver::Claimability::Claimable,
+ Observer.recordSemanticDeclUseLocation(
+ RCC.value(), ID, GraphObserver::UseKind::kWrite,
+ GraphObserver::Claimability::Claimable,
this->IsImplicit(RCC.value()));
}
}
@@ -3333,8 +3487,8 @@ bool IndexerASTVisitor::VisitFunctionDecl(clang::FunctionDecl* Decl) {
// node that needs extra care.
auto InitIdent = LookupId.value().getRawIdentity() +
std::to_string(InitNumber);
- auto InitId = GraphObserver::NodeId(LookupId.value().getToken(),
- InitIdent);
+ auto InitId =
+ Observer.MakeNodeId(LookupId.value().getToken(), InitIdent);
RecordCallEdges(GraphObserver::Range(InitId), LookupId.value());
}
}
@@ -3364,8 +3518,8 @@ bool IndexerASTVisitor::VisitFunctionDecl(clang::FunctionDecl* Decl) {
NextDecl->getDescribedFunctionTemplate();
FileID NextDeclFile =
Observer.getSourceManager()->getFileID(NextDecl->getLocation());
- GraphObserver::NodeId TargetDecl =
- BuildNodeIdForDecl(OuterTemplate ? OuterTemplate : NextDecl);
+ GraphObserver::NodeId TargetDecl = BuildNodeIdForDecl(
+ OuterTemplate && options_.AbsNodes ? OuterTemplate : NextDecl);
Observer.recordCompletionRange(
NameRangeInContext.value(), TargetDecl,
@@ -3374,7 +3528,7 @@ bool IndexerASTVisitor::VisitFunctionDecl(clang::FunctionDecl* Decl) {
: GraphObserver::Specificity::Completes,
OuterNode);
- if (DataflowEdges) {
+ if (options_.DataflowEdges) {
Observer.recordInfluences(OuterNode, TargetDecl);
if (Decl->param_size() == NextDecl->param_size()) {
@@ -3425,7 +3579,11 @@ bool IndexerASTVisitor::VisitObjCTypeParamDecl(
const clang::ObjCTypeParamDecl* Decl) {
auto Marks = MarkedSources.Generate(Decl);
GraphObserver::NodeId TypeParamId = BuildNodeIdForDecl(Decl);
- Observer.recordAbsVarNode(TypeParamId,
+ if (options_.AbsNodes)
+ Observer.recordAbsVarNode(TypeParamId,
+ Marks.GenerateMarkedSource(TypeParamId));
+ else
+ Observer.recordTVarNode(TypeParamId,
Marks.GenerateMarkedSource(TypeParamId));
SourceRange TypeSR = RangeForNameOfDeclaration(Decl);
MaybeRecordDefinitionRange(
@@ -3617,19 +3775,21 @@ bool IndexerASTVisitor::AddNameToStream(llvm::raw_string_ostream& Ostream,
void IndexerASTVisitor::AssignUSR(const GraphObserver::NodeId& TargetNode,
const clang::NamedDecl* ND) {
- if (UsrByteSize <= 0 || Job->UnderneathImplicitTemplateInstantiation) return;
+ if (options_.UsrByteSize <= 0 || Job->UnderneathImplicitTemplateInstantiation)
+ return;
const auto* DC = ND->getDeclContext();
if (DC->isFunctionOrMethod()) return;
llvm::SmallString<128> Usr;
if (clang::index::generateUSRForDecl(ND, Usr)) return;
- Observer.assignUsr(TargetNode, Usr, UsrByteSize);
+ Observer.assignUsr(TargetNode, Usr, options_.UsrByteSize);
}
GraphObserver::NameId IndexerASTVisitor::BuildNameIdForDecl(
const clang::Decl* Decl) {
GraphObserver::NameId Id;
Id.EqClass = BuildNameEqClassForDecl(Decl);
- if (!Verbosity && !const_cast<clang::Decl*>(Decl)->isLocalExternDecl() &&
+ if (!options_.Verbosity &&
+ !const_cast<clang::Decl*>(Decl)->isLocalExternDecl() &&
Decl->getParentFunctionOrMethod() != nullptr) {
Id.Hidden = true;
}
@@ -3714,13 +3874,13 @@ GraphObserver::NameId IndexerASTVisitor::BuildNameIdForDecl(
GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
const clang::Decl* Decl, unsigned Index) {
GraphObserver::NodeId BaseId(BuildNodeIdForDecl(Decl));
- return GraphObserver::NodeId(
+ return Observer.MakeNodeId(
BaseId.getToken(), BaseId.getRawIdentity() + "." + std::to_string(Index));
}
absl::optional<GraphObserver::NodeId>
IndexerASTVisitor::BuildNodeIdForImplicitStmt(const clang::Stmt* Stmt) {
- if (!Verbosity) {
+ if (!options_.Verbosity) {
return absl::nullopt;
}
// Do a quickish test to see if the Stmt is implicit.
@@ -3735,7 +3895,7 @@ IndexerASTVisitor::BuildNodeIdForImplicitStmt(const clang::Stmt* Stmt) {
Ostream << node << ".";
}
}
- return GraphObserver::NodeId(DeclId.getToken(), NewIdent);
+ return Observer.MakeNodeId(DeclId.getToken(), NewIdent);
}
return absl::nullopt;
}
@@ -3800,8 +3960,8 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
}
}
Ostream << "#builtin";
- GraphObserver::NodeId Id(Observer.getClaimTokenForBuiltin(),
- Ostream.str());
+ GraphObserver::NodeId Id = Observer.MakeNodeId(
+ Observer.getClaimTokenForBuiltin(), Ostream.str());
DeclToNodeId.insert({Decl, Id});
return Id;
}
@@ -3809,7 +3969,8 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
if (const auto* BTD = dyn_cast<BuiltinTemplateDecl>(Decl)) {
Ostream << "#builtin";
- GraphObserver::NodeId Id(Observer.getClaimTokenForBuiltin(), Ostream.str());
+ GraphObserver::NodeId Id =
+ Observer.MakeNodeId(Observer.getClaimTokenForBuiltin(), Ostream.str());
DeclToNodeId.insert({Decl, Id});
return Id;
}
@@ -3826,7 +3987,7 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
} else if (const auto* NS = dyn_cast<NamespaceDecl>(Decl)) {
// Namespaces are named according to their NameIDs.
Ostream << "#namespace";
- GraphObserver::NodeId Id(
+ GraphObserver::NodeId Id = Observer.MakeNodeId(
NS->isAnonymousNamespace()
? Observer.getAnonymousNamespaceClaimToken(NS->getLocation())
: Observer.getNamespaceClaimToken(NS->getLocation()),
@@ -3907,14 +4068,14 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
if (const auto* Rec = dyn_cast<clang::RecordDecl>(Decl)) {
if (Rec->getDefinition() == Rec && Rec->getDeclName()) {
Ostream << "#" << HashToString(Hash(Rec));
- GraphObserver::NodeId Id(Token, Ostream.str());
+ GraphObserver::NodeId Id = Observer.MakeNodeId(Token, Ostream.str());
DeclToNodeId.insert({Decl, Id});
return Id;
}
} else if (const auto* Enum = dyn_cast<clang::EnumDecl>(Decl)) {
if (Enum->getDefinition() == Enum) {
Ostream << "#" << HashToString(Hash(Enum));
- GraphObserver::NodeId Id(Token, Ostream.str());
+ GraphObserver::NodeId Id = Observer.MakeNodeId(Token, Ostream.str());
DeclToNodeId.insert({Decl, Id});
return Id;
}
@@ -3922,7 +4083,7 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
if (const auto* E = dyn_cast<clang::EnumDecl>(ECD->getDeclContext())) {
if (E->getDefinition() == E) {
Ostream << "#" << HashToString(Hash(E));
- GraphObserver::NodeId Id(Token, Ostream.str());
+ GraphObserver::NodeId Id = Observer.MakeNodeId(Token, Ostream.str());
DeclToNodeId.insert({Decl, Id});
return Id;
}
@@ -3964,7 +4125,7 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDecl(
} else {
Ostream << "invalid";
}
- GraphObserver::NodeId Id(Token, Ostream.str());
+ GraphObserver::NodeId Id = Observer.MakeNodeId(Token, Ostream.str());
DeclToNodeId.insert({Decl, Id});
return Id;
}
@@ -4002,19 +4163,23 @@ IndexerASTVisitor::BuildNodeIdForTemplateName(const clang::TemplateName& Name) {
// The names for type alias types are the same for type alias nodes.
return BuildNodeIdForTypedefNameDecl(TAlias);
} else {
- CHECK(IgnoreUnimplemented)
+ CHECK(options_.IgnoreUnimplemented)
<< "Unknown case in BuildNodeIdForTemplateName";
return absl::nullopt;
}
} else if (const auto* FD = dyn_cast<FunctionDecl>(UnderlyingDecl)) {
// Direct references to function templates to the outer function
// template shell.
- return BuildNodeIdForDecl(Name.getAsTemplateDecl());
+ const clang::NamedDecl* decl = FD;
+ if (options_.AbsNodes) decl = Name.getAsTemplateDecl();
+ return BuildNodeIdForDecl(decl);
} else if (const auto* VD = dyn_cast<VarDecl>(UnderlyingDecl)) {
// Direct references to variable templates to the appropriate
// template decl (may be a partial specialization or the
// primary template).
- return BuildNodeIdForDecl(Name.getAsTemplateDecl());
+ const clang::NamedDecl* decl = VD;
+ if (options_.AbsNodes) decl = Name.getAsTemplateDecl();
+ return BuildNodeIdForDecl(decl);
} else {
LOG(FATAL) << "Unexpected UnderlyingDecl";
}
@@ -4025,28 +4190,31 @@ IndexerASTVisitor::BuildNodeIdForTemplateName(const clang::TemplateName& Name) {
}
}
case TemplateName::OverloadedTemplate:
- CHECK(IgnoreUnimplemented) << "TN.OverloadedTemplate";
+ CHECK(options_.IgnoreUnimplemented) << "TN.OverloadedTemplate";
return absl::nullopt;
case TemplateName::AssumedTemplate:
- CHECK(IgnoreUnimplemented) << "TN.AssumedTemplate";
+ CHECK(options_.IgnoreUnimplemented) << "TN.AssumedTemplate";
return absl::nullopt;
case TemplateName::QualifiedTemplate:
- CHECK(IgnoreUnimplemented) << "TN.QualifiedTemplate";
+ CHECK(options_.IgnoreUnimplemented) << "TN.QualifiedTemplate";
return absl::nullopt;
case TemplateName::DependentTemplate:
- CHECK(IgnoreUnimplemented) << "TN.DependentTemplate";
+ CHECK(options_.IgnoreUnimplemented) << "TN.DependentTemplate";
return absl::nullopt;
case TemplateName::SubstTemplateTemplateParm:
- CHECK(IgnoreUnimplemented) << "TN.SubstTemplateTemplateParmParm";
+ CHECK(options_.IgnoreUnimplemented) << "TN.SubstTemplateTemplateParmParm";
return absl::nullopt;
case TemplateName::SubstTemplateTemplateParmPack:
- CHECK(IgnoreUnimplemented) << "TN.SubstTemplateTemplateParmPack";
+ CHECK(options_.IgnoreUnimplemented) << "TN.SubstTemplateTemplateParmPack";
+ return absl::nullopt;
+ case TemplateName::UsingTemplate:
+ CHECK(options_.IgnoreUnimplemented) << "TN.UsingTemplate";
return absl::nullopt;
case TemplateName::UsingTemplate:
CHECK(options_.IgnoreUnimplemented) << "TN.UsingTemplate";
return absl::nullopt;
}
- CHECK(IgnoreUnimplemented)
+ CHECK(options_.IgnoreUnimplemented)
<< "Unexpected TemplateName kind: " << Name.getKind();
return absl::nullopt;
}
@@ -4056,7 +4224,7 @@ bool IndexerASTVisitor::TraverseNestedNameSpecifierLoc(
if (!NNS) {
return true;
}
- if (!Verbosity) {
+ if (!options_.Verbosity) {
return Base::TraverseNestedNameSpecifierLoc(NNS);
}
switch (NNS.getNestedNameSpecifier()->getKind()) {
@@ -4102,12 +4270,13 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForDependentName(
Ostream << "(invalid)";
}
Ostream << "::";
- if (auto Name = GetDeclarationName(Identifier, IgnoreUnimplemented)) {
+ if (auto Name =
+ GetDeclarationName(Identifier, options_.IgnoreUnimplemented)) {
Ostream << *Name;
} else {
Ostream << "(invalid)";
}
- return GraphObserver::NodeId(Observer.getDefaultClaimToken(), Ostream.str());
+ return Observer.MakeNodeId(Observer.getDefaultClaimToken(), Ostream.str());
}
absl::optional<GraphObserver::NodeId>
@@ -4133,7 +4302,7 @@ IndexerASTVisitor::RecordParamEdgesForDependentName(
return DId;
}
}
- CHECK(IgnoreUnimplemented) << "NNS::Identifier";
+ CHECK(options_.IgnoreUnimplemented) << "NNS::Identifier";
return absl::nullopt;
case NestedNameSpecifier::Namespace:
// TODO(zarko): Emit some representation to back this node ID.
@@ -4151,7 +4320,7 @@ IndexerASTVisitor::RecordParamEdgesForDependentName(
absl::optional<GraphObserver::NodeId>
IndexerASTVisitor::RecordLookupEdgeForDependentName(
const GraphObserver::NodeId& DId, const clang::DeclarationName& Name) {
- if (auto Lookup = GetDeclarationName(Name, IgnoreUnimplemented)) {
+ if (auto Lookup = GetDeclarationName(Name, options_.IgnoreUnimplemented)) {
Observer.recordLookupNode(DId, *Lookup);
return DId;
}
@@ -4188,16 +4357,16 @@ IndexerASTVisitor::BuildNodeIdForNestedNameSpecifier(
}
return absl::nullopt;
case NestedNameSpecifier::TypeSpecWithTemplate:
- CHECK(IgnoreUnimplemented) << "NNS::TypeSpecWithTemplate";
+ CHECK(options_.IgnoreUnimplemented) << "NNS::TypeSpecWithTemplate";
return absl::nullopt;
case NestedNameSpecifier::Global:
- CHECK(IgnoreUnimplemented) << "NNS::Global";
+ CHECK(options_.IgnoreUnimplemented) << "NNS::Global";
return absl::nullopt;
case NestedNameSpecifier::Super:
- CHECK(IgnoreUnimplemented) << "NNS::Super";
+ CHECK(options_.IgnoreUnimplemented) << "NNS::Super";
return absl::nullopt;
}
- CHECK(IgnoreUnimplemented) << "Unexpected NestedNameSpecifier kind.";
+ CHECK(options_.IgnoreUnimplemented) << "Unexpected NestedNameSpecifier kind.";
return absl::nullopt;
}
@@ -4206,7 +4375,7 @@ IndexerASTVisitor::RecordEdgesForDependentName(
const clang::NestedNameSpecifierLoc& NNSLoc,
const clang::DeclarationName& Id, const clang::SourceLocation IdLoc,
const absl::optional<GraphObserver::NodeId>& Root) {
- if (!Verbosity) {
+ if (!options_.Verbosity) {
return absl::nullopt;
}
if (auto IdOut = RecordParamEdgesForDependentName(
@@ -4222,7 +4391,7 @@ GraphObserver::NodeId IndexerASTVisitor::BuildNodeIdForSpecialTemplateArgument(
std::string Identity;
llvm::raw_string_ostream Ostream(Identity);
Ostream << Id << "#sta";
- return GraphObserver::NodeId(Observer.getDefaultClaimToken(), Ostream.str());
+ return Observer.MakeNodeId(Observer.getDefaultClaimToken(), Ostream.str());
}
absl::optional<GraphObserver::NodeId>
@@ -4232,7 +4401,7 @@ IndexerASTVisitor::BuildNodeIdForTemplateExpansion(clang::TemplateName Name) {
absl::optional<GraphObserver::NodeId> IndexerASTVisitor::BuildNodeIdForExpr(
const clang::Expr* Expr, EmitRanges ER) {
- if (!Verbosity || Expr == nullptr) {
+ if (!options_.Verbosity || Expr == nullptr) {
return absl::nullopt;
}
clang::Expr::EvalResult Result;
@@ -4262,7 +4431,7 @@ absl::optional<GraphObserver::NodeId> IndexerASTVisitor::BuildNodeIdForExpr(
IsBindingSite = true;
}
auto ResultId =
- GraphObserver::NodeId(Observer.getDefaultClaimToken(), Ostream.str());
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), Ostream.str());
if (ER == EmitRanges::Yes && RCC) {
if (IsBindingSite) {
Observer.recordDefinitionBindingRange(RCC.value(), ResultId);
@@ -4369,8 +4538,15 @@ NodeSet IndexerASTVisitor::BuildNodeSetForRecord(const clang::RecordType& T) {
}
}
const auto* SpecDecl = Spec->getSpecializedTemplate();
+ const clang::NamedDecl* SpecFocus = SpecDecl;
+ if (!options_.AbsNodes) {
+ if (SpecDecl->getTemplatedDecl()->getDefinition())
+ SpecFocus = SpecDecl->getTemplatedDecl()->getDefinition();
+ else
+ SpecFocus = SpecDecl->getTemplatedDecl();
+ }
NodeId DeclId =
- Observer.recordTappNode(BuildNodeIdForDecl(SpecDecl), TemplateArgs);
+ Observer.recordTappNode(BuildNodeIdForDecl(SpecFocus), TemplateArgs);
if (SpecDecl->getTemplatedDecl()->getDefinition()) {
return {DeclId, Claimability::Unclaimable};
} else {
@@ -4386,7 +4562,9 @@ NodeSet IndexerASTVisitor::BuildNodeSetForRecord(const clang::RecordType& T) {
NodeSet IndexerASTVisitor::BuildNodeSetForInjectedClassName(
const clang::InjectedClassNameType& T) {
// TODO(zarko): Replace with logic that uses InjectedType.
- return BuildNodeSetForNonSpecializedRecordDecl(T.getDecl());
+ return options_.AbsNodes
+ ? BuildNodeSetForNonSpecializedRecordDecl(T.getDecl())
+ : BuildNodeIdForDecl(T.getDecl());
}
NodeSet IndexerASTVisitor::BuildNodeSetForTemplateTypeParm(
@@ -4488,16 +4666,16 @@ NodeSet IndexerASTVisitor::BuildNodeSetForDependentSizedArray(
return NodeSet::Empty();
}
-NodeSet IndexerASTVisitor::BuildNodeSetForExtInt(const clang::ExtIntType& T) {
+NodeSet IndexerASTVisitor::BuildNodeSetForBitInt(const clang::BitIntType& T) {
return Observer.getNodeIdForBuiltinType(absl::StrCat(
- T.isUnsigned() ? "unsigned _ExtInt" : "_ExtInt", "#", T.getNumBits()));
+ T.isUnsigned() ? "unsigned _BitInt" : "_BitInt", "#", T.getNumBits()));
}
-NodeSet IndexerASTVisitor::BuildNodeSetForDependentExtInt(
- const clang::DependentExtIntType& T) {
+NodeSet IndexerASTVisitor::BuildNodeSetForDependentBitInt(
+ const clang::DependentBitIntType& T) {
if (auto ExprID = BuildNodeIdForExpr(T.getNumBitsExpr(), EmitRanges::No)) {
return ApplyBuiltinTypeConstructor(
- T.isUnsigned() ? "unsigned _ExtInt" : "_ExtInt", *ExprID);
+ T.isUnsigned() ? "unsigned _BitInt" : "_BitInt", *ExprID);
}
return NodeSet::Empty();
}
@@ -4543,6 +4721,10 @@ NodeSet IndexerASTVisitor::BuildNodeSetForElaborated(
return BuildNodeSetForType(T.getNamedType());
}
+NodeSet IndexerASTVisitor::BuildNodeSetForUsing(const clang::UsingType& T) {
+ return BuildNodeSetForType(T.getUnderlyingType());
+}
+
NodeSet IndexerASTVisitor::BuildNodeSetForTypedef(const clang::TypedefType& T) {
// TODO(zarko): Return canonicalized versions as well.
GraphObserver::NameId AliasID = BuildNameIdForDecl(T.getDecl());
@@ -4717,14 +4899,14 @@ IndexerASTVisitor::FindTemplateTypeParmTypeDecl(
if (auto* Decl = T.getDecl()) {
return Decl;
}
- LOG(INFO) << "Immediate TemplateTypeParmDecl not found, falling back to "
- "TypeContext";
+ VLOG(2) << "Immediate TemplateTypeParmDecl not found, falling back to "
+ "TypeContext";
if (T.getDepth() < Job->TypeContext.size() &&
T.getIndex() < Job->TypeContext[T.getDepth()]->size()) {
return cast<clang::TemplateTypeParmDecl>(
Job->TypeContext[T.getDepth()]->getParam(T.getIndex()));
}
- LOG(ERROR) << "Unable to find TemplateTypeParmDecl for TemplateTypeParmType";
+ VLOG(1) << "Unable to find TemplateTypeParmDecl for TemplateTypeParmType";
return nullptr;
}
@@ -4794,7 +4976,7 @@ NodeSet IndexerASTVisitor::BuildNodeSetForTypeInternal(const clang::Type& T) {
// clang/AST/TypeNodes.def.
#define UNSUPPORTED_CLANG_TYPE(t) \
case clang::Type::t: \
- if (IgnoreUnimplemented) { \
+ if (options_.IgnoreUnimplemented) { \
return NodeSet::Empty(); \
} else { \
LOG(FATAL) << "Type::" #t " unsupported"; \
@@ -4830,6 +5012,7 @@ NodeSet IndexerASTVisitor::BuildNodeSetForTypeInternal(const clang::Type& T) {
DELEGATE_TYPE(Typedef);
DELEGATE_TYPE(Decltype);
DELEGATE_TYPE(Elaborated);
+ DELEGATE_TYPE(Using);
// "Within an instantiated template, all template type parameters have
// been replaced with these. They are used solely to record that a type
// was originally written as a template type parameter; therefore they are
@@ -4842,8 +5025,9 @@ NodeSet IndexerASTVisitor::BuildNodeSetForTypeInternal(const clang::Type& T) {
DELEGATE_TYPE(TemplateSpecialization);
DELEGATE_TYPE(Attributed);
DELEGATE_TYPE(DependentAddressSpace);
- DELEGATE_TYPE(ExtInt);
- DELEGATE_TYPE(DependentExtInt);
+ DELEGATE_TYPE(BitInt);
+ DELEGATE_TYPE(DependentBitInt);
+ UNSUPPORTED_CLANG_TYPE(BTFTagAttributed);
UNSUPPORTED_CLANG_TYPE(DependentTemplateSpecialization);
UNSUPPORTED_CLANG_TYPE(Complex);
UNSUPPORTED_CLANG_TYPE(VariableArray);
@@ -5203,13 +5387,16 @@ bool IndexerASTVisitor::VisitObjCInterfaceDecl(
const clang::ObjCInterfaceDecl* Decl) {
auto Marks = MarkedSources.Generate(Decl);
SourceRange NameRange = RangeForNameOfDeclaration(Decl);
- GraphObserver::NodeId BodyDeclNode(Observer.getDefaultClaimToken(), "");
- GraphObserver::NodeId DeclNode(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId BodyDeclNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
+ GraphObserver::NodeId DeclNode =
+ Observer.MakeNodeId(Observer.getDefaultClaimToken(), "");
// If we have type arguments, treat this as a generic type and indirect
// through an abs node.
if (const auto* TPL = Decl->getTypeParamList()) {
- BodyDeclNode = BuildNodeIdForDecl(Decl, 0);
+ BodyDeclNode = options_.AbsNodes ? BuildNodeIdForDecl(Decl, 0)
+ : BuildNodeIdForDecl(Decl);
DeclNode = RecordGenericClass(Decl, TPL, BodyDeclNode);
} else {
BodyDeclNode = BuildNodeIdForDecl(Decl);
@@ -5710,8 +5897,30 @@ void IndexerASTVisitor::LogErrorWithASTDump(absl::string_view msg,
LOG(ERROR) << msg << " :" << std::endl << s;
}
+void IndexerASTVisitor::LogErrorWithASTDump(absl::string_view msg,
+ const clang::Type* Type) const {
+ std::string s;
+ llvm::raw_string_ostream ss(s);
+ Type->dump(ss, Context);
+ LOG(ERROR) << msg << " :" << std::endl << s;
+}
+
+void IndexerASTVisitor::LogErrorWithASTDump(absl::string_view msg,
+ clang::QualType Type) const {
+ std::string s;
+ llvm::raw_string_ostream ss(s);
+ Type.dump(ss, Context);
+ LOG(ERROR) << msg << " :" << std::endl << s;
+}
+
+void IndexerASTVisitor::LogErrorWithASTDump(absl::string_view msg,
+ clang::TypeLoc Type) const {
+ // TODO(shahms): Include the location range.
+ LogErrorWithASTDump(msg, Type.getType());
+}
+
void IndexerASTVisitor::PrepareAlternateSemanticCache() {
- if (!DataflowEdges) return;
+ if (!options_.DataflowEdges) return;
for (const auto& meta : Observer.GetMetadataFiles()) {
for (const auto& rule : meta.second->rules()) {
GraphObserver::UseKind kind = GraphObserver::UseKind::kUnknown;
@@ -5740,12 +5949,19 @@ void IndexerASTVisitor::PrepareAlternateSemanticCache() {
kythe::IndexerASTVisitor::AlternateSemantic*
IndexerASTVisitor::AlternateSemanticForDecl(const clang::Decl* decl) {
- if (!DataflowEdges) return nullptr;
+ if (!options_.DataflowEdges) return nullptr;
const auto* canonical = decl->getCanonicalDecl();
if (auto found = alternate_semantics_.find(canonical);
found != alternate_semantics_.end()) {
return found->second;
}
+ if (const auto* fn = llvm::dyn_cast<clang::FunctionDecl>(decl)) {
+ if (const auto* pt = fn->getPrimaryTemplate()) {
+ if (auto* semantic = AlternateSemanticForDecl(pt)) {
+ return semantic;
+ }
+ }
+ }
const auto* named = llvm::dyn_cast<clang::NamedDecl>(decl);
// No sense in annotating an unnamed declaration. We still deal in `Decl`s
// in this function, though, because bare `Decl`s appear in many contexts
@@ -5758,6 +5974,17 @@ IndexerASTVisitor::AlternateSemanticForDecl(const clang::Decl* decl) {
alternate_semantics_[canonical] = &cached->second;
return &cached->second;
}
+ // Last-ditch effort: see if we haven't cached the canonical definition.
+ if (const auto* canon_name = llvm::dyn_cast<clang::NamedDecl>(canonical)) {
+ auto canon_range = RangeForNameOfDeclaration(canon_name);
+ if (auto cached = alternate_semantic_cache_.find(
+ {canon_range.getBegin().getRawEncoding(),
+ canon_range.getEnd().getRawEncoding()});
+ cached != alternate_semantic_cache_.end()) {
+ alternate_semantics_[canonical] = &cached->second;
+ return &cached->second;
+ }
+ }
return nullptr;
}
diff --git a/kythe/cxx/indexer/cxx/IndexerASTHooks.h b/kythe/cxx/indexer/cxx/IndexerASTHooks.h
index 0f7132343..a75a06247 100644
--- a/kythe/cxx/indexer/cxx/IndexerASTHooks.h
+++ b/kythe/cxx/indexer/cxx/IndexerASTHooks.h
@@ -26,6 +26,7 @@
#include "GraphObserver.h"
#include "IndexerLibrarySupport.h"
+#include "absl/base/attributes.h"
#include "absl/container/flat_hash_map.h"
#include "absl/memory/memory.h"
#include "absl/strings/str_join.h"
@@ -85,6 +86,12 @@ enum EmitDataflowEdges : bool {
Yes = true ///< Emit dataflow edges.
};
+/// \brief Specifies whether to use abs nodes.
+enum UseAbsNodes : bool {
+ Abs = true, ///< Use abs nodes.
+ NoAbs = false ///< Don't use abs nodes.
+};
+
/// Adds brackets to Text to define anchor locations (escaping existing ones)
/// and sorts Anchors such that the ith Anchor corresponds to the ith opening
/// bracket. Drops empty or negative-length spans.
@@ -93,34 +100,76 @@ void InsertAnchorMarks(std::string& Text, std::vector<MiniAnchor>& Anchors);
/// \brief Used internally to check whether parts of the AST can be ignored.
class PruneCheck;
+/// \brief Options that control how the indexer behaves.
+struct IndexerOptions {
+ /// \brief The directory to normalize paths against. Must be absolute.
+ std::string EffectiveWorkingDirectory = "/";
+ /// \brief Whether to allow access to the raw filesystem.
+ bool AllowFSAccess = false;
+ /// \brief Whether to drop data found to be template instantiation
+ /// independent.
+ bool DropInstantiationIndependentData = false;
+ /// \brief A function that is called as the indexer enters and exits various
+ /// phases of execution (in strict LIFO order).
+ ProfilingCallback ReportProfileEvent = [](const char*, ProfilingEvent) {};
+ /// \brief Whether to use the CompilationUnit VName corpus as the default
+ /// corpus.
+ bool UseCompilationCorpusAsDefault = false;
+ /// \brief Whether we should stop on missing cases or continue on.
+ BehaviorOnUnimplemented IgnoreUnimplemented = BehaviorOnUnimplemented::Abort;
+ /// \brief Whether we should visit template instantiations.
+ BehaviorOnTemplates TemplateMode = BehaviorOnTemplates::VisitInstantiations;
+ /// \brief Whether we should emit all data.
+ Verbosity Verbosity = kythe::Verbosity::Classic;
+ /// \brief Should we emit documentation for forward class decls in ObjC?
+ BehaviorOnFwdDeclComments ObjCFwdDocs = BehaviorOnFwdDeclComments::Emit;
+ /// \brief Should we emit documentation for forward decls in C++?
+ BehaviorOnFwdDeclComments CppFwdDocs = BehaviorOnFwdDeclComments::Emit;
+ /// \return true if we should stop indexing.
+ std::function<bool()> ShouldStopIndexing = [] { return false; };
+ /// \brief The number of (raw) bytes to use to represent a USR. If 0,
+ /// no USRs will be recorded.
+ int UsrByteSize = 0;
+ /// \brief Controls whether dataflow edges are emitted.
+ EmitDataflowEdges DataflowEdges = EmitDataflowEdges::No;
+ /// \brief Controls whether abs nodes are emitted.
+ UseAbsNodes AbsNodes = UseAbsNodes::Abs;
+ /// \brief if nonempty, the pattern to match a path against to see whether
+ /// it should be excluded from template instance indexing.
+ std::shared_ptr<re2::RE2> TemplateInstanceExcludePathPattern = nullptr;
+ /// \param Worklist A function that generates a new worklist for the given
+ /// visitor.
+ std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
+ CreateWorklist = [](IndexerASTVisitor* indexer) {
+ return IndexerWorklist::CreateDefaultWorklist(indexer);
+ };
+ /// \brief Notified each time a semantic signature is hashed.
+ HashRecorder* HashRecorder = nullptr;
+};
+
/// \brief An AST visitor that extracts information for a translation unit and
/// writes it to a `GraphObserver`.
class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
using Base = RecursiveTypeVisitor;
public:
- IndexerASTVisitor(clang::ASTContext& C, BehaviorOnUnimplemented B,
- BehaviorOnTemplates T, Verbosity V,
- BehaviorOnFwdDeclComments ObjC,
- BehaviorOnFwdDeclComments Cpp, const LibrarySupports& S,
- clang::Sema& Sema, std::function<bool()> ShouldStopIndexing,
- GraphObserver* GO = nullptr, int UsrByteSize = 0,
- EmitDataflowEdges EDE = EmitDataflowEdges::No,
- std::shared_ptr<re2::RE2> TIEPP = nullptr)
- : IgnoreUnimplemented(B),
- TemplateMode(T),
- Verbosity(V),
- ObjCFwdDocs(ObjC),
- CppFwdDocs(Cpp),
- Observer(GO ? *GO : NullObserver),
+ IndexerASTVisitor(clang::ASTContext& C, const LibrarySupports& S,
+ clang::Sema& Sema,
+ const IndexerOptions& IO ABSL_ATTRIBUTE_LIFETIME_BOUND,
+ GraphObserver* GO = nullptr)
+ : Observer(GO ? *GO : NullObserver),
Context(C),
Supports(S),
Sema(Sema),
MarkedSources(&Sema, &Observer),
- ShouldStopIndexing(std::move(ShouldStopIndexing)),
- UsrByteSize(UsrByteSize),
- DataflowEdges(EDE),
- TemplateInstanceExcludePathPattern(TIEPP) {}
+ options_(IO),
+ Hash(
+ [this](const clang::Decl* Decl) {
+ return BuildNameIdForDecl(Decl).ToString();
+ },
+ // These enums are intentionally compatible.
+ static_cast<SemanticHash::OnUnimplemented>(
+ options_.IgnoreUnimplemented)) {}
bool VisitDecl(const clang::Decl* Decl);
bool TraverseFieldDecl(clang::FieldDecl* Decl);
@@ -148,6 +197,7 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
bool VisitCXXPseudoDestructorExpr(const clang::CXXPseudoDestructorExpr* E);
bool VisitCXXUnresolvedConstructExpr(
const clang::CXXUnresolvedConstructExpr* E);
+ bool TraverseCXXOperatorCallExpr(clang::CXXOperatorCallExpr* E);
bool VisitCallExpr(const clang::CallExpr* Expr);
bool VisitMemberExpr(const clang::MemberExpr* Expr);
bool VisitCXXDependentScopeMemberExpr(
@@ -177,6 +227,7 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
bool VisitDecltypeTypeLoc(clang::DecltypeTypeLoc TL);
bool VisitElaboratedTypeLoc(clang::ElaboratedTypeLoc TL);
bool VisitTypedefTypeLoc(clang::TypedefTypeLoc TL);
+ bool VisitUsingTypeLoc(clang::UsingTypeLoc TL);
bool VisitInjectedClassNameTypeLoc(clang::InjectedClassNameTypeLoc TL);
bool VisitDependentNameTypeLoc(clang::DependentNameTypeLoc TL);
bool VisitPackExpansionTypeLoc(clang::PackExpansionTypeLoc TL);
@@ -193,6 +244,8 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
NodeSet RecordTypeLocSpellingLocation(clang::TypeLoc TL);
NodeSet RecordTypeLocSpellingLocation(clang::TypeLoc Written,
const clang::Type* Resolved);
+ NodeSet RecordTypeSpellingLocation(const clang::Type* Type,
+ clang::SourceRange Range);
bool TraverseDeclarationNameInfo(clang::DeclarationNameInfo NameInfo);
@@ -325,14 +378,15 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
NodeSet BuildNodeSetForIncompleteArray(const clang::IncompleteArrayType& TL);
NodeSet BuildNodeSetForDependentSizedArray(
const clang::DependentSizedArrayType& T);
- NodeSet BuildNodeSetForExtInt(const clang::ExtIntType& T);
- NodeSet BuildNodeSetForDependentExtInt(const clang::DependentExtIntType& T);
+ NodeSet BuildNodeSetForBitInt(const clang::BitIntType& T);
+ NodeSet BuildNodeSetForDependentBitInt(const clang::DependentBitIntType& T);
NodeSet BuildNodeSetForFunctionProto(const clang::FunctionProtoType& T);
NodeSet BuildNodeSetForFunctionNoProto(const clang::FunctionNoProtoType& T);
NodeSet BuildNodeSetForParen(const clang::ParenType& T);
NodeSet BuildNodeSetForDecltype(const clang::DecltypeType& T);
NodeSet BuildNodeSetForElaborated(const clang::ElaboratedType& T);
NodeSet BuildNodeSetForTypedef(const clang::TypedefType& T);
+ NodeSet BuildNodeSetForUsing(const clang::UsingType& T);
NodeSet BuildNodeSetForSubstTemplateTypeParm(
const clang::SubstTemplateTypeParmType& T);
@@ -596,13 +650,13 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
bool TraverseTypeAliasTemplateDecl(clang::TypeAliasTemplateDecl* TATD);
bool shouldVisitTemplateInstantiations() const {
- return TemplateMode == BehaviorOnTemplates::VisitInstantiations;
+ return options_.TemplateMode == BehaviorOnTemplates::VisitInstantiations;
}
bool shouldEmitObjCForwardClassDeclDocumentation() const {
- return ObjCFwdDocs == BehaviorOnFwdDeclComments::Emit;
+ return options_.ObjCFwdDocs == BehaviorOnFwdDeclComments::Emit;
}
bool shouldEmitCppForwardDeclDocumentation() const {
- return CppFwdDocs == BehaviorOnFwdDeclComments::Emit;
+ return options_.CppFwdDocs == BehaviorOnFwdDeclComments::Emit;
}
bool shouldVisitImplicitCode() const { return true; }
// Disables data recursion. We intercept Traverse* methods in the RAV, which
@@ -680,20 +734,20 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
std::unique_ptr<IndexerWorklist> NewWorklist) {
Worklist = std::move(NewWorklist);
Worklist->EnqueueJob(absl::make_unique<IndexJob>(InitialDecl));
- while (!ShouldStopIndexing() && Worklist->DoWork())
+ while (!options_.ShouldStopIndexing() && Worklist->DoWork())
;
Observer.iterateOverClaimedFiles(
[this, InitialDecl](clang::FileID Id,
const GraphObserver::NodeId& FileNode) {
RunJob(absl::make_unique<IndexJob>(InitialDecl, Id, FileNode));
- return !ShouldStopIndexing();
+ return !options_.ShouldStopIndexing();
});
Worklist.reset();
}
/// \brief Provides execute-only access to ShouldStopIndexing. Should be used
/// from the same thread that's walking the AST.
- bool shouldStopIndexing() const { return ShouldStopIndexing(); }
+ bool shouldStopIndexing() const { return options_.ShouldStopIndexing(); }
/// Blames a call to `Callee` at `Range` on everything at the top of
/// `BlameStack` (or does nothing if there's nobody to blame).
@@ -712,21 +766,6 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
private:
friend class PruneCheck;
- /// Whether we should stop on missing cases or continue on.
- BehaviorOnUnimplemented IgnoreUnimplemented;
-
- /// Should we visit template instantiations?
- BehaviorOnTemplates TemplateMode;
-
- /// Should we emit all data?
- enum Verbosity Verbosity;
-
- /// Should we emit documentation for forward class decls in ObjC?
- BehaviorOnFwdDeclComments ObjCFwdDocs;
-
- /// Should we emit documentation for forward decls in C++?
- BehaviorOnFwdDeclComments CppFwdDocs;
-
NullGraphObserver NullObserver;
GraphObserver& Observer;
clang::ASTContext& Context;
@@ -951,6 +990,10 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
const clang::Decl* Decl) const;
void LogErrorWithASTDump(absl::string_view msg,
const clang::Expr* Expr) const;
+ void LogErrorWithASTDump(absl::string_view msg,
+ const clang::Type* Type) const;
+ void LogErrorWithASTDump(absl::string_view msg, clang::TypeLoc Type) const;
+ void LogErrorWithASTDump(absl::string_view msg, clang::QualType Type) const;
/// \brief This is used to handle the visitation of a clang::TypedefDecl
/// or a clang::TypeAliasDecl.
@@ -998,14 +1041,6 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
/// \brief Maps known Decls to their NodeIds.
llvm::DenseMap<const clang::Decl*, GraphObserver::NodeId> DeclToNodeId;
- /// \brief Used for calculating semantic hashes.
- SemanticHash Hash{
- [this](const clang::Decl* Decl) {
- return BuildNameIdForDecl(Decl).ToString();
- },
- // These enums are intentionally compatible.
- static_cast<SemanticHash::OnUnimplemented>(IgnoreUnimplemented)};
-
/// \brief Enabled library-specific callbacks.
const LibrarySupports& Supports;
@@ -1015,9 +1050,6 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
/// \brief The cache to use to generate signatures.
MarkedSourceCache MarkedSources;
- /// \return true if we should stop indexing.
- std::function<bool()> ShouldStopIndexing;
-
/// \brief The active indexing job.
std::unique_ptr<IndexJob> Job;
@@ -1027,17 +1059,6 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
/// \brief Comments we've already visited.
std::unordered_set<const clang::RawComment*> VisitedComments;
- /// \brief The number of (raw) bytes to use to represent a USR. If 0,
- /// no USRs will be recorded.
- int UsrByteSize = 0;
-
- /// \brief Controls whether dataflow edges are emitted.
- EmitDataflowEdges DataflowEdges;
-
- /// \brief if nonempty, the pattern to match a path against to see whether
- /// it should be excluded from template instance indexing.
- std::shared_ptr<re2::RE2> TemplateInstanceExcludePathPattern = nullptr;
-
/// \brief AST nodes we know are used in specific ways.
absl::flat_hash_map<const clang::Stmt*, GraphObserver::UseKind> use_kinds_;
@@ -1057,42 +1078,30 @@ class IndexerASTVisitor : public RecursiveTypeVisitor<IndexerASTVisitor> {
/// \brief Decls known to have alternate semantics.
absl::flat_hash_map<const clang::Decl*, AlternateSemantic*>
alternate_semantics_;
+
+ /// \brief Configurable indexer options.
+ const IndexerOptions& options_;
+
+ /// \brief Used for calculating semantic hashes.
+ SemanticHash Hash;
};
/// \brief An `ASTConsumer` that passes events to a `GraphObserver`.
class IndexerASTConsumer : public clang::SemaConsumer {
public:
- explicit IndexerASTConsumer(
- GraphObserver* GO, BehaviorOnUnimplemented B, BehaviorOnTemplates T,
- Verbosity V, BehaviorOnFwdDeclComments ObjC,
- BehaviorOnFwdDeclComments Cpp, const LibrarySupports& S,
- std::function<bool()> ShouldStopIndexing,
- std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
- CreateWorklist,
- int UsrByteSize, EmitDataflowEdges EDE, std::shared_ptr<re2::RE2> TIEPP)
- : Observer(GO),
- IgnoreUnimplemented(B),
- TemplateMode(T),
- Verbosity(V),
- ObjCFwdDocs(ObjC),
- CppFwdDocs(Cpp),
- Supports(S),
- ShouldStopIndexing(std::move(ShouldStopIndexing)),
- CreateWorklist(std::move(CreateWorklist)),
- UsrByteSize(UsrByteSize),
- DataflowEdges(EDE),
- TemplateInstanceExcludePathPattern(TIEPP) {}
+ explicit IndexerASTConsumer(GraphObserver* GO, const LibrarySupports& S,
+ const IndexerOptions& IO
+ ABSL_ATTRIBUTE_LIFETIME_BOUND)
+ : Observer(GO), Supports(S), options_(IO) {}
void HandleTranslationUnit(clang::ASTContext& Context) override {
CHECK(Sema != nullptr);
- IndexerASTVisitor Visitor(
- Context, IgnoreUnimplemented, TemplateMode, Verbosity, ObjCFwdDocs,
- CppFwdDocs, Supports, *Sema, ShouldStopIndexing, Observer, UsrByteSize,
- DataflowEdges, TemplateInstanceExcludePathPattern);
+ IndexerASTVisitor Visitor(Context, Supports, *Sema, options_, Observer);
{
ProfileBlock block(Observer->getProfilingCallback(), "traverse_tu");
Visitor.PrepareAlternateSemanticCache();
- Visitor.Work(Context.getTranslationUnitDecl(), CreateWorklist(&Visitor));
+ Visitor.Work(Context.getTranslationUnitDecl(),
+ options_.CreateWorklist(&Visitor));
}
}
@@ -1102,33 +1111,12 @@ class IndexerASTConsumer : public clang::SemaConsumer {
private:
GraphObserver* const Observer;
- /// Whether we should stop on missing cases or continue on.
- BehaviorOnUnimplemented IgnoreUnimplemented;
- /// Whether we should visit template instantiations.
- BehaviorOnTemplates TemplateMode;
- /// Whether we should emit all data.
- enum Verbosity Verbosity;
- /// Should we emit documentation for forward class decls in ObjC?
- BehaviorOnFwdDeclComments ObjCFwdDocs;
- /// Should we emit documentation for forward decls in C++?
- BehaviorOnFwdDeclComments CppFwdDocs;
/// Which library supports are enabled.
const LibrarySupports& Supports;
/// The active Sema instance.
clang::Sema* Sema;
- /// \return true if we should stop indexing.
- std::function<bool()> ShouldStopIndexing;
- /// \return a new worklist for the given visitor.
- std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
- CreateWorklist;
- /// \brief The number of (raw) bytes to use to represent a USR. If 0,
- /// no USRs will be recorded.
- int UsrByteSize = 0;
- /// \brief Controls whether dataflow edges are emitted.
- EmitDataflowEdges DataflowEdges;
- /// \brief if nonempty, the pattern to match a path against to see whether
- /// it should be excluded from template instance indexing.
- std::shared_ptr<re2::RE2> TemplateInstanceExcludePathPattern;
+ /// \brief Configurable options for the indexer.
+ const IndexerOptions& options_;
};
} // namespace kythe
diff --git a/kythe/cxx/indexer/cxx/IndexerFrontendAction.cc b/kythe/cxx/indexer/cxx/IndexerFrontendAction.cc
index 0e3d09d02..0f1b73b71 100644
--- a/kythe/cxx/indexer/cxx/IndexerFrontendAction.cc
+++ b/kythe/cxx/indexer/cxx/IndexerFrontendAction.cc
@@ -180,10 +180,9 @@ class TextErrorBuffer : public clang::DiagnosticConsumer {
std::string IndexCompilationUnit(
const proto::CompilationUnit& Unit, std::vector<proto::FileData>& Files,
KytheClaimClient& Client, HashCache* Cache, KytheCachingOutput& Output,
- const IndexerOptions& Options, const MetadataSupports* MetaSupports,
- const LibrarySupports* LibrarySupports,
- std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
- CreateWorklist) {
+ IndexerOptions& Options ABSL_ATTRIBUTE_LIFETIME_BOUND,
+ const MetadataSupports* MetaSupports,
+ const LibrarySupports* LibrarySupports) {
llvm::sys::path::Style Style =
kythe::IndexVFS::DetectStyleFromAbsoluteWorkingDirectory(
Unit.working_directory())
@@ -217,6 +216,7 @@ std::string IndexCompilationUnit(
options.build_config = ExtractBuildConfig(Unit);
options.default_corpus =
Options.UseCompilationCorpusAsDefault ? Unit.v_name().corpus() : "";
+ options.hash_recorder = Options.HashRecorder;
KytheGraphObserver Observer(&Recorder, &Client, MetaSupports, VFS,
Options.ReportProfileEvent, options);
if (Cache != nullptr) {
@@ -255,17 +255,7 @@ std::string IndexCompilationUnit(
}
std::unique_ptr<IndexerFrontendAction> Action =
absl::make_unique<IndexerFrontendAction>(
- &Observer, HSIValid ? &HSI : nullptr, Options.ShouldStopIndexing,
- std::move(CreateWorklist), LibrarySupports);
- Action->setIgnoreUnimplemented(Options.UnimplementedBehavior);
- Action->setTemplateMode(Options.TemplateBehavior);
- Action->setVerbosity(Options.Verbosity);
- Action->setObjCFwdDeclEmitDocs(Options.ObjCFwdDocs);
- Action->setCppFwdDeclEmitDocs(Options.CppFwdDocs);
- Action->setUsrByteSize(Options.UsrByteSize);
- Action->setTemplateInstanceExcludePathPattern(
- Options.TemplateInstanceExcludePathPattern);
- Action->setEmitDataflowEdges(Options.DataflowEdges);
+ &Observer, HSIValid ? &HSI : nullptr, LibrarySupports, Options);
llvm::IntrusiveRefCntPtr<clang::FileManager> FileManager(
new clang::FileManager(FSO, Options.AllowFSAccess ? nullptr : VFS));
std::vector<std::string> Args(Unit.argument().begin(), Unit.argument().end());
diff --git a/kythe/cxx/indexer/cxx/IndexerFrontendAction.h b/kythe/cxx/indexer/cxx/IndexerFrontendAction.h
index 163605be9..10a55a4b7 100644
--- a/kythe/cxx/indexer/cxx/IndexerFrontendAction.h
+++ b/kythe/cxx/indexer/cxx/IndexerFrontendAction.h
@@ -68,55 +68,19 @@ bool RunToolOnCode(std::unique_ptr<clang::FrontendAction> tool_action,
// TODO(jdennett): Consider moving/renaming this to kythe::ExtractIndexAction.
class IndexerFrontendAction : public clang::ASTFrontendAction {
public:
- IndexerFrontendAction(
- GraphObserver* GO, const HeaderSearchInfo* Info,
- std::function<bool()> ShouldStopIndexing,
- std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
- CreateWorklist,
- const LibrarySupports* LibrarySupports)
+ IndexerFrontendAction(GraphObserver* GO, const HeaderSearchInfo* Info,
+ const LibrarySupports* LibrarySupports,
+ const IndexerOptions& options
+ ABSL_ATTRIBUTE_LIFETIME_BOUND)
: Observer(CHECK_NOTNULL(GO)),
HeaderConfigValid(Info != nullptr),
Supports(*CHECK_NOTNULL(LibrarySupports)),
- ShouldStopIndexing(std::move(ShouldStopIndexing)),
- CreateWorklist(std::move(CreateWorklist)) {
+ options_(options) {
if (HeaderConfigValid) {
HeaderConfig = *Info;
}
}
- /// \brief Barrel through even if we don't understand part of a program?
- /// \param I The behavior to use when an unimplemented entity is encountered.
- void setIgnoreUnimplemented(BehaviorOnUnimplemented B) {
- IgnoreUnimplemented = B;
- }
-
- /// \brief Visit template instantiations?
- /// \param T The behavior to use for template instantiations.
- void setTemplateMode(BehaviorOnTemplates T) { TemplateMode = T; }
-
- /// \brief Emit all data?
- /// \param V Degree of verbosity.
- void setVerbosity(Verbosity V) { Verbosity = V; }
-
- /// \brief Emit comments for forward declared classes as documentation?
- /// \param B Behavior to use.
- void setObjCFwdDeclEmitDocs(BehaviorOnFwdDeclComments B) { ObjCFwdDocs = B; }
-
- /// \brief Emit comments for forward declarations as documentation?
- /// \param B Behavior to use.
- void setCppFwdDeclEmitDocs(BehaviorOnFwdDeclComments B) { CppFwdDocs = B; }
-
- /// \brief Use this many raw bytes for USRs.
- void setUsrByteSize(int S) { UsrByteSize = S; }
-
- /// \brief Emit dataflow edges?
- void setEmitDataflowEdges(EmitDataflowEdges EDE) { DataflowEdges = EDE; }
-
- /// \brief Pattern used to exclude paths from template instance indexing.
- void setTemplateInstanceExcludePathPattern(std::shared_ptr<re2::RE2> P) {
- TemplateInstanceExcludePathPattern = P;
- }
-
private:
std::unique_ptr<clang::ASTConsumer> CreateASTConsumer(
clang::CompilerInstance& CI, llvm::StringRef Filename) override {
@@ -154,16 +118,14 @@ class IndexerFrontendAction : public clang::ASTFrontendAction {
Observer->setLangOptions(&CI.getLangOpts());
Observer->setPreprocessor(&CI.getPreprocessor());
}
- return absl::make_unique<IndexerASTConsumer>(
- Observer, IgnoreUnimplemented, TemplateMode, Verbosity, ObjCFwdDocs,
- CppFwdDocs, Supports, ShouldStopIndexing, CreateWorklist, UsrByteSize,
- DataflowEdges, TemplateInstanceExcludePathPattern);
+ return absl::make_unique<IndexerASTConsumer>(Observer, Supports, options_);
}
bool BeginSourceFileAction(clang::CompilerInstance& CI) override {
if (Observer) {
CI.getPreprocessor().addPPCallbacks(absl::make_unique<IndexerPPCallbacks>(
- CI.getPreprocessor(), *Observer, Verbosity, UsrByteSize));
+ CI.getPreprocessor(), *Observer, options_.Verbosity,
+ options_.UsrByteSize));
}
CI.getLangOpts().CommentOpts.ParseAllComments = true;
CI.getLangOpts().RetainCommentsFromSystemHeaders = true;
@@ -174,34 +136,14 @@ class IndexerFrontendAction : public clang::ASTFrontendAction {
/// The `GraphObserver` used for reporting information.
GraphObserver* Observer;
- /// Whether to die on missing cases or to continue onward.
- BehaviorOnUnimplemented IgnoreUnimplemented = BehaviorOnUnimplemented::Abort;
- /// Whether to visit template instantiations.
- BehaviorOnTemplates TemplateMode = BehaviorOnTemplates::VisitInstantiations;
- /// Whether to emit all data.
- enum Verbosity Verbosity = kythe::Verbosity::Classic;
- /// Should we emit documentation for forward class decls in ObjC?
- BehaviorOnFwdDeclComments ObjCFwdDocs = BehaviorOnFwdDeclComments::Emit;
- /// Should we emit documentation for forward decls in C++?
- BehaviorOnFwdDeclComments CppFwdDocs = BehaviorOnFwdDeclComments::Emit;
/// Configuration information for header search.
HeaderSearchInfo HeaderConfig;
/// Whether to use HeaderConfig.
bool HeaderConfigValid;
/// Library-specific callbacks.
const LibrarySupports& Supports;
- /// \return true if indexing should be cancelled.
- std::function<bool()> ShouldStopIndexing = [] { return false; };
- /// \return a new worklist for the given visitor.
- std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
- CreateWorklist;
- /// \brief The number of (raw) bytes to use to represent a USR. If 0,
- /// no USRs will be recorded.
- int UsrByteSize = 0;
- /// \brief Controls whether dataflow edges are emitted.
- EmitDataflowEdges DataflowEdges = EmitDataflowEdges::No;
- /// \brief Pattern used to exclude paths from template instance indexing.
- std::shared_ptr<re2::RE2> TemplateInstanceExcludePathPattern;
+ /// \brief Options to use when indexing.
+ const IndexerOptions& options_;
};
/// \brief Allows stdin to be replaced with a mapped file.
@@ -250,46 +192,6 @@ class StdinAdjustSingleFrontendActionFactory
}
};
-/// \brief Options that control how the indexer behaves.
-struct IndexerOptions {
- /// \brief The directory to normalize paths against. Must be absolute.
- std::string EffectiveWorkingDirectory = "/";
- /// \brief What to do with template expansions.
- BehaviorOnTemplates TemplateBehavior =
- BehaviorOnTemplates::VisitInstantiations;
- /// \brief What to do when we don't know what to do.
- BehaviorOnUnimplemented UnimplementedBehavior =
- BehaviorOnUnimplemented::Abort;
- /// \brief Whether to emit all data.
- enum Verbosity Verbosity = kythe::Verbosity::Classic;
- /// \brief Should we emit documentation for forward class decls in ObjC?
- BehaviorOnFwdDeclComments ObjCFwdDocs = BehaviorOnFwdDeclComments::Emit;
- /// \brief Should we emit documentation for forward decls in C++?
- BehaviorOnFwdDeclComments CppFwdDocs = BehaviorOnFwdDeclComments::Emit;
- /// \brief Whether to allow access to the raw filesystem.
- bool AllowFSAccess = false;
- /// \brief Whether to drop data found to be template instantiation
- /// independent.
- bool DropInstantiationIndependentData = false;
- /// \brief A function that is called as the indexer enters and exits various
- /// phases of execution (in strict LIFO order).
- ProfilingCallback ReportProfileEvent = [](const char*, ProfilingEvent) {};
- /// \brief A callback to determine whether to cancel indexing as quickly
- /// as possible.
- /// \return true if indexing should be cancelled.
- std::function<bool()> ShouldStopIndexing = [] { return false; };
- /// \brief The number of (raw) bytes to use to represent a USR. If 0,
- /// no USRs will be recorded.
- int UsrByteSize = 0;
- /// \brief Whether to use the CompilationUnit VName corpus as the default
- /// corpus.
- bool UseCompilationCorpusAsDefault = false;
- /// \brief Whether to emit dataflow edges.
- EmitDataflowEdges DataflowEdges = EmitDataflowEdges::No;
- /// \brief Pattern used to exclude paths from template instance indexing.
- std::shared_ptr<re2::RE2> TemplateInstanceExcludePathPattern;
-};
-
/// \brief Indexes `Unit`, reading from `Files` in the assumed and writing
/// entries to `Output`.
/// \param Unit The CompilationUnit to index
@@ -301,16 +203,13 @@ struct IndexerOptions {
/// \param Options Configuration settings for this run.
/// \param MetaSupports Metadata support for this run.
/// \param LibrarySupports Library support for this run.
-/// \param Worklist A function that generates a new worklist for the given
-/// visitor.
/// \return empty if OK; otherwise, an error description.
std::string IndexCompilationUnit(
const proto::CompilationUnit& Unit, std::vector<proto::FileData>& Files,
KytheClaimClient& ClaimClient, HashCache* Cache, KytheCachingOutput& Output,
- const IndexerOptions& Options, const MetadataSupports* MetaSupports,
- const LibrarySupports* LibrarySupports,
- std::function<std::unique_ptr<IndexerWorklist>(IndexerASTVisitor*)>
- CreateWorklist);
+ IndexerOptions& Options ABSL_ATTRIBUTE_LIFETIME_BOUND,
+ const MetadataSupports* MetaSupports,
+ const LibrarySupports* LibrarySupports);
} // namespace kythe
diff --git a/kythe/cxx/indexer/cxx/IndexerPPCallbacks.cc b/kythe/cxx/indexer/cxx/IndexerPPCallbacks.cc
index 1f6eef65f..fdd875eeb 100644
--- a/kythe/cxx/indexer/cxx/IndexerPPCallbacks.cc
+++ b/kythe/cxx/indexer/cxx/IndexerPPCallbacks.cc
@@ -326,8 +326,8 @@ GraphObserver::NodeId IndexerPPCallbacks::BuildNodeIdForMacro(
// cases should contain canonical source file information).
Ostream << "@" << SM.getFileOffset(Loc);
}
- return GraphObserver::NodeId(Observer.getClaimTokenForLocation(Loc),
- Ostream.str());
+ return Observer.MakeNodeId(Observer.getClaimTokenForLocation(Loc),
+ Ostream.str());
}
void IndexerPPCallbacks::HandleKytheMetadataPragma(
@@ -345,8 +345,14 @@ void IndexerPPCallbacks::HandleKytheMetadataPragma(
}
clang::FileID pragma_file_id =
Observer.getSourceManager()->getFileID(FirstToken.getLocation());
+ const auto* target =
+ Observer.getSourceManager()->getFileEntryForID(pragma_file_id);
+ if (target == nullptr) {
+ LOG(WARNING) << "Missing target file entry for kythe_metadata";
+ return;
+ }
if (!pragma_file_id.isInvalid()) {
- Observer.applyMetadataFile(pragma_file_id, file, "");
+ Observer.applyMetadataFile(pragma_file_id, file, "", target);
} else {
absl::FPrintF(stderr, "Metadata pragma was in an impossible place\n");
}
@@ -377,7 +383,8 @@ void IndexerPPCallbacks::HandleKytheInlineMetadataPragma(
LOG(WARNING) << "Missing file entry for kythe_inline_metadata";
return;
}
- Observer.applyMetadataFile(pragma_file_id, pragma_file_entry, search_string);
+ Observer.applyMetadataFile(pragma_file_id, pragma_file_entry, search_string,
+ pragma_file_entry);
}
} // namespace kythe
diff --git a/kythe/cxx/indexer/cxx/IndexerPPCallbacks.h b/kythe/cxx/indexer/cxx/IndexerPPCallbacks.h
index 92b2d8b77..1e332e9f7 100644
--- a/kythe/cxx/indexer/cxx/IndexerPPCallbacks.h
+++ b/kythe/cxx/indexer/cxx/IndexerPPCallbacks.h
@@ -66,7 +66,7 @@ class IndexerPPCallbacks : public clang::PPCallbacks {
const clang::Token& IncludeToken,
llvm::StringRef Filename, bool IsAngled,
clang::CharSourceRange FilenameRange,
- llvm::Optional<clang::FileEntryRef> FileEntry,
+ llvm::Optional<clang::FileEntryRef> FileRef,
llvm::StringRef SearchPath,
llvm::StringRef RelativePath,
const clang::Module* Imported,
diff --git a/kythe/cxx/indexer/cxx/KytheGraphObserver.cc b/kythe/cxx/indexer/cxx/KytheGraphObserver.cc
index a26281509..57a46ec4b 100644
--- a/kythe/cxx/indexer/cxx/KytheGraphObserver.cc
+++ b/kythe/cxx/indexer/cxx/KytheGraphObserver.cc
@@ -261,6 +261,8 @@ kythe::proto::VName KytheGraphObserver::VNameFromRange(
out_name.CopyFrom(VNameFromFileEntry(file_entry));
} else if (range.Kind == GraphObserver::Range::RangeKind::Wraith) {
VNameRefFromNodeId(range.Context).Expand(&out_name);
+ } else {
+ out_name.set_corpus(default_token_.vname().corpus());
}
size_t begin_offset = SourceManager->getFileOffset(begin);
size_t end_offset = SourceManager->getFileOffset(end);
@@ -279,7 +281,7 @@ kythe::proto::VName KytheGraphObserver::VNameFromRange(
if (!build_config_.empty()) {
absl::StrAppend(out_name.mutable_signature(), "%", build_config_);
}
- out_name.set_signature(CompressString(out_name.signature()));
+ out_name.set_signature(CompressAnchorSignature(out_name.signature()));
return out_name;
}
@@ -587,7 +589,7 @@ absl::optional<GraphObserver::NodeId> KytheGraphObserver::recordFileInitializer(
SourceLocation file_start =
SourceManager->getLocForStartOfFile(SourceManager->getFileID(begin));
const auto* token = getClaimTokenForLocation(file_start);
- NodeId file_id(token, "#init");
+ NodeId file_id = MakeNodeId(token, "#init");
if (recorded_inits_.insert(token).second) {
MarkedSource file_source;
file_source.set_pre_text(token->vname().path());
@@ -626,6 +628,13 @@ void KytheGraphObserver::recordParamEdge(const NodeId& param_of_id,
VNameRefFromNodeId(param_id), ordinal);
}
+void KytheGraphObserver::recordTParamEdge(const NodeId& param_of_id,
+ uint32_t ordinal,
+ const NodeId& param_id) {
+ recorder_->AddEdge(VNameRefFromNodeId(param_of_id), EdgeKindID::kTParam,
+ VNameRefFromNodeId(param_id), ordinal);
+}
+
void KytheGraphObserver::recordChildOfEdge(const NodeId& child_id,
const NodeId& parent_id) {
recorder_->AddEdge(VNameRefFromNodeId(child_id), EdgeKindID::kChildOf,
@@ -716,8 +725,8 @@ void KytheGraphObserver::recordOverridesRootEdge(const NodeId& overrider,
GraphObserver::NodeId KytheGraphObserver::nodeIdForTypeAliasNode(
const NameId& alias_name, const NodeId& aliased_type) const {
- return NodeId(&type_token_, "talias(" + alias_name.ToString() + "," +
- aliased_type.ToClaimedString() + ")");
+ return MakeNodeId(&type_token_, "talias(" + alias_name.ToString() + "," +
+ aliased_type.ToClaimedString() + ")");
}
GraphObserver::NodeId KytheGraphObserver::recordTypeAliasNode(
@@ -751,7 +760,7 @@ void KytheGraphObserver::recordDocumentationText(
}
// Force hashing because the serving backend gets upset if certain
// characters appear in VName fields.
- NodeId doc_id(node.getToken(), CompressString(signature, true));
+ NodeId doc_id = MakeNodeId(node.getToken(), ForceEncodeString(signature));
VNameRef doc_vname(VNameRefFromNodeId(doc_id));
if (written_docs_.insert(doc_id.ToClaimedString()).second) {
recorder_->AddProperty(doc_vname, NodeKindID::kDoc);
@@ -804,6 +813,8 @@ void KytheGraphObserver::recordCompletionRange(
? EdgeKindID::kUniquelyCompletes
: EdgeKindID::kCompletes,
completing_node);
+ recorder_->AddEdge(VNameRefFromNodeId(node), EdgeKindID::kCompletedby,
+ VNameRefFromNodeId(completing_node));
}
GraphObserver::NodeId KytheGraphObserver::nodeIdForNominalTypeNode(
@@ -811,7 +822,7 @@ GraphObserver::NodeId KytheGraphObserver::nodeIdForNominalTypeNode(
// Appending #t to a name produces the VName signature of the nominal
// type node referring to that name. For example, the VName for a
// forward-declared class type will look like "C#c#t".
- return NodeId(&type_token_, name_id.ToString() + "#t");
+ return MakeNodeId(&type_token_, name_id.ToString() + "#t");
}
GraphObserver::NodeId KytheGraphObserver::recordNominalTypeNode(
@@ -832,7 +843,7 @@ GraphObserver::NodeId KytheGraphObserver::recordNominalTypeNode(
GraphObserver::NodeId KytheGraphObserver::nodeIdForTsigmaNode(
absl::Span<const NodeId> params) const {
- return GraphObserver::NodeId(
+ return MakeNodeId(
&type_token_,
absl::StrCat("#sigma(",
absl::StrJoin(params, ",", ClaimedStringFormatter{}), ")"));
@@ -861,7 +872,7 @@ GraphObserver::NodeId KytheGraphObserver::nodeIdForTappNode(
// foo (bar baz)
// We'll turn it into a C-style function application:
// foo(bar,baz) || foo(bar(baz))
- return GraphObserver::NodeId(
+ return MakeNodeId(
&type_token_,
absl::StrCat(tycon_id.ToClaimedString(), "(",
absl::StrJoin(params, ",", ClaimedStringFormatter{}), ")"));
@@ -956,6 +967,13 @@ void KytheGraphObserver::recordAbsVarNode(
AddMarkedSource(node_vname, marked_source);
}
+void KytheGraphObserver::recordTVarNode(
+ const NodeId& node_id, const absl::optional<MarkedSource>& marked_source) {
+ auto node_vname = VNameRefFromNodeId(node_id);
+ recorder_->AddProperty(node_vname, NodeKindID::kTVar);
+ AddMarkedSource(node_vname, marked_source);
+}
+
void KytheGraphObserver::recordLookupNode(const NodeId& node_id,
const llvm::StringRef& text) {
VNameRef node_vname = VNameRefFromNodeId(node_id);
@@ -1086,9 +1104,7 @@ void KytheGraphObserver::recordSemanticDeclUseLocation(
const GraphObserver::Range& source_range, const NodeId& node, UseKind kind,
Claimability claimability, Implicit i) {
if (kind == GraphObserver::UseKind::kUnknown ||
- kind == GraphObserver::UseKind::kReadWrite ||
- kind == GraphObserver::UseKind::kWrite) {
- // TODO(zarko): remove kWrite.
+ kind == GraphObserver::UseKind::kReadWrite) {
auto out_kind =
(i == GraphObserver::Implicit::Yes ? EdgeKindID::kRefImplicit
: EdgeKindID::kRef);
@@ -1131,7 +1147,7 @@ GraphObserver::NodeId KytheGraphObserver::getNodeIdForBuiltinType(
if (absl::GetFlag(FLAGS_fail_on_unimplemented_builtin)) {
LOG(FATAL) << "Missing builtin " << spelling.str();
}
- LOG(ERROR) << "Missing builtin " << spelling.str();
+ VLOG(1) << "Missing builtin " << spelling.str();
MarkedSource sig;
sig.set_kind(MarkedSource::IDENTIFIER);
sig.set_pre_text(std::string(spelling));
@@ -1149,9 +1165,9 @@ GraphObserver::NodeId KytheGraphObserver::getNodeIdForBuiltinType(
return info->second.node_id;
}
-void KytheGraphObserver::applyMetadataFile(clang::FileID id,
- const clang::FileEntry* file,
- const std::string& search_string) {
+void KytheGraphObserver::applyMetadataFile(
+ clang::FileID id, const clang::FileEntry* file,
+ const std::string& search_string, const clang::FileEntry* target_file) {
const llvm::Optional<llvm::MemoryBufferRef> buffer =
SourceManager->getMemoryBufferForFileOrNone(file);
if (!buffer) {
@@ -1159,11 +1175,20 @@ void KytheGraphObserver::applyMetadataFile(clang::FileID id,
file->getName().str());
return;
}
+ const llvm::Optional<llvm::MemoryBufferRef> target_buffer =
+ SourceManager->getMemoryBufferForFileOrNone(target_file);
+ if (!target_buffer) {
+ absl::FPrintF(stderr, "Couldn't get content for %s\n",
+ target_file->getName().str());
+ return;
+ }
if (auto metadata = meta_supports_->ParseFile(
std::string(file->getName()),
absl::string_view(buffer->getBuffer().data(),
buffer->getBufferSize()),
- search_string)) {
+ search_string,
+ absl::string_view(target_buffer->getBuffer().data(),
+ target_buffer->getBufferSize()))) {
meta_.emplace(id, std::move(metadata));
}
}
@@ -1340,7 +1365,7 @@ void KytheGraphObserver::popFile() {
void KytheGraphObserver::iterateOverClaimedFiles(
std::function<bool(clang::FileID, const NodeId&)> iter) const {
for (const auto& file : claimed_file_specific_tokens_) {
- if (!iter(file.first, NodeId(&file.second, ""))) {
+ if (!iter(file.first, MakeNodeId(&file.second, ""))) {
return;
}
}
diff --git a/kythe/cxx/indexer/cxx/KytheGraphObserver.h b/kythe/cxx/indexer/cxx/KytheGraphObserver.h
index 794b8adfd..052ef44aa 100644
--- a/kythe/cxx/indexer/cxx/KytheGraphObserver.h
+++ b/kythe/cxx/indexer/cxx/KytheGraphObserver.h
@@ -137,6 +137,8 @@ struct KytheGraphObserverOptions {
// The default corpus to use for nodes which would otherwise have an empty
// corpus.
std::string default_corpus = "";
+ // Associates a hash to its semantic signature.
+ HashRecorder* hash_recorder;
};
/// \brief Records details in the form of Kythe nodes and edges about elements
@@ -150,7 +152,7 @@ class KytheGraphObserver : public GraphObserver {
const MetadataSupports* meta_supports,
const llvm::IntrusiveRefCntPtr<IndexVFS>& vfs,
ProfilingCallback ReportProfileEventCallback,
- const Options& options = {})
+ Options& options)
: recorder_(CHECK_NOTNULL(recorder)),
client_(CHECK_NOTNULL(client)),
meta_supports_(CHECK_NOTNULL(meta_supports)),
@@ -163,6 +165,7 @@ class KytheGraphObserver : public GraphObserver {
ReportProfileEvent = std::move(ReportProfileEventCallback);
RegisterBuiltins();
EmitMetaNodes();
+ hash_recorder_ = options.hash_recorder;
}
NodeId getNodeIdForBuiltinType(
@@ -177,7 +180,8 @@ class KytheGraphObserver : public GraphObserver {
}
void applyMetadataFile(clang::FileID ID, const clang::FileEntry* file,
- const std::string& search_string) override;
+ const std::string& search_string,
+ const clang::FileEntry* target_file) override;
void StopDeferringNodes() { deferring_nodes_ = false; }
void DropRedundantWraiths() { drop_redundant_wraiths_ = true; }
void Delimit() override { recorder_->PushEntryGroup(); }
@@ -214,6 +218,10 @@ class KytheGraphObserver : public GraphObserver {
const NodeId& node,
const absl::optional<MarkedSource>& marked_source) override;
+ void recordTVarNode(
+ const NodeId& node,
+ const absl::optional<MarkedSource>& marked_source) override;
+
void recordAbsNode(const NodeId& node) override;
void recordMarkedSource(
@@ -226,6 +234,9 @@ class KytheGraphObserver : public GraphObserver {
void recordParamEdge(const NodeId& param_of_id, uint32_t ordinal,
const NodeId& param_id) override;
+ void recordTParamEdge(const NodeId& param_of_id, uint32_t ordinal,
+ const NodeId& param_id) override;
+
void recordInterfaceNode(
const NodeId& node,
const absl::optional<MarkedSource>& marked_source) override;
diff --git a/kythe/cxx/indexer/cxx/KytheIndexerMain.cc b/kythe/cxx/indexer/cxx/KytheIndexerMain.cc
index d95d9d927..9915a7fcd 100644
--- a/kythe/cxx/indexer/cxx/KytheIndexerMain.cc
+++ b/kythe/cxx/indexer/cxx/KytheIndexerMain.cc
@@ -58,10 +58,14 @@ ABSL_FLAG(bool, use_compilation_corpus_as_default, false,
"Use the CompilationUnit VName corpus as the default.");
ABSL_FLAG(bool, experimental_record_dataflow_edges, false,
"Emit experimental dataflow edges.");
+ABSL_FLAG(bool, experimental_guess_proto_semantics, false,
+ "Guess proto semantics.");
+ABSL_FLAG(bool, experimental_use_abs_nodes, true, "Use abs nodes.");
ABSL_FLAG(kythe::RE2Flag, template_instance_exclude_path_pattern,
kythe::RE2Flag{},
"If nonempty, a regex that matches files to be excluded from "
"template instance indexing.");
+ABSL_FLAG(std::string, record_hashes_file, "", "Record hashes to this file.");
namespace kythe {
@@ -74,12 +78,12 @@ int main(int argc, char* argv[]) {
std::vector<std::string> final_args(remain.begin(), remain.end());
IndexerContext context(final_args, "stdin.cc");
IndexerOptions options;
- options.TemplateBehavior = absl::GetFlag(FLAGS_index_template_instantiations)
- ? BehaviorOnTemplates::VisitInstantiations
- : BehaviorOnTemplates::SkipInstantiations;
- options.UnimplementedBehavior = context.ignore_unimplemented()
- ? kythe::BehaviorOnUnimplemented::Continue
- : kythe::BehaviorOnUnimplemented::Abort;
+ options.TemplateMode = absl::GetFlag(FLAGS_index_template_instantiations)
+ ? BehaviorOnTemplates::VisitInstantiations
+ : BehaviorOnTemplates::SkipInstantiations;
+ options.IgnoreUnimplemented = context.ignore_unimplemented()
+ ? kythe::BehaviorOnUnimplemented::Continue
+ : kythe::BehaviorOnUnimplemented::Abort;
options.Verbosity = absl::GetFlag(FLAGS_experimental_index_lite)
? kythe::Verbosity::Lite
: kythe::Verbosity::Classic;
@@ -99,6 +103,9 @@ int main(int argc, char* argv[]) {
absl::GetFlag(FLAGS_experimental_record_dataflow_edges)
? kythe::EmitDataflowEdges::Yes
: kythe::EmitDataflowEdges::No;
+ options.AbsNodes = absl::GetFlag(FLAGS_experimental_use_abs_nodes)
+ ? kythe::UseAbsNodes::Abs
+ : kythe::UseAbsNodes::NoAbs;
options.UseCompilationCorpusAsDefault =
absl::GetFlag(FLAGS_use_compilation_corpus_as_default);
options.DropInstantiationIndependentData =
@@ -110,6 +117,14 @@ int main(int argc, char* argv[]) {
event == ProfilingEvent::Enter ? "enter" : "exit");
};
}
+ options.CreateWorklist = [](IndexerASTVisitor* indexer) {
+ return IndexerWorklist::CreateDefaultWorklist(indexer);
+ };
+ std::optional<FileHashRecorder> recorder;
+ if (!absl::GetFlag(FLAGS_record_hashes_file).empty()) {
+ recorder.emplace(absl::GetFlag(FLAGS_record_hashes_file));
+ options.HashRecorder = &*recorder;
+ }
bool had_errors = false;
NullOutputStream null_stream;
@@ -118,7 +133,11 @@ int main(int argc, char* argv[]) {
options.EffectiveWorkingDirectory = job.unit.working_directory();
kythe::MetadataSupports meta_supports;
- meta_supports.Add(absl::make_unique<ProtobufMetadataSupport>());
+ auto proto = absl::make_unique<ProtobufMetadataSupport>();
+ if (absl::GetFlag(FLAGS_experimental_guess_proto_semantics)) {
+ proto->GuessSemantics(true);
+ }
+ meta_supports.Add(std::move(proto));
meta_supports.Add(absl::make_unique<KytheMetadataSupport>());
kythe::LibrarySupports library_supports;
@@ -131,10 +150,7 @@ int main(int argc, char* argv[]) {
context.hash_cache(),
job.silent ? static_cast<KytheCachingOutput&>(null_stream)
: static_cast<KytheCachingOutput&>(*context.output()),
- options, &meta_supports, &library_supports,
- [](IndexerASTVisitor* indexer) {
- return IndexerWorklist::CreateDefaultWorklist(indexer);
- });
+ options, &meta_supports, &library_supports);
if (!result.empty()) {
absl::FPrintF(stderr, "Error: %s\n", result);
diff --git a/kythe/cxx/indexer/cxx/KytheIndexerUnitTest.cc b/kythe/cxx/indexer/cxx/KytheIndexerUnitTest.cc
index d2807ea59..d23f08a43 100644
--- a/kythe/cxx/indexer/cxx/KytheIndexerUnitTest.cc
+++ b/kythe/cxx/indexer/cxx/KytheIndexerUnitTest.cc
@@ -380,13 +380,10 @@ TEST(KytheIndexerUnitTest, BufferStackMergeFailures) {
TEST(KytheIndexerUnitTest, TrivialHappyCase) {
NullGraphObserver observer;
LibrarySupports no_supports;
+ IndexerOptions options{};
std::unique_ptr<clang::FrontendAction> Action =
- absl::make_unique<IndexerFrontendAction>(
- &observer, nullptr, []() { return false; },
- [](IndexerASTVisitor* visitor) {
- return IndexerWorklist::CreateDefaultWorklist(visitor);
- },
- &no_supports);
+ absl::make_unique<IndexerFrontendAction>(&observer, nullptr, &no_supports,
+ options);
ASSERT_TRUE(
RunToolOnCode(std::move(Action), "int main() {}", "valid_main.cc"));
}
@@ -442,13 +439,10 @@ class PushPopLintingGraphObserver : public NullGraphObserver {
TEST(KytheIndexerUnitTest, PushFilePopFileTracking) {
PushPopLintingGraphObserver Observer;
LibrarySupports no_supports;
+ IndexerOptions options{};
std::unique_ptr<clang::FrontendAction> Action =
- absl::make_unique<IndexerFrontendAction>(
- &Observer, nullptr, []() { return false; },
- [](IndexerASTVisitor* visitor) {
- return IndexerWorklist::CreateDefaultWorklist(visitor);
- },
- &no_supports);
+ absl::make_unique<IndexerFrontendAction>(&Observer, nullptr, &no_supports,
+ options);
ASSERT_TRUE(RunToolOnCode(std::move(Action), "int i;", "main.cc"));
ASSERT_FALSE(Observer.hadUnderrun());
ASSERT_EQ(0, Observer.getFileNameStackSize());
diff --git a/kythe/cxx/indexer/cxx/KytheVFS.cc b/kythe/cxx/indexer/cxx/KytheVFS.cc
index 64533a4e7..c3fa10965 100644
--- a/kythe/cxx/indexer/cxx/KytheVFS.cc
+++ b/kythe/cxx/indexer/cxx/KytheVFS.cc
@@ -16,9 +16,12 @@
#include "KytheVFS.h"
+#include <system_error>
+
#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
+#include "glog/logging.h"
#include "kythe/cxx/indexer/cxx/proto_conversions.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/FileSystem.h"
@@ -54,18 +57,19 @@ std::string FixupPath(llvm::StringRef path, llvm::sys::path::Style style) {
}
} // anonymous namespace
-IndexVFS::IndexVFS(const std::string& working_directory,
+IndexVFS::IndexVFS(absl::string_view working_directory,
const std::vector<proto::FileData>& virtual_files,
const std::vector<llvm::StringRef>& virtual_dirs,
llvm::sys::path::Style style)
- : virtual_files_(virtual_files),
- working_directory_(FixupPath(working_directory, style)) {
+ : working_directory_(FixupPath(
+ llvm::StringRef(working_directory.data(), working_directory.size()),
+ style)) {
if (!llvm::sys::path::is_absolute(working_directory_,
llvm::sys::path::Style::posix)) {
absl::FPrintF(stderr, "warning: working directory %s is not absolute\n",
working_directory_);
}
- for (const auto& data : virtual_files_) {
+ for (const auto& data : virtual_files) {
std::string path = FixupPath(ToStringRef(data.info().path()), style);
if (auto* record = FileRecordForPath(path, BehaviorOnMissing::kCreateFile,
data.content().size())) {
@@ -81,12 +85,6 @@ IndexVFS::IndexVFS(const std::string& working_directory,
FileRecordForPath(".", BehaviorOnMissing::kCreateDirectory, 0);
}
-IndexVFS::~IndexVFS() {
- for (auto& entry : uid_to_record_map_) {
- delete entry.second;
- }
-}
-
llvm::ErrorOr<llvm::vfs::Status> IndexVFS::status(const llvm::Twine& path) {
if (const auto* record =
FileRecordForPath(path.str(), BehaviorOnMissing::kReturnError, 0)) {
@@ -121,6 +119,13 @@ llvm::ErrorOr<std::unique_ptr<llvm::vfs::File>> IndexVFS::openFileForRead(
llvm::vfs::directory_iterator IndexVFS::dir_begin(const llvm::Twine& dir,
std::error_code& error_code) {
+ std::string path = dir.str();
+ if (auto* record =
+ FileRecordForPath(path, BehaviorOnMissing::kReturnError, 0)) {
+ return llvm::vfs::directory_iterator(
+ std::make_shared<DirectoryIteratorImpl>(std::move(path), record));
+ }
+ error_code = std::make_error_code(std::errc::no_such_file_or_directory);
return llvm::vfs::directory_iterator();
}
@@ -193,15 +198,21 @@ IndexVFS::FileRecord* IndexVFS::FileRecordForPathRoot(const llvm::Twine& path,
} else if (!create_if_missing) {
return nullptr;
} else {
- name_record = new FileRecord(
- {llvm::vfs::Status(root_name, llvm::vfs::getNextVirtualUniqueID(),
- llvm::sys::TimePoint<>(), 0, 0, 0,
- llvm::sys::fs::file_type::directory_file,
- llvm::sys::fs::all_read),
- false, std::string(root_name)});
- root_name_to_root_map_[std::string(root_name)] = name_record;
- uid_to_record_map_[PairFromUid(name_record->status.getUniqueID())] =
- name_record;
+ FileRecord record = {
+ .status = llvm::vfs::Status(
+ root_name, llvm::vfs::getNextVirtualUniqueID(),
+ llvm::sys::TimePoint<>(), 0, 0, 0,
+ llvm::sys::fs::file_type::directory_file, llvm::sys::fs::all_read),
+ .has_vname = false,
+ .label = std::string(root_name),
+ };
+ auto [iter, inserted] = uid_to_record_map_.insert_or_assign(
+ PairFromUid(record.status.getUniqueID()),
+ std::make_unique<FileRecord>(record));
+ CHECK(inserted) << "Duplicated entries detected!";
+ root_name_to_root_map_.insert_or_assign(std::string(root_name),
+ iter->second.get());
+ name_record = iter->second.get();
}
return AllocOrReturnFileRecord(name_record, create_if_missing, root_dir,
llvm::sys::fs::file_type::directory_file, 0);
@@ -306,15 +317,28 @@ IndexVFS::FileRecord* IndexVFS::AllocOrReturnFileRecord(
}
llvm::SmallString<1024> out_path(llvm::StringRef(parent->status.getName()));
llvm::sys::path::append(out_path, llvm::sys::path::Style::posix, label);
- FileRecord* new_record = new FileRecord{
- llvm::vfs::Status(out_path, llvm::vfs::getNextVirtualUniqueID(),
- llvm::sys::TimePoint<>(), 0, 0, size, type,
- llvm::sys::fs::all_read),
- false, std::string(label)};
- parent->children.push_back(new_record);
- uid_to_record_map_[PairFromUid(new_record->status.getUniqueID())] =
- new_record;
- return new_record;
+ FileRecord record = {
+ .status = llvm::vfs::Status(out_path, llvm::vfs::getNextVirtualUniqueID(),
+ llvm::sys::TimePoint<>(), 0, 0, size, type,
+ llvm::sys::fs::all_read),
+ .has_vname = false,
+ .label = std::string(label),
+ };
+ auto [iter, inserted] = uid_to_record_map_.insert_or_assign(
+ PairFromUid(record.status.getUniqueID()),
+ std::make_unique<FileRecord>(record));
+ CHECK(inserted) << "Duplicate entries detected!";
+ parent->children.push_back(iter->second.get());
+ return iter->second.get();
+}
+
+llvm::vfs::directory_entry IndexVFS::DirectoryIteratorImpl::GetEntry() const {
+ if (curr_ == end_) {
+ return {};
+ }
+ llvm::SmallString<1024> path = llvm::StringRef(path_);
+ llvm::sys::path::append(path, llvm::sys::path::Style::posix, (*curr_)->label);
+ return {std::string(path), (*curr_)->status.getType()};
}
} // namespace kythe
diff --git a/kythe/cxx/indexer/cxx/KytheVFS.h b/kythe/cxx/indexer/cxx/KytheVFS.h
index e0b05892c..85337439b 100644
--- a/kythe/cxx/indexer/cxx/KytheVFS.h
+++ b/kythe/cxx/indexer/cxx/KytheVFS.h
@@ -17,6 +17,11 @@
#ifndef KYTHE_CXX_COMMON_INDEXING_KYTHE_VFS_H_
#define KYTHE_CXX_COMMON_INDEXING_KYTHE_VFS_H_
+#include <memory>
+
+#include "absl/base/attributes.h"
+#include "absl/container/flat_hash_map.h"
+#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include "clang/Basic/FileManager.h"
#include "kythe/proto/analysis.pb.h"
@@ -33,19 +38,24 @@ namespace kythe {
class IndexVFS : public llvm::vfs::FileSystem {
public:
/// \param working_directory The absolute path to the working directory.
- /// \param virtual_files Files to map.
+ /// \param virtual_files Files to map. File content must outlive IndexVFS.
/// \param virtual_dirs Directories to map.
/// \param style Style used to parse incoming paths. Paths are normalized
/// to POSIX-style.
- IndexVFS(const std::string& working_directory,
- const std::vector<proto::FileData>& virtual_files,
- const std::vector<llvm::StringRef>& virtual_dirs,
- llvm::sys::path::Style style);
+ explicit IndexVFS(absl::string_view working_directory,
+ const std::vector<proto::FileData>& virtual_files
+ ABSL_ATTRIBUTE_LIFETIME_BOUND,
+ const std::vector<llvm::StringRef>& virtual_dirs,
+ llvm::sys::path::Style style);
/// \return nullopt if `awd` is not absolute or its style could not be
/// detected; otherwise, the style of `awd`.
static absl::optional<llvm::sys::path::Style>
DetectStyleFromAbsoluteWorkingDirectory(const std::string& awd);
- ~IndexVFS();
+
+ // IndexVFS is neither copyable nor movable.
+ IndexVFS(const IndexVFS&) = delete;
+ IndexVFS& operator=(const IndexVFS&) = delete;
+
/// \brief Implements llvm::vfs::FileSystem::status.
llvm::ErrorOr<llvm::vfs::Status> status(const llvm::Twine& path) override;
/// \brief Implements llvm::vfs::FileSystem::openFileForRead.
@@ -116,6 +126,28 @@ class IndexVFS : public llvm::vfs::FileSystem {
std::string name_;
};
+ class DirectoryIteratorImpl : public ::llvm::vfs::detail::DirIterImpl {
+ public:
+ explicit DirectoryIteratorImpl(std::string path, const FileRecord* record)
+ : path_(std::move(path)), record_(record) {
+ CurrentEntry = GetEntry();
+ }
+
+ std::error_code increment() override {
+ ++curr_;
+ CurrentEntry = GetEntry();
+ return {};
+ }
+
+ private:
+ ::llvm::vfs::directory_entry GetEntry() const;
+
+ std::string path_;
+ const FileRecord* record_;
+ std::vector<FileRecord*>::const_iterator curr_ = record_->children.begin(),
+ end_ = record_->children.end();
+ };
+
/// \brief Controls what happens when a missing path node is encountered.
enum class BehaviorOnMissing {
kCreateFile, ///< Create intermediate directories and a final file.
@@ -149,15 +181,15 @@ class IndexVFS : public llvm::vfs::FileSystem {
llvm::sys::fs::file_type type,
size_t size);
- /// The virtual files that were included in the index.
- const std::vector<proto::FileData>& virtual_files_;
/// The working directory. Must be absolute.
std::string working_directory_;
/// Maps root names to root nodes. For indexes captured from Unix
/// environments, there will be only one root name (the empty string).
- std::map<std::string, FileRecord*> root_name_to_root_map_;
+ absl::flat_hash_map<std::string, FileRecord*> root_name_to_root_map_;
/// Maps unique IDs to file records.
- std::map<std::pair<uint64_t, uint64_t>, FileRecord*> uid_to_record_map_;
+ absl::flat_hash_map<std::pair<uint64_t, uint64_t>,
+ std::unique_ptr<FileRecord>>
+ uid_to_record_map_;
};
} // namespace kythe
diff --git a/kythe/cxx/indexer/cxx/KytheVFS_test.cc b/kythe/cxx/indexer/cxx/KytheVFS_test.cc
new file mode 100644
index 000000000..a9fd27f69
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/KytheVFS_test.cc
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2022 The Kythe Authors. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "kythe/cxx/indexer/cxx/KytheVFS.h"
+
+#include <initializer_list>
+#include <string>
+#include <system_error>
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "kythe/proto/analysis.pb.h"
+#include "llvm/ADT/Twine.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/VirtualFileSystem.h"
+
+namespace kythe {
+namespace {
+using ::testing::Optional;
+using ::testing::UnorderedElementsAre;
+
+template <typename Container = std::initializer_list<std::string>>
+std::vector<proto::FileData> FileDataFromPaths(Container&& paths) {
+ std::vector<proto::FileData> result;
+ for (const auto& path : paths) {
+ result.emplace_back().mutable_info()->set_path(path);
+ }
+ return result;
+}
+
+TEST(KytheVFSTest, AddingFilesCreatesTraversableTree) {
+ using ::llvm::vfs::recursive_directory_iterator;
+
+ auto files = FileDataFromPaths({
+ "path/to/a/file.txt",
+ "path/to/another/file.txt",
+ });
+ IndexVFS vfs("/working_directory", files, {}, llvm::sys::path::Style::posix);
+
+ std::vector<std::string> results;
+ std::error_code err;
+ for (recursive_directory_iterator iter(vfs, "/", err), end;
+ iter != end && !err; iter.increment(err)) {
+ results.push_back(iter->path().str());
+ }
+ ASSERT_FALSE(err) << err;
+ EXPECT_THAT(results,
+ UnorderedElementsAre(
+ "/working_directory", "/working_directory/path",
+ "/working_directory/path/to", "/working_directory/path/to/a",
+ "/working_directory/path/to/a/file.txt",
+ "/working_directory/path/to/another",
+ "/working_directory/path/to/another/file.txt"));
+}
+
+TEST(KytheVFSTest, AddingFilesCreatesParentDirectories) {
+ using ::llvm::sys::fs::file_type;
+
+ auto files = FileDataFromPaths({
+ "path/to/a/file.txt",
+ "path/to/another/file.txt",
+ });
+ IndexVFS vfs("/working_directory", files, {}, llvm::sys::path::Style::posix);
+ struct Entry {
+ std::string path;
+ file_type type = file_type::directory_file;
+ };
+ std::vector<Entry> expected = {
+ {"/"},
+ {"/working_directory"},
+ {"/working_directory/path"},
+ {"/working_directory/path/to"},
+ {"/working_directory/path/to/a"},
+ {"/working_directory/path/to/a/file.txt", file_type::regular_file},
+ {"/working_directory/path/to/another"},
+ {"/working_directory/path/to/another/file.txt", file_type::regular_file},
+ };
+
+ for (const auto& entry : expected) {
+ EXPECT_THAT(vfs.status(entry.path).get().getType(), entry.type)
+ << "Missing expected path: " << entry.path;
+ }
+}
+
+TEST(KytheVFSTest, RelativeFilesCreatesParentDirectories) {
+ using ::llvm::sys::fs::file_type;
+
+ auto files = FileDataFromPaths({
+ "../path/to/a/file.txt",
+ "../path/to/another/file.txt",
+ });
+ IndexVFS vfs("/working_directory", files, {}, llvm::sys::path::Style::posix);
+ struct Entry {
+ std::string path;
+ file_type type = file_type::directory_file;
+ };
+ std::vector<Entry> expected = {
+ {"/"},
+ {"/working_directory"},
+ {"/path"},
+ {"/path"},
+ {"/path/to"},
+ {"/path/to/a"},
+ {"/path/to/a/file.txt", file_type::regular_file},
+ {"/path/to/another"},
+ {"/path/to/another/file.txt", file_type::regular_file},
+ };
+
+ for (const auto& entry : expected) {
+ EXPECT_THAT(vfs.status(entry.path).get().getType(), entry.type)
+ << "Missing expected path: " << entry.path;
+ }
+}
+
+TEST(KytheVFSTest, DetectStyleFromAbsoluteWorkingDirectoryDoes) {
+ EXPECT_THAT(
+ IndexVFS::DetectStyleFromAbsoluteWorkingDirectory("/posix/style/path"),
+ Optional(llvm::sys::path::Style::posix));
+ EXPECT_THAT(IndexVFS::DetectStyleFromAbsoluteWorkingDirectory(
+ "C:/funky/windows/path"),
+ Optional(llvm::sys::path::Style::windows));
+}
+
+TEST(KytheVFSTest, DirBeginReportsErrorForMissingEntry) {
+ auto files = FileDataFromPaths({});
+ IndexVFS vfs("/working_directory", files, {}, llvm::sys::path::Style::posix);
+ std::error_code err;
+ EXPECT_THAT(vfs.dir_begin("/no/such/file", err),
+ llvm::vfs::directory_iterator());
+ EXPECT_THAT(err, std::make_error_code(std::errc::no_such_file_or_directory));
+}
+
+} // namespace
+} // namespace kythe
diff --git a/kythe/cxx/indexer/cxx/indexer_worklist.h b/kythe/cxx/indexer/cxx/indexer_worklist.h
index 7d367b4b1..c8e8b9e10 100644
--- a/kythe/cxx/indexer/cxx/indexer_worklist.h
+++ b/kythe/cxx/indexer/cxx/indexer_worklist.h
@@ -30,7 +30,7 @@ namespace kythe {
/// \brief An indexer task and its related state.
struct IndexJob {
- explicit IndexJob(clang::Decl* Decl) : Decl(Decl), FileNode(nullptr, "") {}
+ explicit IndexJob(clang::Decl* Decl) : Decl(Decl) {}
/// \brief Build an IndexJob to visit a file's top-level comment.
IndexJob(clang::Decl* Decl, clang::FileID Id,
const GraphObserver::NodeId& FileNode)
@@ -38,7 +38,6 @@ struct IndexJob {
IndexJob(const IndexJob& ParentJob, clang::Decl* Decl,
bool SetPruneIncompleteFunctions, std::string ClaimId)
: Decl(Decl),
- FileNode(nullptr, ""),
UnderneathImplicitTemplateInstantiation(
ParentJob.UnderneathImplicitTemplateInstantiation),
SetPruneIncompleteFunctions(SetPruneIncompleteFunctions),
diff --git a/kythe/cxx/indexer/cxx/marked_source.cc b/kythe/cxx/indexer/cxx/marked_source.cc
index 1bf75cf23..a92bf6aae 100644
--- a/kythe/cxx/indexer/cxx/marked_source.cc
+++ b/kythe/cxx/indexer/cxx/marked_source.cc
@@ -437,8 +437,7 @@ class DeclAnnotator : public clang::DeclVisitor<DeclAnnotator> {
if (ret_type_range.isValid()) {
InsertAnnotation(ret_type_range, Annotation{Annotation::Type});
} else {
- LOG(WARNING) << "Invalid return type range for "
- << decl->getNameAsString();
+ VLOG(1) << "Invalid return type range for " << decl->getNameAsString();
}
}
@@ -486,7 +485,7 @@ class DeclAnnotator : public clang::DeclVisitor<DeclAnnotator> {
// clogging log output.
if (annotation.kind != Annotation::QualifiedName &&
IsValidRange(cache_->source_manager(), original_range)) {
- LOG(WARNING)
+ VLOG(1)
<< "Invalid annotation range (" << annotation.kind << "): '"
<< original_range.getBegin().printToString(cache_->source_manager())
<< "' to '"
@@ -833,8 +832,8 @@ MarkedSourceGenerator::GenerateMarkedSourceUsingSource(
auto formatted_range = Reformat(cache_->lang_options(), range.str(),
&replacements, &incomplete);
if (incomplete) {
- LOG(WARNING) << "Incomplete reformatting for " << decl_id.getRawIdentity()
- << " (" << decl_->getQualifiedNameAsString() << ")";
+ VLOG(1) << "Incomplete reformatting for " << decl_id.getRawIdentity()
+ << " (" << decl_->getQualifiedNameAsString() << ")";
return absl::nullopt;
}
DeclAnnotator annotator(cache_, &replacements, start_loc, formatted_range,
diff --git a/kythe/cxx/indexer/cxx/recursive_type_visitor.h b/kythe/cxx/indexer/cxx/recursive_type_visitor.h
index 16efc2836..0a302c683 100644
--- a/kythe/cxx/indexer/cxx/recursive_type_visitor.h
+++ b/kythe/cxx/indexer/cxx/recursive_type_visitor.h
@@ -273,6 +273,7 @@ DEF_TRAVERSE_TYPEPAIR(FunctionProtoType, {
});
DEF_TRAVERSE_TYPEPAIR(UnresolvedUsingType, {});
DEF_TRAVERSE_TYPEPAIR(TypedefType, {});
+DEF_TRAVERSE_TYPEPAIR(UsingType, {});
DEF_TRAVERSE_TYPEPAIR(TypeOfExprType, {
return getDerived().TraverseStmt(TL.getUnderlyingExpr());
});
@@ -295,6 +296,7 @@ DEF_TRAVERSE_TYPEPAIR(DeducedTemplateSpecializationType, {
TL.getTypePtr()->getTemplateName()) &&
getDerived().TraverseType(TL.getTypePtr()->getDeducedType());
});
+DEF_TRAVERSE_TYPEPAIR(BTFTagAttributedType, {});
DEF_TRAVERSE_TYPEPAIR(RecordType, {});
DEF_TRAVERSE_TYPEPAIR(EnumType, {});
DEF_TRAVERSE_TYPEPAIR(TemplateTypeParmType, {});
@@ -355,8 +357,8 @@ DEF_TRAVERSE_TYPEPAIR(DependentTemplateSpecializationType, {
DEF_TRAVERSE_TYPEPAIR(PackExpansionType, {
return getDerived().TraverseTypePair(TL.getPatternLoc(), T->getPattern());
});
-DEF_TRAVERSE_TYPEPAIR(ExtIntType, {});
-DEF_TRAVERSE_TYPEPAIR(DependentExtIntType, {
+DEF_TRAVERSE_TYPEPAIR(BitIntType, {});
+DEF_TRAVERSE_TYPEPAIR(DependentBitIntType, {
return getDerived().TraverseStmt(T->getNumBitsExpr());
});
DEF_TRAVERSE_TYPEPAIR(ObjCTypeParamType, {});
diff --git a/kythe/cxx/indexer/cxx/testdata/BUILD b/kythe/cxx/indexer/cxx/testdata/BUILD
index e5522c44b..68026fdcb 100644
--- a/kythe/cxx/indexer/cxx/testdata/BUILD
+++ b/kythe/cxx/indexer/cxx/testdata/BUILD
@@ -268,6 +268,19 @@ cc_indexer_test(
)
cc_indexer_test(
+ name = "tvar_auto_zoo",
+ srcs = ["basic/tvar_auto_zoo.cc"],
+ check_for_singletons = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++14",
+ tags = [
+ "basic",
+ "c++14",
+ ],
+)
+
+cc_indexer_test(
name = "enum_fwd_ref",
srcs = ["basic/enum_fwd_ref.cc"],
tags = ["basic"],
@@ -277,6 +290,7 @@ cc_indexer_test(
name = "builtin_functions",
srcs = ["basic/builtin_functions.c"],
check_for_singletons = True,
+ copts = ["-Wno-error=implicit-function-declaration"],
std = "gnu99",
tags = ["basic"],
)
@@ -870,6 +884,11 @@ cc_extract_kzip(
name = "vname_corpus_kzip",
srcs = ["basic/vname_corpus.cc"],
corpus = "unit",
+ opts = [
+ "-DMY_MACRO=1",
+ "-UMY_MACRO",
+ "-DMY_MACRO=2",
+ ],
vnames_config = "basic/vname_corpus.json",
)
@@ -1085,6 +1104,24 @@ cc_indexer_test(
)
cc_indexer_test(
+ name = "function_lambda_explicit_this",
+ srcs = ["function/function_lambda_explicit_this.cc"],
+ ignore_dups = True,
+ tags = [
+ "function",
+ ],
+)
+
+cc_indexer_test(
+ name = "function_lambda_implicit_this",
+ srcs = ["function/function_lambda_implicit_this.cc"],
+ ignore_dups = True,
+ tags = [
+ "function",
+ ],
+)
+
+cc_indexer_test(
name = "function_constexpr_lambda",
srcs = ["function/function_constexpr_lambda.cc"],
ignore_dups = True,
@@ -1450,6 +1487,48 @@ cc_indexer_test(
)
cc_indexer_test(
+ name = "tvar_docs_template_alias",
+ srcs = ["docs/tvar_docs_template_alias.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["docs"],
+)
+
+cc_indexer_test(
+ name = "tvar_docs_template_function",
+ srcs = ["docs/tvar_docs_template_function.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["docs"],
+)
+
+cc_indexer_test(
+ name = "tvar_docs_template_record",
+ srcs = ["docs/tvar_docs_template_record.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["docs"],
+)
+
+cc_indexer_test(
+ name = "tvar_docs_template_var",
+ srcs = ["docs/tvar_docs_template_var.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["docs"],
+)
+
+cc_indexer_test(
+ name = "tvar_docs_template_partial_spec_record",
+ srcs = ["docs/tvar_docs_template_partial_spec_record.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["docs"],
+)
+
+cc_indexer_test(
+ name = "tvar_docs_template_partial_spec_var",
+ srcs = ["docs/tvar_docs_template_partial_spec_var.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["docs"],
+)
+
+cc_indexer_test(
name = "docs_template_alias",
srcs = ["docs/docs_template_alias.cc"],
tags = ["docs"],
@@ -1487,7 +1566,7 @@ cc_indexer_test(
cc_indexer_test(
name = "docs_template_partial_spec_var",
- srcs = ["docs/docs_template_partial_spec_record.cc"],
+ srcs = ["docs/docs_template_partial_spec_var.cc"],
tags = ["docs"],
)
@@ -1680,6 +1759,13 @@ cc_indexer_test(
)
cc_indexer_test(
+ name = "tvar_rec_class_base_dependent",
+ srcs = ["rec/tvar_rec_class_base_dependent.cc"],
+ experimental_use_abs_nodes = False,
+ tags = ["rec"],
+)
+
+cc_indexer_test(
name = "rec_class_base_recurring",
srcs = ["rec/rec_class_base_recurring.cc"],
tags = ["rec"],
@@ -2155,7 +2241,7 @@ cc_indexer_test(
check_for_singletons = True,
ignore_dups = True,
tags = ["template"],
- template_instance_exclude_path_pattern = ".*exclude.*",
+ template_instance_exclude_path_pattern = ".*/exclude.*",
deps = [
"template/exclude_this_file.h",
"template/include_this_file.h",
@@ -2562,6 +2648,886 @@ test_suite(
tags = ["template"],
)
+# A note on all the ignore_dups = True lines: experimental_use_abs_nodes = False
+# implies the effects of experimental_alias_template_instantiations = True,
+# leading to more duplicate ("aliased") output.
+cc_indexer_test(
+ name = "tvar_template_alias",
+ srcs = ["tvar_template/template_alias.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_decl_arg",
+ srcs = ["tvar_template/template_decl_arg.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_alias_naming",
+ srcs = ["tvar_template/template_alias_naming.cc"],
+ check_for_singletons = True,
+ experimental_alias_template_instantiations = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_type_alias_param",
+ srcs = ["tvar_template/template_type_alias_param.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_alias_implicit_instantiation",
+ srcs = ["tvar_template/template_alias_implicit_instantiation.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_alias_implicit_instantiation_decls",
+ srcs = ["tvar_template/template_alias_implicit_instantiation_decls.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_alias_multilevel_abs",
+ srcs = ["tvar_template/template_alias_multilevel_abs.cc"],
+ check_for_singletons = True,
+ experimental_alias_template_instantiations = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ ignore_unimplemented = True, # hash of SubstTemplateTemplateParm
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_arg_multiple_typename",
+ srcs = ["tvar_template/template_arg_multiple_typename.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_arg_typename",
+ srcs = ["tvar_template/template_arg_typename.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_blame_member",
+ srcs = ["tvar_template/template_blame_member.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_blame_spec",
+ srcs = ["tvar_template/template_blame_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_blame_pspec_member",
+ srcs = ["tvar_template/template_blame_pspec_member.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_blame_spec_member",
+ srcs = ["tvar_template/template_blame_spec_member.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_template_ctor",
+ srcs = ["tvar_template/template_class_template_ctor.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_ctor_default_and_init",
+ srcs = ["tvar_template/template_class_ctor_default_and_init.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_defn",
+ srcs = ["tvar_template/template_class_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_fn_spec",
+ srcs = ["tvar_template/template_class_fn_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_inner",
+ srcs = ["tvar_template/template_class_inner.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_inst_explicit",
+ srcs = ["tvar_template/template_class_inst_explicit.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_inst_implicit",
+ srcs = ["tvar_template/template_class_inst_implicit.cc"],
+ experimental_use_abs_nodes = False,
+ # Type alias alias inside a class template gets the same documentation text.
+ # TODO(zarko): Should the two aliases be distinctly named?
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_inst_implicit_dependent",
+ srcs = ["tvar_template/template_class_inst_implicit_dependent.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_inst_vs_spec",
+ srcs = ["tvar_template/template_class_inst_vs_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_ref",
+ srcs = ["tvar_template/template_class_ref.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_ref_ps",
+ srcs = ["tvar_template/template_class_ref_ps.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_skip_implicit_on",
+ srcs = ["tvar_template/template_class_skip_implicit_on.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ index_template_instantiations = False,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depbase_field_ref",
+ srcs = ["tvar_template/template_depbase_field_ref.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_dependent_ctor",
+ srcs = ["tvar_template/template_dependent_ctor.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_dependent_ctor_small",
+ srcs = ["tvar_template/template_dependent_ctor_small.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_dependent_dtor",
+ srcs = ["tvar_template/template_dependent_dtor.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_dependent_dtor_qualified",
+ srcs = ["tvar_template/template_dependent_dtor_qualified.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template/template_dependent_name_ref",
+ srcs = ["tvar_template/template_dependent_name_ref.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_dependent_sized_array",
+ srcs = ["tvar_template/template_dependent_sized_array.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depexpr_field_ref",
+ srcs = ["tvar_template/template_depexpr_field_ref.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depname_field_ref",
+ srcs = ["tvar_template/template_depname_field_ref.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depname_template_field_ref",
+ srcs = ["tvar_template/template_depname_template_field_ref.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depname_class",
+ srcs = ["tvar_template/template_depname_class.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depname_implicit",
+ srcs = ["tvar_template/template_depname_implicit.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depname_inst_class",
+ srcs = ["tvar_template/template_depname_inst_class.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ ignore_unimplemented = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_depname_path_graph",
+ srcs = ["tvar_template/template_depname_path_graph.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_drop_redundant_wraiths_off",
+ srcs = ["tvar_template/template_drop_redundant_wraiths.cc"],
+ experimental_drop_instantiation_independent_data = False,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_drop_redundant_wraiths_on",
+ srcs = ["tvar_template/template_drop_redundant_wraiths.cc"],
+ experimental_drop_instantiation_independent_data = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_drop_redundant_wraiths_off_expect_fail",
+ srcs = ["tvar_template/template_drop_redundant_wraiths_expect_fail.cc"],
+ experimental_drop_instantiation_independent_data = False,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_drop_redundant_wraiths_on_expect_fail",
+ srcs = ["tvar_template/template_drop_redundant_wraiths_expect_fail.cc"],
+ expect_fail_verify = True,
+ experimental_drop_instantiation_independent_data = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_exclude",
+ srcs = ["tvar_template/template_exclude.cc"],
+ check_for_singletons = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+ template_instance_exclude_path_pattern = ".*/exclude.*",
+ deps = [
+ "tvar_template/exclude_this_file.h",
+ "tvar_template/include_this_file.h",
+ ],
+)
+
+cc_indexer_test(
+ name = "tvar_template_field",
+ srcs = ["tvar_template/template_field.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_file_call",
+ srcs = ["tvar_template/template_file_call.cc"],
+ check_for_singletons = True,
+ convert_marked_source = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++17",
+ tags = [
+ "c++17",
+ "tvar_template",
+ ],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_call",
+ srcs = ["tvar_template/template_fn_call.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_decl",
+ srcs = ["tvar_template/template_fn_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_decl_defn",
+ srcs = ["tvar_template/template_fn_decl_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_defines",
+ srcs = ["tvar_template/template_fn_defines.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_defn",
+ srcs = ["tvar_template/template_fn_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_dependent_spec_defn",
+ srcs = ["tvar_template/template_fn_dependent_spec_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_explicit_spec_completes",
+ srcs = ["tvar_template/template_fn_explicit_spec_completes.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_explicit_spec_with_default_completes",
+ srcs = ["tvar_template/template_fn_explicit_spec_with_default_completes.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_implicit_spec",
+ srcs = ["tvar_template/template_fn_implicit_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_inst_vs_spec",
+ srcs = ["tvar_template/template_fn_inst_vs_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_member_spec_defn",
+ srcs = ["tvar_template/template_fn_member_spec_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_multi_decl_def",
+ srcs = ["tvar_template/template_fn_multi_decl_def.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_multiple_implicit_spec",
+ srcs = ["tvar_template/template_fn_multiple_implicit_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_overload",
+ srcs = ["tvar_template/template_fn_overload.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_spec",
+ srcs = ["tvar_template/template_fn_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_spec_decl",
+ srcs = ["tvar_template/template_fn_spec_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_spec_defn_decl",
+ srcs = ["tvar_template/template_fn_spec_defn_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_spec_defn_defn_decl_decl",
+ srcs = ["tvar_template/template_fn_spec_defn_defn_decl_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fn_spec_overload",
+ srcs = ["tvar_template/template_fn_spec_overload.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_incomplete_array",
+ srcs = ["tvar_template/template_incomplete_array.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_instance_type_from_class",
+ srcs = ["tvar_template/template_instance_type_from_class.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_nested_name",
+ srcs = ["tvar_template/template_nested_name.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_multilevel_argument",
+ srcs = ["tvar_template/template_multilevel_argument.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_pack_fn_decl",
+ srcs = ["tvar_template/template_pack_fn_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_pack_fn_mono_call",
+ srcs = ["tvar_template/template_pack_fn_mono_call.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_pack_fn_pack_call",
+ srcs = ["tvar_template/template_pack_fn_pack_call.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_pack_rec_pack_call",
+ srcs = ["tvar_template/template_pack_rec_pack_call.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_ps_completes",
+ srcs = ["tvar_template/template_ps_completes.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_ps_decl",
+ srcs = ["tvar_template/template_ps_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_ps_defn",
+ srcs = ["tvar_template/template_ps_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_ps_multiple_decl",
+ srcs = ["tvar_template/template_ps_multiple_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_ps_twovar_decl",
+ srcs = ["tvar_template/template_ps_twovar_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_rec_member_abs",
+ srcs = ["tvar_template/template_rec_member_abs.cc"],
+ experimental_alias_template_instantiations = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_rec_override",
+ srcs = ["tvar_template/template_rec_override.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_rec_override_root",
+ srcs = ["tvar_template/template_rec_override_root.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_rec_override_root_aliasing",
+ srcs = ["tvar_template/template_rec_override_root_aliasing.cc"],
+ check_for_singletons = True,
+ experimental_alias_template_instantiations = True,
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_redundant_constituents_anchored",
+ srcs = ["tvar_template/template_redundant_constituents_anchored.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_static_member",
+ srcs = ["tvar_template/template_static_member.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_two_arg_spec",
+ srcs = ["tvar_template/template_two_arg_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_ty_typename",
+ srcs = ["tvar_template/template_ty_typename.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_unresolved_ctor_expr",
+ srcs = ["tvar_template/template_unresolved_ctor_expr.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_decl",
+ srcs = ["tvar_template/template_var_decl.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_defn",
+ srcs = ["tvar_template/template_var_defn.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_defn_completes",
+ srcs = ["tvar_template/template_var_defn_completes.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_explicit_spec",
+ srcs = ["tvar_template/template_var_explicit_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_implicit_spec",
+ srcs = ["tvar_template/template_var_implicit_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_inst_total_spec",
+ srcs = ["tvar_template/template_var_inst_total_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_ps",
+ srcs = ["tvar_template/template_var_ps.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_ps_completes",
+ srcs = ["tvar_template/template_var_ps_completes.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_ps_implicit_spec",
+ srcs = ["tvar_template/template_var_ps_implicit_spec.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_ref_ps",
+ srcs = ["tvar_template/template_var_ref_ps.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_var_constexpr",
+ srcs = ["tvar_template/template_var_constexpr.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++14",
+ tags = ["tvar_template"],
+)
+
+cc_indexer_test(
+ name = "tvar_generic_lambda",
+ srcs = ["tvar_template/generic_lambda.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++14",
+ tags = ["tvar_template, c++14"],
+)
+
+cc_indexer_test(
+ name = "tvar_template_using_pack_expansion",
+ srcs = ["tvar_template/template_using_pack_expansion.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++17",
+ tags = [
+ "c++17",
+ "tvar_template",
+ ],
+)
+
+cc_indexer_test(
+ name = "tvar_template_auto_parameter",
+ srcs = ["tvar_template/template_auto_parameter.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++17",
+ tags = [
+ "c++17",
+ "tvar_template",
+ ],
+)
+
+cc_indexer_test(
+ name = "tvar_template_fold_expressions",
+ srcs = ["tvar_template/template_fold_expressions.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ std = "c++17",
+ tags = [
+ "c++17",
+ "tvar_template",
+ ],
+)
+
+cc_indexer_test(
+ name = "tvar_template_class_ctor_deduction",
+ srcs = ["tvar_template/template_class_ctor_deduction.cc"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ ignore_unimplemented = True,
+ std = "c++17",
+ tags = [
+ "c++17",
+ "tvar_template",
+ ],
+)
+
+test_suite(
+ name = "indexer_tvar_template",
+ tags = ["tvar_template"],
+)
+
cc_indexer_test(
name = "ms_absvar",
srcs = ["marked_source/ms_absvar.cc"],
@@ -2571,6 +3537,15 @@ cc_indexer_test(
)
cc_indexer_test(
+ name = "tvar_ms_absvar",
+ srcs = ["marked_source/tvar_ms_absvar.cc"],
+ convert_marked_source = True,
+ experimental_use_abs_nodes = False,
+ std = "c++14",
+ tags = ["marked_source"],
+)
+
+cc_indexer_test(
name = "ms_array",
srcs = ["marked_source/ms_array.cc"],
convert_marked_source = True,
@@ -2999,6 +3974,116 @@ objc_indexer_test(
)
objc_indexer_test(
+ name = "tvar_generic_bound",
+ srcs = ["objc/tvar_generics/generic_bound.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_contravariant_decl",
+ srcs = ["objc/tvar_generics/generic_contravariant_decl.m"],
+ experimental_use_abs_nodes = False,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_contravariant_restricted_super_class",
+ srcs = ["objc/tvar_generics/generic_contravariant_restricted_super_class.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_covariant_decl",
+ srcs = ["objc/tvar_generics/generic_covariant_decl.m"],
+ experimental_use_abs_nodes = False,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_covariant_restricted_super_class",
+ srcs = ["objc/tvar_generics/generic_covariant_restricted_super_class.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_inherited",
+ srcs = ["objc/tvar_generics/generic_inherited.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_invariant",
+ srcs = ["objc/tvar_generics/generic_invariant.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_instantiation",
+ srcs = ["objc/tvar_generics/generic_instantiation.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_method_call",
+ srcs = ["objc/tvar_generics/generic_method_call.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_method_type",
+ srcs = ["objc/tvar_generics/generic_method_type.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_nested",
+ srcs = ["objc/tvar_generics/generic_nested.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_restricted_protocol",
+ srcs = ["objc/tvar_generics/generic_restricted_protocol.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_two_args",
+ srcs = ["objc/tvar_generics/generic_two_args.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
+ name = "tvar_generic_unbound",
+ srcs = ["objc/tvar_generics/generic_unbound.m"],
+ experimental_use_abs_nodes = False,
+ ignore_dups = True,
+ tags = ["objc"],
+)
+
+objc_indexer_test(
name = "id_instance_method",
srcs = ["objc/id_instance_method.m"],
tags = ["objc"],
@@ -3327,6 +4412,30 @@ cc_indexer_test(
)
cc_indexer_test(
+ name = "df_operatoreq",
+ srcs = ["df/df_operatoreq.cc"],
+ experimental_record_dataflow_edges = True,
+ ignore_dups = True,
+ tags = ["df"],
+)
+
+cc_indexer_test(
+ name = "df_operatorpluseq",
+ srcs = ["df/df_operatorpluseq.cc"],
+ experimental_record_dataflow_edges = True,
+ ignore_dups = True,
+ tags = ["df"],
+)
+
+cc_indexer_test(
+ name = "df_operatorplusplus",
+ srcs = ["df/df_operatorplusplus.cc"],
+ experimental_record_dataflow_edges = True,
+ ignore_dups = True,
+ tags = ["df"],
+)
+
+cc_indexer_test(
name = "df_unary",
srcs = ["df/df_unary.cc"],
experimental_record_dataflow_edges = True,
diff --git a/kythe/cxx/indexer/cxx/testdata/basic/tvar_auto_zoo.cc b/kythe/cxx/indexer/cxx/testdata/basic/tvar_auto_zoo.cc
new file mode 100644
index 000000000..9a11b8cc9
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/basic/tvar_auto_zoo.cc
@@ -0,0 +1,27 @@
+// Checks various uses of `auto` from the Standard.
+
+//- @auto ref GenericLambda
+//- GenericLambda.node/kind record
+auto glambda =
+//- @int ref IntType
+//- @auto ref ImplicitTyvar
+//- ImplicitTyvar.node/kind tvar
+ [](int i, auto a) { return i; };
+
+//- @auto ref IntType
+auto x = 5;
+
+//- @auto ref IntType
+const auto *v = &x, u = 6;
+
+//- @double ref DoubleType
+double q = 0.0;
+
+//- @auto ref DoubleType
+static auto y = 0.0;
+
+// 'auto' here is just a syntactic wart.
+// auto f() -> int;
+
+//- @auto ref DoubleType
+auto g() { return 0.0; }
diff --git a/kythe/cxx/indexer/cxx/testdata/basic/using_declaration_ref.cc b/kythe/cxx/indexer/cxx/testdata/basic/using_declaration_ref.cc
index fb7f7b630..9ad353478 100644
--- a/kythe/cxx/indexer/cxx/testdata/basic/using_declaration_ref.cc
+++ b/kythe/cxx/indexer/cxx/testdata/basic/using_declaration_ref.cc
@@ -1,6 +1,14 @@
namespace nasa {
//- @Shuttle defines/binding StructS
-struct Shuttle {};
+struct Shuttle {
+ //- @Shuttle defines/binding ShuttleCtor
+ explicit Shuttle(int);
+
+ //- @Launch defines/binding MemLaunch
+ void Launch();
+ //- @Launch defines/binding MemLaunchInt
+ void Launch(int);
+};
//- @Launch defines/binding FnLaunch
void Launch();
//- @Launch defines/binding FnLaunchInt
@@ -13,4 +21,36 @@ using nasa::Shuttle;
//- @Launch ref FnLaunch
//- @Launch ref FnLaunchInt
using nasa::Launch;
+
+//- @Discovery defines/binding StructD
+struct Discovery : Shuttle {
+ //- @#1Shuttle ref ShuttleCtor
+ using Shuttle::Shuttle;
+
+ //- @Launch ref MemLaunch
+ //- @Launch ref MemLaunchInt
+ using Shuttle::Launch;
+};
+
+struct Endeavour : Discovery {
+ //- @#1Discovery ref ShuttleCtor
+ using Discovery::Discovery;
+};
+
+void fn() {
+ //- @Shuttle ref StructS
+ //- @s ref ShuttleCtor
+ //- @"s(1)" ref/call ShuttleCtor
+ Shuttle s(1);
+ //- @Discovery ref StructD
+ //- @d ref ShuttleCtor
+ //- @"d(1)" ref/call ShuttleCtor
+ Discovery d(1);
+ //- @Launch ref MemLaunch
+ d.Launch();
+
+ //- @end ref ShuttleCtor
+ //- @"end(1)" ref/call ShuttleCtor
+ Endeavour end(1);
+}
}
diff --git a/kythe/cxx/indexer/cxx/testdata/basic/vname_corpus.cc b/kythe/cxx/indexer/cxx/testdata/basic/vname_corpus.cc
index 03c6137bb..d81bd4842 100644
--- a/kythe/cxx/indexer/cxx/testdata/basic/vname_corpus.cc
+++ b/kythe/cxx/indexer/cxx/testdata/basic/vname_corpus.cc
@@ -2,6 +2,8 @@
// compilation unit's.
//- vname("", "file", "", "kythe/cxx/indexer/cxx/testdata/basic/vname_corpus.cc", "").node/kind file
+#undef MY_MACRO
+
// Simple types get the corpus from the file.
//- @S=vname(_,"file",_,_,_) defines/binding StructDef=vname(_,"file",_,_,_)
struct S {};
diff --git a/kythe/cxx/indexer/cxx/testdata/df/df_operatoreq.cc b/kythe/cxx/indexer/cxx/testdata/df/df_operatoreq.cc
new file mode 100644
index 000000000..8bdf15537
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/df/df_operatoreq.cc
@@ -0,0 +1,14 @@
+// We treat calls to operator= the same way we treat primitive assignment.
+struct S { S& operator=(const S&) = default; };
+
+void f() {
+ //- @a defines/binding Sa
+ //- @b defines/binding Sb
+ S a, b;
+ //- @a ref/writes Sa
+ //- @b ref Sb
+ //- Sb influences Sa
+ //- !{Sa influences Sa}
+ //- !{@b ref/writes _}
+ a = b;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/df/df_operatorpluseq.cc b/kythe/cxx/indexer/cxx/testdata/df/df_operatorpluseq.cc
new file mode 100644
index 000000000..5077c4981
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/df/df_operatorpluseq.cc
@@ -0,0 +1,25 @@
+// We treat calls to operator+= the same way we treat primitive assignment.
+struct S { S& operator+=(const S&); };
+S& operator-=(S&, const S&);
+
+void f() {
+ //- @a defines/binding Sa
+ //- @b defines/binding Sb
+ //- @c defines/binding Sc
+ //- @d defines/binding Sd
+ S a, b, c, d;
+ //- @a ref/writes Sa
+ //- @b ref Sb
+ //- Sb influences Sa
+ //- Sa influences Sa
+ //- !{Sb influences Sb}
+ //- !{@b ref/writes _}
+ a += b;
+ //- @c ref/writes Sc
+ //- @d ref Sd
+ //- Sd influences Sc
+ //- Sc influences Sc
+ //- !{Sd influences Sd}
+ //- !{@d ref/writes _}
+ c -= d;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/df/df_operatorplusplus.cc b/kythe/cxx/indexer/cxx/testdata/df/df_operatorplusplus.cc
new file mode 100644
index 000000000..93b78fded
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/df/df_operatorplusplus.cc
@@ -0,0 +1,15 @@
+// We treat calls to operator++ the same way we treat primitive assignment.
+struct S { S& operator++(); };
+S operator--(S&);
+
+void f() {
+ //- @a defines/binding Sa
+ //- @b defines/binding Sb
+ S a, b;
+ //- @a ref/writes Sa
+ //- Sa influences Sa
+ ++a;
+ //- @b ref/writes Sb
+ //- Sb influences Sb
+ --b;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/df/df_unary.cc b/kythe/cxx/indexer/cxx/testdata/df/df_unary.cc
index 43765971d..534dc6ed2 100644
--- a/kythe/cxx/indexer/cxx/testdata/df/df_unary.cc
+++ b/kythe/cxx/indexer/cxx/testdata/df/df_unary.cc
@@ -16,7 +16,7 @@ void f() {
//- VarX influences VarX
//- !{ @x ref/writes VarX }
//- !{ @z ref/writes VarZ }
- //- // !{ @y ref VarY } todo(zarko): transitional change.
+ //- !{ @y ref VarY }
//- @z ref VarZ
//- @x ref VarX
//- @y ref/writes VarY
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/docs_template_partial_spec_var.cc b/kythe/cxx/indexer/cxx/testdata/docs/docs_template_partial_spec_var.cc
index 4905d3b2a..df3801964 100644
--- a/kythe/cxx/indexer/cxx/testdata/docs/docs_template_partial_spec_var.cc
+++ b/kythe/cxx/indexer/cxx/testdata/docs/docs_template_partial_spec_var.cc
@@ -10,4 +10,6 @@ template <typename T> int S = 1;
template <typename T> int S<T*> = 2;
//- Abs.node/kind abs
-//- Var.node/kind variable
+//- // Var.node/kind variable -- should hold; hasn't been a problem in
+//- // production thanks to clustering. Since abs nodes are being deprecated
+//- // this is doubly not an issue.
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_alias.cc b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_alias.cc
new file mode 100644
index 000000000..16e265422
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_alias.cc
@@ -0,0 +1,9 @@
+// We index documentation for type alias templates.
+
+//- @+2"/// Alias." documents Alias
+
+/// Alias.
+template<typename U>
+using T = int;
+
+//- Alias.node/kind talias
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_function.cc b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_function.cc
new file mode 100644
index 000000000..2b93182c4
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_function.cc
@@ -0,0 +1,8 @@
+// We attach documentation to function templates.
+
+//- @+2"/// Empty." documents Fun
+
+/// Empty.
+template <typename T> void f(T t) { }
+
+//- Fun.node/kind function
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_record.cc b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_record.cc
new file mode 100644
index 000000000..5bf450c04
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_record.cc
@@ -0,0 +1,10 @@
+// We associate template partial specialization documentation correctly.
+
+template <typename T> struct S { };
+
+//- @+2"/// Special." documents Record
+
+/// Special.
+template <typename T> struct S<T*> { };
+
+//- Record.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_var.cc b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_var.cc
new file mode 100644
index 000000000..ff095491d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_partial_spec_var.cc
@@ -0,0 +1,11 @@
+// We associate template partial specialization documentation correctly.
+
+/// Empty.
+template <typename T> int S = 1;
+
+//- @+2"/// Special." documents Var
+
+/// Special.
+template <typename T> int S<T*> = 2;
+
+//- Var.node/kind variable
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_record.cc b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_record.cc
new file mode 100644
index 000000000..7d528bb2f
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_record.cc
@@ -0,0 +1,7 @@
+// Checks that we associate template documentation correctly.
+//- @+2"/// Empty." documents Record
+
+/// Empty.
+template <typename T> struct S { };
+
+//- Record.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_var.cc b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_var.cc
new file mode 100644
index 000000000..34d7b04a2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/docs/tvar_docs_template_var.cc
@@ -0,0 +1,7 @@
+// Checks that we associate template documentation correctly.
+//- @+2"/// Empty." documents Var
+
+/// Empty.
+template <typename T> int V = 1;
+
+//- Var.node/kind variable
diff --git a/kythe/cxx/indexer/cxx/testdata/function/function_ctor_init_refs.cc b/kythe/cxx/indexer/cxx/testdata/function/function_ctor_init_refs.cc
index aabe25cd1..a1028420d 100644
--- a/kythe/cxx/indexer/cxx/testdata/function/function_ctor_init_refs.cc
+++ b/kythe/cxx/indexer/cxx/testdata/function/function_ctor_init_refs.cc
@@ -5,8 +5,8 @@ class A {
};
class C {
- //- @ivar ref IVar
- //- @avar ref AVar
+ //- @ivar ref/writes IVar
+ //- @avar ref/writes AVar
C() : ivar(88), avar(A(20)) { }
//- @ivar defines/binding IVar
diff --git a/kythe/cxx/indexer/cxx/testdata/function/function_lambda_explicit_this.cc b/kythe/cxx/indexer/cxx/testdata/function/function_lambda_explicit_this.cc
new file mode 100644
index 000000000..a4ab1e39c
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/function/function_lambda_explicit_this.cc
@@ -0,0 +1,20 @@
+// We index lambdas which explicitly capture `this`.
+
+//- @S defines/binding StructS
+struct S {
+ void f() const {
+ //- !{ @this ref StructS }
+ [this] {
+ //- @g ref MethodG
+ //- @m ref FieldM
+ //- !{ @g ref StructS }
+ g() + m;
+ };
+ }
+
+ //- @g defines/binding MethodG
+ int g() const;
+
+ //- @m defines/binding FieldM
+ int m;
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/function/function_lambda_implicit_this.cc b/kythe/cxx/indexer/cxx/testdata/function/function_lambda_implicit_this.cc
new file mode 100644
index 000000000..9e14514a5
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/function/function_lambda_implicit_this.cc
@@ -0,0 +1,25 @@
+// We index lambdas which implicitly capture this via either `=` or `&`.
+
+//- @S defines/binding StructS
+struct S {
+ void f() const {
+ [&] {
+ //- @g ref MethodG
+ //- @m ref FieldM
+ //- !{ @g ref StructS }
+ g() + m;
+ };
+ [=] {
+ //- @g ref MethodG
+ //- @m ref FieldM
+ //- !{ @g ref StructS }
+ g() + m;
+ };
+ }
+
+ //- @g defines/binding MethodG
+ int g() const;
+
+ //- @m defines/binding FieldM
+ int m;
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/function/function_lambda_value_this.cc b/kythe/cxx/indexer/cxx/testdata/function/function_lambda_value_this.cc
index 1fdd9b961..2aac45e9c 100644
--- a/kythe/cxx/indexer/cxx/testdata/function/function_lambda_value_this.cc
+++ b/kythe/cxx/indexer/cxx/testdata/function/function_lambda_value_this.cc
@@ -3,9 +3,11 @@
//- @S defines/binding StructS
struct S {
void f() const {
+ //- !{ @this ref StructS }
[*this] {
//- @g ref MethodG
//- @m ref FieldM
+ //- !{ @g ref StructS }
g() + m;
};
}
diff --git a/kythe/cxx/indexer/cxx/testdata/marked_source/tvar_ms_absvar.cc b/kythe/cxx/indexer/cxx/testdata/marked_source/tvar_ms_absvar.cc
new file mode 100644
index 000000000..84bbb02e3
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/marked_source/tvar_ms_absvar.cc
@@ -0,0 +1,18 @@
+// We emit MarkedSource for absvars.
+//- @T defines/binding TvarT
+//- TvarT.node/kind tvar
+//- TvarT code TRoot
+//- TRoot.kind "IDENTIFIER"
+//- TRoot.pre_text "T"
+template <typename T>
+T t;
+
+namespace ns {
+//- @T defines/binding TvarTS
+//- TvarTS.node/kind tvar
+//- TvarTS code TSRoot
+//- TSRoot.kind "IDENTIFIER"
+//- TSRoot.pre_text "T"
+template <typename T>
+T s;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/metadata/metadata_semantic.cc b/kythe/cxx/indexer/cxx/testdata/metadata/metadata_semantic.cc
index 237a5fe94..397d1e4d8 100644
--- a/kythe/cxx/indexer/cxx/testdata/metadata/metadata_semantic.cc
+++ b/kythe/cxx/indexer/cxx/testdata/metadata/metadata_semantic.cc
@@ -4,7 +4,7 @@
void foo();
void bar() {
- //- @"foo()" ref/writes vname(gsig, gcorp, groot, gpath, glang)
+ //- @foo ref/writes vname(gsig, gcorp, groot, gpath, glang)
//- @foo ref FnFoo
//- @"foo()" ref/call FnFoo
foo();
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/README b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/README
new file mode 100644
index 000000000..d192cb28c
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/README
@@ -0,0 +1,5 @@
+For a good write-up on generics in Objective C, read
+https://lists.gnu.org/archive/html/gnustep-dev/2015-07/msg00006.html.
+
+A possibly useful commit message about type arguments is here:
+http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150706/132422.html
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_bound.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_bound.m
new file mode 100644
index 000000000..abbb65c10
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_bound.m
@@ -0,0 +1,44 @@
+// Test lightweight bound generics used to define a class.
+
+//- @O1 defines/binding O1Decl
+@interface O1
+@end
+
+//- @O1 defines/binding O1Impl
+@implementation O1
+@end
+
+//- @O2 defines/binding O2Decl
+@interface O2
+@end
+
+//- @O2 defines/binding O2Impl
+@implementation O2
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+//- TypeVar bounded/upper O2Ptr
+//- O2Ptr.node/kind tapp
+//- O2Ptr param.0 vname("ptr#builtin", _, _, _, _)
+//- O2Ptr param.1 O2Impl
+//- @O2 ref O2Impl
+@interface Box<Type:O2*> : O1
+-(int) doSomething:(Type)t;
+@end
+
+//- @Box completes/uniquely BoxDecl
+//- @Box defines/binding BoxImpl
+//- File.node/kind file
+@implementation Box
+-(int) doSomething:(id)t {
+ return 0;
+}
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_decl.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_decl.m
new file mode 100644
index 000000000..7ca53ce63
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_decl.m
@@ -0,0 +1,22 @@
+// Test lightweight generics (contravariant) used to define a class. The
+// contravariant modifier is ignored and should have no impact on the indexer.
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- TypeVar.variance contravariant
+//- BoxDecl tparam.0 TypeVar
+@interface Box<__contravariant Type>
+-(int) doSomething:(Type)t;
+@end
+
+@implementation Box
+-(int) doSomething:(id)t {
+ return 0;
+}
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_restricted_super_class.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_restricted_super_class.m
new file mode 100644
index 000000000..4ed183434
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_contravariant_restricted_super_class.m
@@ -0,0 +1,65 @@
+// Test that we handle restricted type arguments correctly when that
+// restriction is based on a class.
+//
+// Also test that the contravariant type argument has the correct bounds.
+
+@interface O
+@end
+@implementation O
+@end
+
+//- @ObjParent defines/binding ObjParentDecl
+@interface ObjParent
+@end
+
+//- @ObjParent defines/binding ObjParentImpl
+@implementation ObjParent
+@end
+
+//- @ObjChild defines/binding ObjChildDecl
+@interface ObjChild : ObjParent
+@end
+
+//- @ObjChild defines/binding ObjChildImpl
+@implementation ObjChild
+@end
+
+//- @ObjGrandChild defines/binding ObjGrandChildDecl
+@interface ObjGrandChild : ObjChild
+@end
+
+//- @ObjGrandChild defines/binding ObjGrandChildImpl
+@implementation ObjGrandChild
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+//- TypeVar bounded/upper ObjParentDeclPtrType
+//- ObjParentDeclPtrType.node/kind tapp
+//- ObjParentDeclPtrType param.0 vname("ptr#builtin", _, _, _, _)
+//- ObjParentDeclPtrType param.1 ObjParentImpl
+//- @ObjParent ref ObjParentImpl
+@interface Box<__contravariant Type: ObjParent*> : O
+-(Type) compute;
+@end
+
+@implementation Box
+-(id) compute {
+ ObjChild *child = [[ObjChild alloc] init];
+ return child;
+}
+@end
+
+int main(int argc, char **argv) {
+ // ObjChild* is a subtype of ObjParent*.
+ Box<ObjChild *> *b1 = [[Box alloc] init];
+
+ // Box<ObjChild *> is a subtype of Box<ObjGrandChild *> because we declared
+ // the type argument to be contravariant.
+ Box<ObjGrandChild *> *b2 = b1;
+
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_decl.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_decl.m
new file mode 100644
index 000000000..289d3b9cd
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_decl.m
@@ -0,0 +1,22 @@
+// Test lightweight generics (covariant) used to define a class. The covariant
+// modifier is ignored and should have no impact on the indexer.
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- TypeVar.variance covariant
+//- BoxDecl tparam.0 TypeVar
+@interface Box<__covariant Type>
+-(int) addToList:(Type)item;
+@end
+
+@implementation Box
+-(int) addToList:(id)item {
+ return 1;
+}
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_restricted_super_class.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_restricted_super_class.m
new file mode 100644
index 000000000..d5db8fee8
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_covariant_restricted_super_class.m
@@ -0,0 +1,55 @@
+// Test that we handle restricted type arguments correctly when that
+// restriction is based on a class.
+//
+// Also test that the covariant type argument has the correct bounds.
+
+@interface O
+@end
+@implementation O
+@end
+
+@interface Test<TTT> : O
+@end
+@implementation Test
+@end
+
+//- @ObjParent defines/binding ObjParentDecl
+@interface ObjParent
+@end
+
+//- @ObjParent defines/binding ObjParentImpl
+@implementation ObjParent
+@end
+
+@interface ObjChild : ObjParent
+@end
+
+@implementation ObjChild
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+//- TypeVar bounded/upper ObjParentDeclPtrType
+//- ObjParentDeclPtrType.node/kind tapp
+//- ObjParentDeclPtrType param.0 vname("ptr#builtin", _, _, _, _)
+//- ObjParentDeclPtrType param.1 ObjParentImpl
+//- @ObjParent ref ObjParentImpl
+@interface Box<__covariant Type: ObjParent*> : O
+-(int) addToList:(Type)item;
+@end
+
+@implementation Box
+-(int) addToList:(id)item {
+ return 1;
+}
+@end
+
+int main(int argc, char **argv) {
+ Box<ObjChild *> *b1 = [[Box alloc] init];
+ Box<ObjParent *> *b2 = b1;
+
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_inherited.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_inherited.m
new file mode 100644
index 000000000..0d767413e
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_inherited.m
@@ -0,0 +1,63 @@
+// Test subclasses of generic types.
+
+//- @O1 defines/binding O1Decl
+@interface O1
+@end
+
+//- @O1 defines/binding O1Impl
+@implementation O1
+@end
+
+//- O1Ptr.node/kind tapp
+//- O1Ptr param.0 vname("ptr#builtin", _, _, _, _)
+//- O1Ptr param.1 O1Impl
+
+//- @O2 defines/binding O2Decl
+@interface O2
+@end
+
+//- @O2 defines/binding O2Impl
+@implementation O2
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- @O1 ref O1Impl
+//- TypeVar.node/kind tvar
+//- TypeVar bounded/upper O1Ptr
+//- BoxDecl tparam.0 TypeVar
+//- BoxDecl extends O2Impl
+//- @O2 ref O2Impl
+//- @O2 ref O2Decl
+@interface Box<Type : O1*> : O2
+@end
+
+//- @Box defines/binding BoxImpl
+@implementation Box
+@end
+
+
+// No source range defines PackageDecl since this is a generic type.
+//- @Type defines/binding PTypeVar
+//- @Package defines/binding PackageDecl
+//- @O1 ref O1Impl
+//- PTypeVar.node/kind tvar
+//- PTypeVar bounded/upper O1Ptr
+//- PackageDecl tparam.0 PTypeVar
+@interface Package<Type : O1*>
+//- @Type ref PTypeVar
+//- PackageDecl extends BoxType
+//- @Box ref BoxImpl
+//- BoxType.node/kind tapp
+//- BoxType param.0 BoxImpl
+//- BoxType param.1 PTypeVar
+: Box<Type>
+@end
+
+@implementation Package
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_instantiation.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_instantiation.m
new file mode 100644
index 000000000..222220398
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_instantiation.m
@@ -0,0 +1,51 @@
+// Test instantiation of a lightweight generic class. The class decl should
+// reference the Abs node, but the class instantiation should just treat this
+// like a standard type application.
+
+@interface Obj
+@end
+
+@implementation Obj
+@end
+
+//- @O defines/binding ODecl
+@interface O
+@end
+
+//- @O defines/binding OImpl
+@implementation O
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+@interface Box<Type> : Obj
+-(int) addToList:(Type)item;
+@end
+
+//- @Box defines/binding BoxImpl
+@implementation Box
+-(int) addToList:(id)item {
+ return 1;
+}
+@end
+
+int main(int argc, char **argv) {
+ //- @O ref OImpl
+ //- @box defines/binding BoxVar
+ //- BoxVar typed PtrBoxVarType
+ //- PtrBoxVarType.node/kind tapp
+ //- PtrBoxVarType param.0 vname("ptr#builtin", _, _, _, _)
+ //- PtrBoxVarType param.1 BoxVarType
+ //- BoxVarType.node/kind tapp
+ //- BoxVarType param.0 BoxImpl
+ //- BoxVarType param.1 PtrOType
+ //- PtrOType.node/kind tapp
+ //- PtrOType param.0 vname("ptr#builtin", _, _, _, _)
+ //- PtrOType param.1 OImpl
+ Box<O *> *box = [[Box alloc] init];
+
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_invariant.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_invariant.m
new file mode 100644
index 000000000..ef69cab99
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_invariant.m
@@ -0,0 +1,42 @@
+// Test lightweight generics (invariant) used to define a class.
+//
+// This file also tests the implementation for a lightweight generic. Since the
+// implementation knows nothing of the type arguments, it is treated like a
+// regular implementation block. It is a child of the file, it completes the
+// decl, etc.
+//
+// There is no actual test of the implied invariant attribute in this file. We
+// don't record any information for invariance, so there is nothing to test
+// beyond making sure the indexer doesn't crash.
+
+@interface O
+@end
+@implementation O
+@end
+
+// Type parameter bounds cannot refer to other type parameters
+// @interface Disallowed<T, X : T> : O
+// @end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- TypeVar.variance invariant
+//- BoxDecl tparam.0 TypeVar
+@interface Box<Type> : O
+-(int) doSomething:(Type)t;
+@end
+
+//- @Box defines/binding BoxImpl
+//- File.node/kind file
+//- @Box completes/uniquely BoxDecl
+@implementation Box
+-(int) doSomething:(id)t {
+ return 0;
+}
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_call.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_call.m
new file mode 100644
index 000000000..6092355bc
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_call.m
@@ -0,0 +1,53 @@
+// Test a method call of a method that uses type arguments. This tests that
+// the method refs are correct.
+
+@interface Obj
+@end
+
+@implementation Obj
+@end
+
+//- @O defines/binding ODecl
+@interface O
+@end
+
+//- @O defines/binding OImpl
+@implementation O
+@end
+
+//- @Child defines/binding ChildDecl
+@interface Child : O
+@end
+
+//- @Child defines/binding ChildImpl
+@implementation Child
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+@interface Box<Type> : Obj
+//- @addToList defines/binding FuncDecl
+-(int) addToList:(Type)item;
+@end
+
+//- @Box defines/binding BoxImpl
+@implementation Box
+//- @addToList defines/binding FuncImpl
+-(int) addToList:(id)item {
+ return 1;
+}
+@end
+
+int main(int argc, char **argv) {
+ Box<O *> *b = [[Box alloc] init];
+ Child *child = [[Child alloc] init];
+
+ //- @"[b addToList:child]" ref/call FuncImpl
+ //- @addToList ref FuncImpl
+ [b addToList:child];
+
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_type.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_type.m
new file mode 100644
index 000000000..743a70faa
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_method_type.m
@@ -0,0 +1,58 @@
+// Test the type of a method that uses type arguments.
+
+// Let's get a handle on the id type
+//- IdTy aliases IdPtrTy
+//- IdPtrTy.node/kind tapp
+//- IdPtrTy param.0 vname("ptr#builtin", _, _, _, _)
+//- IdPtrTy param.1 vname("id#builtin", _, _, _, _)
+
+@interface Obj
+@end
+
+@implementation Obj
+@end
+
+//- @O defines/binding ODecl
+@interface O
+@end
+
+//- @O defines/binding OImpl
+@implementation O
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+@interface Box<Type> : Obj
+
+//- @addToList defines/binding FuncDecl
+//- FuncDecl typed FuncTy
+//- FuncTy.node/kind TApp
+//- FuncTy param.0 vname("fn#builtin", _, _, _, _)
+//- FuncTy param.1 vname("int#builtin", _, _, _, _)
+//- FuncTy param.2 TypeVar
+-(int) addToList:(Type)item;
+
+@end
+
+//- @Box defines/binding BoxImpl
+@implementation Box
+
+//- @addToList defines/binding FuncImpl
+//- FuncImpl typed FuncIdTy
+//- FuncIdTy.node/kind TApp
+//- FuncIdTy param.0 vname("fn#builtin", _, _, _, _)
+//- FuncIdTy param.1 vname("int#builtin", _, _, _, _)
+//- FuncIdTy param.2 IdTy
+-(int) addToList:(id)item {
+ return 1;
+}
+
+@end
+
+int main(int argc, char **argv) {
+
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_nested.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_nested.m
new file mode 100644
index 000000000..086bab2d7
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_nested.m
@@ -0,0 +1,84 @@
+// Test the source locations for nested type arguments and that the types
+// are correct.
+
+//- @O1 defines/binding O1Decl
+@interface O1
+@end
+
+//- @O1 defines/binding O1Impl
+@implementation O1
+@end
+
+//- @Fizzy defines/binding FizzyDecl
+@interface Fizzy
+@end
+
+//- @Fizzy defines/binding FizzyImpl
+@implementation Fizzy
+@end
+
+// No source range for CupDecl since this is a generic type.
+@interface Cup<T> : O1
+@end
+
+//- @Cup defines/binding CupImpl
+@implementation Cup
+@end
+
+// No source range for DrinkDecl sicne this is a generic type.
+@interface Drink<T> : O1
+@end
+
+//- @Drink defines/binding DrinkImpl
+@implementation Drink
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+//- @Cup ref CupImpl
+//- @Drink ref DrinkImpl
+//- @Fizzy ref FizzyImpl
+//- BoxDecl extends O1Impl
+//- @O1 ref O1Decl
+//- @O1 ref O1Impl
+@interface Box<Type : Cup<Drink<Fizzy *>*>*> : O1
+@end
+
+//- TypeVar bounded/upper CupTypePtr
+//- CupTypePtr.node/kind tapp
+//- CupTypePtr param.0 vname("ptr#builtin", _, _, _, _)
+//- CupTypePtr param.1 CupType
+//- CupType.node/kind tapp
+//- CupType param.0 CupImpl
+//- CupType param.1 DrinkTypePtr
+//- DrinkTypePtr.node/kind tapp
+//- DrinkTypePtr param.0 vname("ptr#builtin", _, _, _, _)
+//- DrinkTypePtr param.1 DrinkType
+//- DrinkType.node/kind tapp
+//- DrinkType param.0 DrinkImpl
+//- DrinkType param.1 FizzyTypePtr
+//- FizzyTypePtr.node/kind tapp
+//- FizzyTypePtr param.0 vname("ptr#builtin", _, _, _, _)
+//- FizzyTypePtr param.1 FizzyImpl
+
+@implementation Box
+@end
+
+int main(int argc, char **argv) {
+ // This is a trivial example since there are no other possible types to give
+ // to Box.
+ //- @box defines/binding BoxVar
+ //- BoxVar typed BoxVarPtrType
+ //- BoxVarPtrType.node/kind tapp
+ //- BoxVarPtrType param.0 vname("ptr#builtin", _, _, _, _)
+ //- BoxVarPtrType param.1 BoxType
+ //- BoxType.node/kind tapp
+ //- BoxType param.0 BoxImpl
+ //- BoxType param.1 CupTypePtr
+ Box<Cup<Drink<Fizzy *>*>*> *box = [[Box alloc] init];
+
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_restricted_protocol.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_restricted_protocol.m
new file mode 100644
index 000000000..2d7626b6d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_restricted_protocol.m
@@ -0,0 +1,49 @@
+// Test that we handle restricted type arguments correctly when that
+// restriction is based on a protocol.
+
+@interface O
+@end
+
+@implementation O
+@end
+
+//- @Proto defines/binding ProtoDecl
+@protocol Proto
+@end
+
+@implementation ObjParent
+@end
+
+@interface ObjChild : ObjParent<Proto>
+@end
+
+@implementation ObjChild
+@end
+
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+//- TypeVar bounded/upper ProtoDeclType
+//- ProtoDeclType.node/kind tapp
+//- ProtoDeclType param.0 vname("ptr#builtin", _, _, _, _)
+//- ProtoDeclType param.1 ProtoDecl
+//- @Proto ref ProtoDecl
+@interface Box<Type:id<Proto> > : O
+-(int) addToList:(Type)item;
+@end
+
+@implementation Box
+-(int) addToList:(id)item {
+ return 1;
+}
+@end
+
+int main(int argc, char **argv) {
+ Box<ObjChild *> *b = [[Box alloc] init];
+ ObjChild *o = [[ObjChild alloc] init];
+ [b addToList:o];
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_two_args.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_two_args.m
new file mode 100644
index 000000000..6881adb4a
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_two_args.m
@@ -0,0 +1,32 @@
+// Test multiple type arguments are referenced correctly.
+
+@interface O
+@end
+@implementation O
+@end
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Box defines/binding BoxDecl
+//- @FooType defines/binding FooTypeVar
+//- @BarType defines/binding BarTypeVar
+//- FooTypeVar.node/kind tvar
+//- BarTypeVar.node/kind tvar
+//- BoxDecl tparam.0 FooTypeVar
+//- BoxDecl tparam.1 BarTypeVar
+@interface Box<FooType, BarType> : O
+
+//- @BarType ref BarTypeVar
+//- @FooType ref FooTypeVar
+-(BarType) doSomething:(FooType)t;
+
+@end
+
+@implementation Box
+-(id) doSomething:(id)t {
+ return 0;
+}
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_unbound.m b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_unbound.m
new file mode 100644
index 000000000..1772619ed
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/objc/tvar_generics/generic_unbound.m
@@ -0,0 +1,32 @@
+// Test lightweight unbound generics used to define a class.
+
+@interface O
+@end
+@implementation O
+@end
+
+// The generic type is unbound.
+//- !{ TypeVar bounded/upper Anything0
+//- TypeVar bounded/lower Anything1 }
+
+// No source range defines BoxDecl since this is a generic type.
+//- @Type defines/binding TypeVar
+//- @Box defines/binding BoxDecl
+//- TypeVar.node/kind tvar
+//- BoxDecl tparam.0 TypeVar
+@interface Box<Type> : O
+-(int) doSomething:(Type)t;
+@end
+
+//- @Box defines/binding BoxImpl
+//- File.node/kind file
+//- @Box completes/uniquely BoxDecl
+@implementation Box
+-(int) doSomething:(id)t {
+ return 0;
+}
+@end
+
+int main(int argc, char **argv) {
+ return 0;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/proto/BUILD b/kythe/cxx/indexer/cxx/testdata/proto/BUILD
index 0cd972a7e..2d19b3456 100644
--- a/kythe/cxx/indexer/cxx/testdata/proto/BUILD
+++ b/kythe/cxx/indexer/cxx/testdata/proto/BUILD
@@ -9,6 +9,20 @@ cc_proto_verifier_test(
)
cc_proto_verifier_test(
+ name = "proto_semantic_test",
+ size = "medium",
+ srcs = ["proto_semantic.cc"],
+ experimental_guess_proto_semantics = True,
+ experimental_record_dataflow_edges = True,
+ proto_libs = ["//kythe/testdata/indexers/proto:testdata_proto"],
+ verifier_opts = [
+ "--ignore_dups",
+ "--convert_marked_source",
+ "--check_for_singletons=false",
+ ],
+)
+
+cc_proto_verifier_test(
name = "proto2_test",
size = "medium",
srcs = ["proto2.cc"],
diff --git a/kythe/cxx/indexer/cxx/testdata/proto/cc_proto_verifier_test.bzl b/kythe/cxx/indexer/cxx/testdata/proto/cc_proto_verifier_test.bzl
index 06fabe8ad..c536863a7 100644
--- a/kythe/cxx/indexer/cxx/testdata/proto/cc_proto_verifier_test.bzl
+++ b/kythe/cxx/indexer/cxx/testdata/proto/cc_proto_verifier_test.bzl
@@ -29,7 +29,9 @@ def cc_proto_verifier_test(
# Else the verifier chokes on the inconsistent marked source from the protobuf headers.
"--convert_marked_source",
],
- size = "small"):
+ size = "small",
+ experimental_guess_proto_semantics = False,
+ experimental_record_dataflow_edges = False):
"""Verify cross-language references between C++ and Proto.
Args:
@@ -38,6 +40,8 @@ def cc_proto_verifier_test(
proto_libs: A list of proto_library targets
verifier_opts: List of options passed to the verifier tool
size: Size of the test.
+ experimental_guess_proto_semantics: guess proto semantics?
+ experimental_record_dataflow_edges: record dataflow edges?
Returns:
The label of the test.
@@ -71,6 +75,13 @@ def cc_proto_verifier_test(
deps = cc_proto_libs,
)
+ guess_opt = []
+ if experimental_guess_proto_semantics:
+ guess_opt = ["--experimental_guess_proto_semantics"]
+ df_opt = []
+ if experimental_record_dataflow_edges:
+ df_opt = ["--experimental_record_dataflow_edges"]
+
cc_entries = _invoke(
cc_index,
name = name + "_cc_entries",
@@ -83,7 +94,7 @@ def cc_proto_verifier_test(
"--noindex_template_instantiations",
"--experimental_drop_instantiation_independent_data",
"--noemit_anchors_on_builtins",
- ],
+ ] + guess_opt + df_opt,
)
return _invoke(
diff --git a/kythe/cxx/indexer/cxx/testdata/proto/proto.cc b/kythe/cxx/indexer/cxx/testdata/proto/proto.cc
index 908f7f3fe..30474107f 100644
--- a/kythe/cxx/indexer/cxx/testdata/proto/proto.cc
+++ b/kythe/cxx/indexer/cxx/testdata/proto/proto.cc
@@ -38,6 +38,9 @@ void fn() {
msg.oneof_field_case();
//- @set_oneof_string ref CxxSetOneofStringTapp
msg.set_oneof_string("hello");
+
+ //- @repeated_int32_field ref CxxRepeatedInt32Field
+ msg.repeated_int32_field(1);
}
//- Message generates CxxMessage
//- CxxSetStringFieldTapp param.0 CxxSetStringFieldAbs
@@ -63,3 +66,4 @@ void fn() {
//- CxxSetOneofStringAbsBindingAnchor defines/binding CxxSetOneofStringAbs
//- CxxSetOneofStringAbsBindingAnchor completes/uniquely SetOneofStringAbs
//- OneofString generates SetOneofStringAbs
+//- RepeatedInt32Field generates CxxRepeatedInt32Field
diff --git a/kythe/cxx/indexer/cxx/testdata/proto/proto_semantic.cc b/kythe/cxx/indexer/cxx/testdata/proto/proto_semantic.cc
new file mode 100644
index 000000000..589b3d8bd
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/proto/proto_semantic.cc
@@ -0,0 +1,48 @@
+#include "kythe/testdata/indexers/proto/testdata.pb.h"
+
+
+void fn() {
+ using ::pkg::proto::Message;
+
+ //- @Message ref CxxMessage
+ Message msg;
+ //- @set_string_field ref/writes StringField
+ msg.set_string_field("value");
+ //- @string_field ref CxxGetStringField
+ msg.string_field();
+ //- @release_string_field ref/writes StringField
+ msg.release_string_field();
+ //- @set_allocated_string_field ref/writes StringField
+ msg.set_allocated_string_field(nullptr);
+ //- @set_int32_field ref/writes Int32Field
+ msg.set_int32_field(43);
+ //- @int32_field ref CxxGetInt32Field
+ msg.int32_field();
+
+ //- @NestedMessage ref CxxNestedMessage
+ Message::NestedMessage nested;
+ //- @set_nested_string ref/writes NestedString
+ nested.set_nested_string("value");
+ //- @nested_string ref CxxGetNestedStringField
+ nested.nested_string();
+ //- @set_nested_bool ref/writes NestedBool
+ nested.set_nested_bool(true);
+ //- @nested_bool ref CxxGetNestedBoolField
+ nested.nested_bool();
+
+
+ //- @mutable_nested_message ref/writes NestedMessageField
+ *msg.mutable_nested_message() = nested;
+ //- @nested_message ref CxxGetNestedMessageField
+ msg.nested_message();
+
+ //- @clear_oneof_field ref/writes OneofField
+ msg.clear_oneof_field();
+ //- @oneof_field_case ref CxxOneofFieldCase
+ msg.oneof_field_case();
+ //- @set_oneof_string ref/writes OneofString
+ msg.set_oneof_string("hello");
+
+ //- @add_repeated_int32_field ref/writes RepeatedInt32Field
+ msg.add_repeated_int32_field(4);
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/rec/rec_ctor_implicit_refs.cc b/kythe/cxx/indexer/cxx/testdata/rec/rec_ctor_implicit_refs.cc
index 555b64fd3..209f7feb3 100644
--- a/kythe/cxx/indexer/cxx/testdata/rec/rec_ctor_implicit_refs.cc
+++ b/kythe/cxx/indexer/cxx/testdata/rec/rec_ctor_implicit_refs.cc
@@ -2,7 +2,7 @@
struct Z { };
struct S {
//- !{@S ref VarX}
- //- @y ref VarY
+ //- @y ref/writes VarY
//- !{@S ref VarZ}
//- _ ref/call ZCtor
//- ZCtor childof ZType
diff --git a/kythe/cxx/indexer/cxx/testdata/rec/tvar_rec_class_base_dependent.cc b/kythe/cxx/indexer/cxx/testdata/rec/tvar_rec_class_base_dependent.cc
new file mode 100644
index 000000000..fb85bc6c8
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/rec/tvar_rec_class_base_dependent.cc
@@ -0,0 +1,10 @@
+// We index dependent base classes.
+//- @T defines/binding TyvarT
+template <typename T>
+//- @A defines/binding ClassA
+//- ClassA extends/public TyvarT
+//- ClassA extends/private DepTS
+//- DepTS.node/kind lookup
+//- DepTS param.0 TyvarT
+//- DepTS.text S
+class A : public T, private T::S { };
diff --git a/kythe/cxx/indexer/cxx/testdata/template/template_class_inst_explicit.cc b/kythe/cxx/indexer/cxx/testdata/template/template_class_inst_explicit.cc
index 08fe441a3..7658d8133 100644
--- a/kythe/cxx/indexer/cxx/testdata/template/template_class_inst_explicit.cc
+++ b/kythe/cxx/indexer/cxx/testdata/template/template_class_inst_explicit.cc
@@ -4,6 +4,8 @@ using ExternalDef = int;
template <typename T> struct C {
using X = ExternalDef;
};
+//- @C defines/binding ExplicitC
+//- @C ref ExplicitC
template struct C<int>;
//- ExplicitC.node/kind record
//- XAnchor childof/context ExplicitC
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/exclude_this_file.h b/kythe/cxx/indexer/cxx/testdata/tvar_template/exclude_this_file.h
new file mode 100644
index 000000000..a898af519
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/exclude_this_file.h
@@ -0,0 +1,4 @@
+template <typename T> class Excluded { };
+template <typename T> void EF(T t) { }
+template <typename T> T exc_var = 0;
+#define EXC_MACRO template <typename T> class ExcludedMacro { };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/generic_lambda.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/generic_lambda.cc
new file mode 100644
index 000000000..80e13cf1c
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/generic_lambda.cc
@@ -0,0 +1,13 @@
+
+void fn() {
+ //- @outer defines/binding OuterVar
+ int outer = 0;
+ //- @var defines/binding VarArg
+ //- @capture defines/binding CaptureBinding
+ //- @outer ref OuterVar
+ auto lambda = [capture=&outer] (const auto& var) {
+ //- @capture ref CaptureBinding
+ //- @var ref VarArg
+ return capture + var;
+ };
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/include_this_file.h b/kythe/cxx/indexer/cxx/testdata/tvar_template/include_this_file.h
new file mode 100644
index 000000000..d3de6989e
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/include_this_file.h
@@ -0,0 +1,4 @@
+template <typename T> class Included { };
+template <typename T> void IF(T t) { }
+template <typename T> T inc_var = 0;
+#define INC_MACRO template <typename T> class IncludedMacro { };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias.cc
new file mode 100644
index 000000000..3de8ea067
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias.cc
@@ -0,0 +1,11 @@
+// We index type alias templates.
+
+//- @U defines/binding TyvarU
+template<typename U>
+//- @T defines/binding T
+//- @U ref TyvarU
+using T = U;
+
+//- TyvarU.node/kind tvar
+//- T tparam.0 TyvarU
+//- Alias.node/kind talias
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation.cc
new file mode 100644
index 000000000..024f9ec85
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation.cc
@@ -0,0 +1,11 @@
+// Checks that specialization decls (not defns) generate specializes edges.
+template <typename T> struct S { };
+//- @T defines/binding TAlias
+using T = S<float>;
+//- TAlias aliases SFloatTy
+//- SFloatSpec specializes SFloatTy
+//- SFloatTy.node/kind tapp
+//- SFloatSpec.node/kind record
+// NB: T aliases the type application of S to float, _not_ the record that
+// results from the implicit instantiation of S<float>. Is this the behavior
+// we want?
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation_decls.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation_decls.cc
new file mode 100644
index 000000000..12394346b
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_implicit_instantiation_decls.cc
@@ -0,0 +1,9 @@
+// Checks that specialization decls are given the right names.
+//- @S defines/binding StructS
+template <typename T> struct S;
+//- @T defines/binding NominalAlias
+//- NominalAlias.node/kind talias
+using T = S<float>;
+//- NominalAlias aliases TApp
+//- TApp param.0 StructS
+//- StructS.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_multilevel_abs.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_multilevel_abs.cc
new file mode 100644
index 000000000..c9e51e3a3
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_multilevel_abs.cc
@@ -0,0 +1,33 @@
+// With aliasing on, we don't record childof edges, even under
+// multiple layers of implicit template expansion.
+template <template <typename T> class Tmpl>
+struct TemplateSel { };
+
+template <template <typename T> class Tv1>
+struct Templates1 {
+ typedef TemplateSel<Tv1> Box;
+};
+
+template <class TestSel>
+//- @T1 defines/binding RecT1
+//- RecT1.node/kind record
+class T1 {
+ public:
+//- @f defines/binding FnF
+//- FnF childof RecT1
+ static bool f() {
+ return true;
+ }
+};
+
+template <typename T2V>
+class T2 {
+ public:
+ static bool g() {
+ T1<typename T2V::Box>::f();
+ return true;
+ }
+};
+
+template <typename T> struct Content { };
+bool b = T2<Templates1<Content>>::g();
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_naming.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_naming.cc
new file mode 100644
index 000000000..c26df64f2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_alias_naming.cc
@@ -0,0 +1,8 @@
+// Other flavors of template arguments don't confuse aliasing.
+
+//- @C defines/binding ClassC
+//- ClassC.node/kind record
+//- @f defines/binding FnF
+//- FnF childof ClassC
+template <void*> class C { public: void f() { } };
+void g() { typedef C<nullptr> I; I i; i.f(); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_multiple_typename.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_multiple_typename.cc
new file mode 100644
index 000000000..4188809f7
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_multiple_typename.cc
@@ -0,0 +1,31 @@
+// Checks that templates can accept multiple typename arguments.
+
+template
+//- @T defines/binding TT
+//- @S defines/binding TS
+<typename T, typename S>
+//- @C defines/binding CDecl1
+class C;
+
+template
+//- @N defines/binding TN
+//- @V defines/binding TV
+<typename N, typename V>
+//- @C defines/binding CDecl2
+class C;
+
+template
+//- @W defines/binding TW
+//- @X defines/binding TX
+<typename W, typename X>
+//- @C defines/binding CDefn
+//- @C completes/uniquely CDecl2
+//- @C completes/uniquely CDecl1
+class C { };
+
+//- CDecl1 tparam.0 TT
+//- CDecl1 tparam.1 TS
+//- CDecl2 tparam.0 TN
+//- CDecl2 tparam.1 TV
+//- CDefn tparam.0 TW
+//- CDefn tparam.1 TX
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_typename.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_typename.cc
new file mode 100644
index 000000000..6bb601f33
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_arg_typename.cc
@@ -0,0 +1,28 @@
+// Checks that templates can accept typename arguments.
+
+template
+//- @T defines/binding TT
+<typename T>
+//- @C defines/binding CDecl1
+class C;
+
+template
+//- @S defines/binding TS
+<typename S>
+//- @C defines/binding CDecl2
+class C;
+
+template
+//- @V defines/binding TV
+<typename V>
+//- @C defines/binding CDefn
+//- @C completes/uniquely CDecl1
+//- @C completes/uniquely CDecl2
+class C { };
+
+//- TT.node/kind tvar
+//- TS.node/kind tvar
+//- TV.node/kind tvar
+//- CDefn tparam.0 TV
+//- CDecl2 tparam.0 TS
+//- CDecl1 tparam.0 TT
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_auto_parameter.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_auto_parameter.cc
new file mode 100644
index 000000000..638d60746
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_auto_parameter.cc
@@ -0,0 +1,16 @@
+// Verifies that Kythe references auto template type parameters
+// as it would any other non-type template parameter.
+
+//- @N defines/binding TemplateParamN
+template <auto N>
+struct S {
+ //- @#0N ref TemplateParamN
+ //- @#1N ref TemplateParamN
+ //- @values defines/binding FieldArr
+ decltype(N) values[N];
+};
+
+void f() {
+ S<10> ints;
+ S<'a'> chars;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_member.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_member.cc
new file mode 100644
index 000000000..dfeb74fd8
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_member.cc
@@ -0,0 +1,17 @@
+// We blame member functions of class templates.
+//- @g defines/binding FnG
+bool g() { return false; }
+//- @f defines/binding FnF
+//- PtCall=@"g()" ref/call FnG
+//- PtCall childof FnF
+//- FnF childof CBody
+//- @C defines/binding CBody
+//- FImp instantiates TUnaryAppF
+//- FImpCall=@"g()" ref/call/implicit FnG
+//- FImpCall childof FImp
+template <typename T> struct C { bool f(T* t) { return g(); } };
+//- TheCall=@"j->f(nullptr)" ref/call TUnaryAppF
+//- @h defines/binding FnH
+//- TheCall childof FnH
+//- TUnaryAppF param.0 FnF // Until we record the whole type context: #1879
+bool h(C<int>* j) { return j->f(nullptr); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_pspec_member.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_pspec_member.cc
new file mode 100644
index 000000000..0c6aab9a7
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_pspec_member.cc
@@ -0,0 +1,24 @@
+// We blame member functions of partial specializations.
+//- @g defines/binding FnG
+bool g() { return false; }
+//- PtCall=@"g()" ref/call FnG
+//- PtCall childof FnF
+//- FnF childof CBody
+//- @C defines/binding CBody
+template <typename T, typename S> struct C { bool f(T* t) { return g(); } };
+
+//- TsCall childof SpecF
+//- TsCall=@"g()" ref/call FnG
+//- SpecF.code _
+//- @f defines/binding SpecF
+//- TsImp instantiates TAppUnarySpecF
+//- TsImpCall=@"g()" ref/call/implicit FnG
+//- TsImpCall childof TsImp // Aliasing is off by default
+template <typename T> struct C<T, int> { bool f(T* t) { return g(); } };
+
+// Until type contexts: #1879
+//- TheCall=@"j->f(nullptr)" ref/call TAppUnarySpecF
+//- @h defines/binding FnH
+//- TheCall childof FnH
+//- TAppUnarySpecF param.0 SpecF
+bool h(C<int, int>* j) { return j->f(nullptr); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec.cc
new file mode 100644
index 000000000..fbfb82819
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec.cc
@@ -0,0 +1,17 @@
+// We blame function specializations.
+//- @g defines/binding FnG
+bool g() { return false; }
+//- @f defines/binding FnF
+//- PtCall=@"g()" ref/call FnG
+//- PtCall childof FnF
+//- FIntImp instantiates TAppFInt
+//- FIntImpCall=@"g()" ref/call/implicit FnG // Aliasing is off by default.
+//- FIntImpCall childof FIntImp
+template <typename T> bool f(T* t) { return g(); }
+//- TheCall=@"f(&i)" ref/call TAppFInt
+//- @h defines/binding FnH
+//- TheCall childof FnH
+//- TAppFInt param.0 FnF
+//- TAppFInt param.1 Int
+//- @int ref Int
+bool h(int i) { return f(&i); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec_member.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec_member.cc
new file mode 100644
index 000000000..b1f36388d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_blame_spec_member.cc
@@ -0,0 +1,19 @@
+// We blame member functions of total specializations.
+//- @g defines/binding FnG
+bool g() { return false; }
+//- PtCall=@"g()" ref/call FnG
+//- PtCall childof FnF // We should collapse K in abs(K) into cluster abs(K)
+//- FnF childof CBody
+//- @C defines/binding CBody
+template <typename T> struct C { bool f(T* t) { return g(); } };
+
+//- @f defines/binding SpecF
+//- TsCall=@"g()" ref/call FnG
+//- TsCall childof SpecF
+//- SpecF.code _
+template <> struct C<int> { bool f(int* t) { return g(); } };
+
+//- TheCall=@"j->f(nullptr)" ref/call SpecF
+//- @h defines/binding FnH
+//- TheCall childof FnH
+bool h(C<int>* j) { return j->f(nullptr); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_deduction.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_deduction.cc
new file mode 100644
index 000000000..755ea2890
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_deduction.cc
@@ -0,0 +1,43 @@
+// Checks that we correctly attribute class template instantiation
+// via C++17 constructor argument deduction and guides.
+
+//- @S defines/binding StructS
+struct S {};
+
+template <typename T>
+//- @C defines/binding TemplC
+struct C {
+
+ //- @C defines/binding Ctor0
+ C() { }
+
+ //- @C defines/binding CtorT
+ C(T) { }
+
+ template <typename U>
+ //- @C defines/binding CtorU
+ C(U, U) { }
+};
+
+//- @#1C ref TemplC
+//- @S ref StructS
+C() -> C<S>;
+
+// TODO(shahms): This should not be considered an implicit ref.
+//- @#1C ref/implicit TemplC
+template <typename U> C(U, U) -> C<U>;
+
+void f() {
+ //- @C ref TemplC
+ //- @cz ref/call Ctor0App
+ //- Ctor0App param.0 Ctor0
+ C cz;
+ //- @C ref TemplC
+ //- @"ct(S{})" ref/call CtorTApp
+ //- CtorTApp param.0 CtorT
+ C ct(S{});
+ //- @C ref TemplC
+ //- @"cu(S{}, S{})" ref/call CtorUApp
+ //- CtorUApp param.0 CtorU
+ C cu(S{}, S{});
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_default_and_init.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_default_and_init.cc
new file mode 100644
index 000000000..69c83eeac
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ctor_default_and_init.cc
@@ -0,0 +1,63 @@
+// Checks that we correctly attribute initialization calls to templates.
+// (This is the same as function_ctor_default_and_init, except we check that
+// we do the right thing inside template bodies.)
+//- @foo defines/binding FnFoo
+int foo() { return 0; }
+//- @bar defines/binding FnBar
+int bar() { return 0; }
+template <typename T>
+class C {
+ //- @C defines/binding CtorC0
+ //- FooCall=@"foo()" ref/call FnFoo
+ //- FooCall childof CtorC0
+ //- !{ BarCall childof CtorC0 }
+ C() : i(foo()) { }
+ //- @C defines/binding CtorC1
+ //- !{ FooCall childof CtorC1 }
+ //- BarCall childof CtorC1
+ C(int) { }
+ //- @C defines/binding CtorC2
+ //- !{ FooCall childof CtorC2 }
+ //- BarCall childof CtorC2
+ C(float) { }
+ //- BarCall=@"bar()" ref/call FnBar
+ int i = bar();
+};
+
+template <typename T>
+class C<T*> {
+ //- @C defines/binding CtorCP0
+ //- FooCallP=@"foo()" ref/call FnFoo
+ //- FooCallP childof CtorCP0
+ //- !{ BarCallP childof CtorCP0 }
+ C() : i(foo()) { }
+ //- @C defines/binding CtorCP1
+ //- !{ FooCallP childof CtorCP1 }
+ //- BarCallP childof CtorCP1
+ C(int) { }
+ //- @C defines/binding CtorCP2
+ //- !{ FooCallP childof CtorCP2 }
+ //- BarCallP childof CtorCP2
+ C(float) { }
+ //- BarCallP=@"bar()" ref/call FnBar
+ int i = bar();
+};
+
+template <>
+class C<int> {
+ //- @C defines/binding CtorCT0
+ //- FooCallT=@"foo()" ref/call FnFoo
+ //- FooCallT childof CtorCT0
+ //- !{ BarCallT childof CtorCT0 }
+ C() : i(foo()) { }
+ //- @C defines/binding CtorCT1
+ //- !{ FooCallT childof CtorCT1 }
+ //- BarCallT childof CtorCT1
+ C(int) { }
+ //- @C defines/binding CtorCT2
+ //- !{ FooCallT childof CtorCT2 }
+ //- BarCallT childof CtorCT2
+ C(float) { }
+ //- BarCallT=@"bar()" ref/call FnBar
+ int i = bar();
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_defn.cc
new file mode 100644
index 000000000..dbfc62f3b
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_defn.cc
@@ -0,0 +1,13 @@
+// Checks that references to a complete template class point to the right node.
+template
+<typename X>
+//- @C defines/binding ClassC
+class C {};
+
+//- @U defines/binding AliasNode
+using U =
+C<int>;
+
+//- AliasNode aliases TApp
+//- TApp param.0 ClassC
+//- ClassC.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_fn_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_fn_spec.cc
new file mode 100644
index 000000000..92734285a
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_fn_spec.cc
@@ -0,0 +1,18 @@
+// Checks that we get edges for member function specialization and calls
+// thereto.
+//- @F defines/binding _MemDecl
+//- @C defines/binding TmplDefn
+template <typename T> struct C { static void F(); };
+
+//- @F defines/binding IntMemDefn
+//- @F completes/uniquely IntMemDecl
+template <> void C<int>::F() {}
+//- IntMemDecl.complete incomplete
+//- IntMemDefn.complete definition
+//- IntMemDefn.code _
+//- IntMemDecl childof _IntTmplSpec
+//- _IntTmpl specializes TApp
+//- TApp param.0 TmplDefn
+
+//- @"C<int>::F()" ref/call IntMemDefn
+void dummy() { C<int>::F(); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inner.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inner.cc
new file mode 100644
index 000000000..b236b032d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inner.cc
@@ -0,0 +1,16 @@
+// Checks that inner defns are children of outer classes.
+template <typename T>
+//- @C defines/binding ClassC
+class C {
+ //- @R defines/binding EnumR
+ //- EnumR childof ClassC
+ enum R : T {
+ };
+};
+//- @cshort defines/binding CShort
+//- CShort typed CShortAbs
+//- CShortAbsInst specializes CShortAbs
+//- CShortAbsEnum childof CShortAbsInst
+//- CShortAbsEnum.node/kind sum
+//- !{ CShortAbsEnum childof ClassC }
+C<short> cshort;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_explicit.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_explicit.cc
new file mode 100644
index 000000000..7658d8133
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_explicit.cc
@@ -0,0 +1,14 @@
+// Checks the behavior of explicit class template instantiations.
+using ExternalDef = int;
+//- @C defines/binding TemplateC
+template <typename T> struct C {
+ using X = ExternalDef;
+};
+//- @C defines/binding ExplicitC
+//- @C ref ExplicitC
+template struct C<int>;
+//- ExplicitC.node/kind record
+//- XAnchor childof/context ExplicitC
+//- XAnchor.node/kind anchor
+//- XAnchor defines/binding ExternalDefAlias
+//- ExternalDefAlias.node/kind talias
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit.cc
new file mode 100644
index 000000000..11cb7d4d1
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit.cc
@@ -0,0 +1,29 @@
+// Checks the behavior of implicit class template instantiations.
+using ExternalDef = int;
+//- @C defines/binding TemplateC
+//- @T defines/binding AbsvarT
+template <typename T> struct C {
+//- @X defines/binding ExternalDefAlias
+//- @X.loc/start XStart
+//- @X.loc/end XEnd
+ using X = ExternalDef;
+//- @Y defines/binding AbsvarAlias
+//- @Y.loc/start YStart
+//- @Y.loc/end YEnd
+ using Y = T;
+};
+C<int> x;
+//- ImpX specializes TAppCInt
+//- TAppCInt.node/kind tapp
+//- TAppCInt param.0 TemplateC
+//- WraithXAnchor childof/context ImpX
+//- WraithXAnchor.node/kind anchor
+//- WraithXAnchor.loc/start XStart
+//- WraithXAnchor.loc/end XEnd
+//- WraithXAnchor defines/binding ExternalDefAlias
+//- AbsvarAlias aliases AbsvarT
+//- WraithYAnchor childof/context ImpX
+//- WraithYAnchor.loc/start YStart
+//- WraithYAnchor.loc/end YEnd
+//- WraithYAnchor defines/binding WraithAlias
+//- WraithAlias aliases vname("int#builtin",_,_,_,"c++")
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit_dependent.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit_dependent.cc
new file mode 100644
index 000000000..e1d6c2230
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_implicit_dependent.cc
@@ -0,0 +1,12 @@
+// Checks the behavior of implicit class template instantiations.
+//- @T defines/binding TemplateT
+template <typename C> struct T {
+//- @X defines/binding XAlias
+//- XAlias aliases Lookup
+//- Lookup.node/kind lookup
+ using X = typename C::Y;
+};
+struct S { using Y = int; }; T<S>::X x;
+//- ImpX specializes TAppCS
+//- TAppCS.node/kind tapp
+//- TAppCS param.0 TemplateT
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_vs_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_vs_spec.cc
new file mode 100644
index 000000000..f5b32b209
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_inst_vs_spec.cc
@@ -0,0 +1,34 @@
+// Checks that instantiates/specializes are applied to class templates.
+//- @C defines/binding PrimaryT
+template<typename T, typename S> class C {};
+//- @C defines/binding PartialT
+template<typename S> class C<int, S> {};
+//- @C defines/binding TotalT
+template<> class C<float, double> {};
+
+// Specializes and instantiates primary
+//- @Primary defines/binding APrimary
+//- APrimary typed PrimaryLongShort
+//- PrimaryLongShort param.0 PrimaryT
+//- PrimaryImp specializes PrimaryLongShort
+//- PrimaryImp instantiates PrimaryLongShort
+C<long, short> Primary;
+
+// Specializes primary and instantiates partial
+// NB: the type is still PrimaryT<int, short>.
+//- @PartialSpec defines/binding APartialSpec
+//- APartialSpec typed PrimaryIntShort
+//- ImpPartialSpec specializes PrimaryIntShort
+//- PrimaryIntShort param.0 PrimaryT
+//- ImpPartialSpec instantiates PartialIntShort
+//- PartialIntShort param.0 PartialT
+//- PartialIntShort param.1 TShort
+//- @short ref TShort
+C<int, short> PartialSpec;
+
+// Specializes primary and instantiates primary
+//- @TotalSpec defines/binding ATotalSpec
+//- ATotalSpec typed PrimaryFloatDouble
+//- TotalT instantiates PrimaryFloatDouble
+//- TotalT specializes PrimaryFloatDouble
+C<float, double> TotalSpec;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref.cc
new file mode 100644
index 000000000..33246fb7d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref.cc
@@ -0,0 +1,31 @@
+//- @S defines/binding SPrim
+//- @S defines/binding S1
+template <typename T, typename U> struct S {};
+//- @S defines/binding S2
+template <typename T> struct S<T, int> {};
+//- @S defines/binding S3
+template <typename T> struct S<T, float> {};
+//- @S defines/binding S4
+template <typename U> struct S<int, U> {};
+//- @S defines/binding S5
+template <typename U> struct S<float, U> {};
+//- @S defines/binding S6
+template <> struct S<char, char> {};
+
+//- @S ref S1
+S<void *, void *> s1;
+//- @S ref S2
+S<void *, int> s2;
+//- @S ref S3
+S<void *, float> s3;
+//- @S ref S4
+S<int, void *> s4;
+//- @S ref S5
+S<float, void *> s5;
+//- @S ref S6
+S<char, char> s6;
+
+template <typename T, typename U> void f() {
+ //- @S ref SPrim
+ S<T, U> s;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref_ps.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref_ps.cc
new file mode 100644
index 000000000..b4f3b84c1
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_ref_ps.cc
@@ -0,0 +1,9 @@
+// Tests that references to ps class templates go to the ps via `specializes`.
+//- @V defines/binding VPrim
+template <typename T, typename S> struct V { S m; };
+//- @V defines/binding VInt
+//- VInt specializes TAppVIntInt
+template <typename S> struct V<int, S> { S mm; };
+//- @x defines/binding VarX
+//- VarX typed TAppVIntInt
+V<int, int> x;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_skip_implicit_on.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_skip_implicit_on.cc
new file mode 100644
index 000000000..55778dc38
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_skip_implicit_on.cc
@@ -0,0 +1,10 @@
+// Checks that we still perform reasonably when skipping template instantations.
+// Run with --index_template_instantiations=false
+//- @vector defines/binding VectorAbs
+template <typename T> class vector { };
+//- @ty defines/binding TyAlias
+//- TyAlias aliases Tau
+//- Tau.node/kind tapp
+//- Tau param.0 VectorAbs
+using ty = vector<int>;
+ty var;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_template_ctor.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_template_ctor.cc
new file mode 100644
index 000000000..158b83d43
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_class_template_ctor.cc
@@ -0,0 +1,28 @@
+// Checks that we properly handle classes with constructor templates.
+//- @foo defines/binding FnFoo
+int foo() { return 0; }
+//- @bar defines/binding FnBar
+int bar() { return 0; }
+class C {
+ public:
+ template <typename T>
+ //- FooCall=@"foo()" ref/call FnFoo
+ //- FooCall childof CtorC
+ //- @C defines/binding CtorC
+ //- !{ BarCall childof CtorC }
+ //- BarCallJ childof CtorC
+ C(T) : i(foo()) { }
+
+ //- BarCall=@"bar()" ref/call FnBar
+ int i = bar();
+ //- BarCallJ=@"bar()" ref/call FnBar
+ int j = bar();
+};
+
+template <> C::
+//- FooCall2=@"foo()" ref/call FnFoo
+//- FooCall2 childof CtorC2
+//- @C defines/binding CtorC2
+//- !{ BarCall childof CtorC2 }
+//- BarCallJ childof CtorC2
+C(float) : i(foo()) { }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_decl_arg.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_decl_arg.cc
new file mode 100644
index 000000000..5d964585c
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_decl_arg.cc
@@ -0,0 +1,38 @@
+// Verify that we support using pointers, references and pointer-to-members in
+// non-type template parameters.
+
+template <typename Type, Type Value>
+struct Pair {
+ using type = Type;
+ static constexpr type value() { return Value; }
+};
+
+//- @Value defines/binding ValueType
+struct Value {
+ //- @member defines/binding ValueMember
+ int member;
+};
+
+//- @fn defines/binding FnDecl
+void fn();
+
+//- @Alias defines/binding AliasDecl
+//- @Value ref ValueType
+//- @member ref ValueMember
+using Alias = Pair<decltype(&Value::member),
+ //- @Value ref ValueType
+ //- @member ref ValueMember
+ &Value::member>;
+
+
+//- @FnPtrAlias defines/binding FnPtrAliasType
+//- @fn ref FnDecl
+using FnPtrAlias = Pair<decltype(&fn),
+//- @fn ref FnDecl
+ &fn>;
+
+//- @FnRefAlias defines/binding FnRefAliasType
+//- @fn ref FnDecl
+using FnRefAlias = Pair<decltype(*fn),
+//- @fn ref FnDecl
+ fn>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depbase_field_ref.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depbase_field_ref.cc
new file mode 100644
index 000000000..8ce463747
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depbase_field_ref.cc
@@ -0,0 +1,13 @@
+// Checks that we can refer to dependent fields.
+//- @T defines/binding TyvarT
+template <typename T> struct S {
+ T t;
+ //- @f ref DepF
+ //- DepF.node/kind lookup
+ //- DepF.text f
+ //- DepF param.0 DepBase
+ //- DepBase.node/kind lookup
+ //- DepBase.text "Base"
+ //- DepBase param.0 TyvarT
+ int i = t.Base::f;
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor.cc
new file mode 100644
index 000000000..13c1e3203
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor.cc
@@ -0,0 +1,29 @@
+// Checks indexing dependent constructors.
+template <typename T>
+struct M {
+ M() { }
+ M(int) { }
+};
+
+template <typename T>
+struct S {
+ S(M<T>) { }
+};
+
+template <typename T>
+//- @L defines/binding AbsL
+struct L : S<T> {
+ //- StCall=@"S<T>(M<T>())" ref/call/implicit St
+ //- MtCall=@"M<T>()" ref/call/implicit Mt
+ //- @L defines/binding CtorL
+ //- StCall childof CtorL
+ //- MtCall childof CtorL
+ L() : S<T>(M<T>()) {}
+};
+
+//- @l defines/binding VarL
+//- VarL typed TAppLInt
+//- TAppLInt param.0 AbsL
+//- LInt specializes TAppLInt
+//- CtorL childof LInt
+L<int> l;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor_small.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor_small.cc
new file mode 100644
index 000000000..979a0142f
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_ctor_small.cc
@@ -0,0 +1,12 @@
+// Checks indexing dependent constructors.
+//- @T defines/binding TyvarT
+template <typename T>
+struct S : T::Q {
+ //- @"T::Q()" ref/call LookupTQCtor
+ //- LookupTQCtor.node/kind lookup
+ //- LookupTQCtor.text "#ctor"
+ //- LookupTQCtor param.0 LookupTQ
+ //- LookupTQ.text "Q"
+ //- LookupTQ param.0 TyvarT
+ S() : T::Q() { }
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor.cc
new file mode 100644
index 000000000..736f28339
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor.cc
@@ -0,0 +1,19 @@
+// Checks that we index explicit calls to a dependent dtor.
+//- @T defines/binding TyvarT
+template <typename T>
+class C {
+ T *t;
+ void f() {
+ //- @"t->~T" ref/call LookupTDtor2
+ //- LookupTDtor2.node/kind lookup
+ //- LookupTDtor2 param.0 TyvarT
+ //- LookupTDtor2.text "#dtor"
+ //- @"~" ref LookupTDtor2
+ t->~T();
+ //- @"delete t" ref/call LookupTDtor
+ //- LookupTDtor.node/kind lookup
+ //- LookupTDtor param.0 TyvarT
+ //- LookupTDtor.text "#dtor"
+ delete t;
+ }
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor_qualified.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor_qualified.cc
new file mode 100644
index 000000000..f28b3d2d2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_dtor_qualified.cc
@@ -0,0 +1,21 @@
+// Checks that we index explicit calls to a dependent dtor with a qualifier.
+//- @T defines/binding TyvarT
+template <typename T>
+class C {
+ T *t;
+ void f() {
+ //- @"t->SomeId::Base::~Base" ref/call Dtor
+ //- Dtor.node/kind lookup
+ //- Dtor.text "#dtor"
+ //- Dtor param.0 BaseInT
+ //- BaseInT.node/kind lookup
+ //- BaseInT.text Base
+ //- BaseInT param.0 SomeId
+ //- SomeId.node/kind lookup
+ //- SomeId.text "SomeId"
+ //- @"~" ref Dtor
+ t->SomeId::Base::~Base();
+ // TODO(zarko): Does it make sense for SomeId param.0 TyvarT?
+ // What if instead of 'SomeId' we wrote 'T' above?
+ }
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_name_ref.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_name_ref.cc
new file mode 100644
index 000000000..eac063fbb
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_name_ref.cc
@@ -0,0 +1,8 @@
+
+template<typename T>
+void fn() {
+ //- @value_type ref DependentName
+ typename T::value_type a;
+ //- @value_type ref DependentName
+ typename T::value_type b;
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_sized_array.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_sized_array.cc
new file mode 100644
index 000000000..0bbc5d8bc
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_dependent_sized_array.cc
@@ -0,0 +1,31 @@
+// We don't fall over on dependent-sized arrays.
+//- @S defines/binding TyvarS
+//- @T defines/binding TyvarT
+template<unsigned S, class... T> struct A {
+//- @S ref TyvarS
+//- @R defines/binding FieldR
+ int R[S];
+
+ void fn() {
+ //- @Q defines/binding VarQ
+ //- @T ref TyvarT
+ int Q[] = {sizeof(T)...};
+ }
+
+ //- @Z defines/binding FieldZ
+ //- @T ref TyvarT
+ int Z[sizeof...(T)];
+};
+//- FieldR typed TAppDArrIntExpr
+//- TAppDArrIntExpr.node/kind tapp
+//- TAppDArrIntExpr param.0 vname("darr#builtin",_,_,_,_)
+//- TAppDArrIntExpr param.1 vname("int#builtin",_,_,_,_)
+//- TAppDArrIntExpr param.2 SomeExpr
+//- VarQ typed QType
+//- QType.node/kind tapp
+//- QType param.0 vname("darr#builtin",_,_,_,_)
+//- QType param.1 vname("int#builtin",_,_,_,_)
+//- FieldZ typed ZType
+//- ZType.node/kind tapp
+//- ZType param.0 vname("darr#builtin",_,_,_,_)
+//- ZType param.1 vname("int#builtin",_,_,_,_)
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depexpr_field_ref.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depexpr_field_ref.cc
new file mode 100644
index 000000000..58821294b
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depexpr_field_ref.cc
@@ -0,0 +1,13 @@
+// Checks that we don't fall over on fields that depend on expressions.
+//- @T defines/binding TyvarT
+template <typename T> struct S {
+ T t;
+ //- @f ref DepF
+ //- DepF.node/kind lookup
+ //- DepF.text f
+ //- !{DepF param.0 Anything}
+ //- @thing ref DepThing
+ //- DepThing.node/kind lookup
+ //- DepThing param.0 TyvarT
+ int i = (t.thing(3) + 4).f;
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_class.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_class.cc
new file mode 100644
index 000000000..0804b04c2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_class.cc
@@ -0,0 +1,14 @@
+// Checks the representation of dependent names.
+template
+//- @T defines/binding DepT
+<template <typename> class T>
+struct C {
+//- @D ref DepTIntD
+using S = typename T<int>::D;
+};
+//- DepTIntD.text D
+//- DepTIntD.node/kind lookup
+//- DepTIntD param.0 DepTInt
+//- DepTInt.node/kind tapp
+//- DepTInt param.0 DepT
+//- DepTInt param.1 Int
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_field_ref.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_field_ref.cc
new file mode 100644
index 000000000..02ef11489
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_field_ref.cc
@@ -0,0 +1,10 @@
+// Checks that we can refer to dependent fields.
+//- @T defines/binding TyvarT
+template <typename T> struct Sz {
+ T t;
+ //- @f ref DepF
+ //- DepF.node/kind lookup
+ //- DepF.text f
+ //- DepF param.0 TyvarT
+ int i = t.f;
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_implicit.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_implicit.cc
new file mode 100644
index 000000000..f02a8e3bb
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_implicit.cc
@@ -0,0 +1,13 @@
+// Checks that we can refer to implicit dependent fields.
+//- @A defines/binding AbsA
+template <typename T> class A { };
+//- @T defines/binding TyvarT
+template <typename T> class C {
+//- @Dep ref Dep
+//- Dep param.0 At
+//- At.node/kind tapp
+//- At param.0 AbsA
+//- At param.1 TyvarT
+//- @T ref TyvarT
+ void f() { A<T>::Dep(); }
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_inst_class.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_inst_class.cc
new file mode 100644
index 000000000..6cb6bef61
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_inst_class.cc
@@ -0,0 +1,17 @@
+// Checks the representation of resolved dependent names.
+template
+<template <typename> class T>
+//- @C defines/binding StructC
+struct C {
+using S = typename T<int>::D;
+};
+template
+<typename Q>
+//- @Z defines/binding StructZ
+struct Z {
+using D = Q;
+};
+// Somewhere we need to close the loop wrt the substitutions here.
+using U = C<Z>::S;
+//- StructC.node/kind record
+//- StructZ.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_path_graph.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_path_graph.cc
new file mode 100644
index 000000000..f570541da
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_path_graph.cc
@@ -0,0 +1,38 @@
+// Checks that we index dependent name path graphs and that they reference
+// the same nodes within a template, but not between them.
+template
+//- @T defines/binding CParamT
+<template <typename> class T>
+struct C {
+//- @F ref CDepTIntDEF
+//- CDepTIntDEF.text F
+//- @E ref CDepTIntDE
+//- CDepTIntDE.text E
+//- @D ref CDepTIntD
+//- CDepTIntD.text D
+//- @T ref CParamT
+using X = typename T<int>::D::E::F;
+
+//- @F ref CDeptTIntDEF
+//- @E ref CDeptTIntDE
+//- @D ref CDeptTIntD
+//- @T ref CParamT
+using Y = typename T<int>::D::E::F;
+};
+//- CDeptTIntDEF param.0 CDeptTIntDE
+//- CDeptTIntDE param.0 CDeptTIntD
+
+template
+//- @T defines/binding DParamT
+<template <typename> class T>
+struct D {
+//- @F ref DDepTIntDEF
+//- @E ref DDepTIntDE
+//- @D ref DDepTIntD
+//- @T ref DParamT
+//- !{ @F ref CDepTIntDEF }
+//- !{ @E ref CDepTIntDE }
+//- !{ @D ref CDepTIntD }
+//- !{ @T ref CParamT }
+using Z = typename T<int>::D::E::F;
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_template_field_ref.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_template_field_ref.cc
new file mode 100644
index 000000000..87b1782e7
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_depname_template_field_ref.cc
@@ -0,0 +1,18 @@
+// Checks that we can refer to dependent fields under other templates.
+//- @C defines/binding ClassC
+class C { };
+//- @T defines/binding TyvarT
+template <typename T> struct S {
+ T t;
+ //- @f ref DepF
+ //- DepF.node/kind lookup
+ //- DepF.text f
+ //- DepF param.0 TyvarT
+ //- @C ref ClassC
+ //- @"f<C>" ref TAppDepFC
+ //- TAppDepFC.node/kind tapp
+ //- TAppDepFC param.0 DepF
+ //- TAppDepFC param.1 ClassC
+ int i = t.template f<C>;
+ // (f<C> should refer to a lookup of (typeof t)::f applied to C)
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths.cc
new file mode 100644
index 000000000..5b5e86ce5
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths.cc
@@ -0,0 +1,9 @@
+// Checks --experimental_drop_instantiation_independent_data.
+template <typename T> class C {
+//- @int ref TInt
+//- WInt=@int ref TInt
+//- WIField=@ifield defines/binding PTField
+//- WIField childof/context CInst
+ int ifield;
+};
+template class C<short>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths_expect_fail.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths_expect_fail.cc
new file mode 100644
index 000000000..0a6c0e46f
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_drop_redundant_wraiths_expect_fail.cc
@@ -0,0 +1,21 @@
+// Checks --experimental_drop_instantiation_independent_data.
+template <typename T> class C {
+//- @int ref TInt
+//- WInt=@int ref/implicit TInt
+//- WIField=@ifield defines/binding PTField
+//- WInt childof/context CInst
+//- WIField childof/context CInst
+//- ZInt=@int ref/implicit TInt
+//- ZIField=@ifield defines/binding OPTField
+//- ZInt childof/context DInst
+//- ZIField childof/context DInst
+//- CInst specializes TAppCShort
+//- DInst specializes TAppCInt
+//- TAppCShort param.1 TShort
+//- TAppCInt param.1 TInt
+ int ifield;
+};
+//- @short ref TShort
+short s;
+template class C<short>;
+template class C<int>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_exclude.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_exclude.cc
new file mode 100644
index 000000000..c72f4c41b
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_exclude.cc
@@ -0,0 +1,50 @@
+#include "exclude_this_file.h"
+#include "include_this_file.h"
+
+//- @inc defines/binding VarInc
+Included<int> inc;
+//- @exc defines/binding VarExc
+Excluded<int> exc;
+
+//- VarInc typed TAppIncInt
+//- TAppIncInt.node/kind tapp
+//- TAppIncInt param.0 _TemplateIncluded
+//- _ImpInc instantiates TAppIncInt
+
+//- VarExc typed TAppExcInt
+//- TAppExcInt.node/kind tapp
+//- TAppExcInt param.0 _TemplateExcluded
+//- !{_ImpExc instantiates TAppExcInt}
+
+INC_MACRO
+EXC_MACRO
+
+//- @inc_macro defines/binding VarIncMacro
+IncludedMacro<int> inc_macro;
+//- @exc_macro defines/binding VarExcMacro
+ExcludedMacro<int> exc_macro;
+
+//- VarIncMacro typed TAppIncMacroInt
+//- TAppIncMacroInt.node/kind tapp
+//- TAppIncMacroInt param.0 _TemplateIncludedMacro
+//- _ImpMacroInc instantiates TAppIncMacroInt
+
+//- VarExcMacro typed TAppExcMacroInt
+//- TAppExcMacroInt.node/kind tapp
+//- TAppExcMacroInt param.0 _TemplateExcludedMacro
+//- !{_ExcMacroInc instantiates TAppExcMacroInt}
+
+void f() {
+ //- @IF ref IncFun
+ IF(1);
+ //- @EF ref ExcFun
+ EF(1);
+}
+
+//- _ImpIncFun instantiates IncFun
+//- !{_ImpExcFun instantiates ExcFun}
+
+//- @inc_var ref _IncVar
+int x = inc_var<int>;
+//- @exc_var ref _ExcVar
+int y = exc_var<int>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_field.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_field.cc
new file mode 100644
index 000000000..43740a9db
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_field.cc
@@ -0,0 +1,13 @@
+// Checks that we index references to member variables of templates.
+//- @f defines/binding PField
+//- @S defines/binding SBody
+//- SBody.node/kind record
+//- PField childof SBody
+template <typename T> struct S { int f; };
+//- @t_int defines/binding TInt
+//- TInt typed SInt
+S<int> t_int;
+//- @f ref Field
+//- Field childof SIntImp
+//- SIntImp specializes SInt
+int i = t_int.f;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_file_call.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_file_call.cc
new file mode 100644
index 000000000..cc212bec6
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_file_call.cc
@@ -0,0 +1,21 @@
+// Top-level function calls are blamed on files.
+template<class T, T v>
+struct constant {
+ static constexpr T value = v;
+};
+
+//- @foo defines/binding FooFn
+constexpr int foo() { return 1; }
+
+//- @foo ref FooFn
+//- Anchor=@"foo()" ref/call FooFn
+//- Anchor childof FooInit
+constant<int, foo()> n;
+
+//- FooInit code FooCode
+//- FooCode.kind "IDENTIFIER"
+//- FooCode.pre_text
+//- Path="kythe/cxx/indexer/cxx/testdata/tvar_template/template_file_call.cc"
+//- FooInit.node/kind function
+//- FooInit.subkind initializer
+//- vname(_,_,_,Path,_) defines/binding FooInit
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_call.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_call.cc
new file mode 100644
index 000000000..d4f4abf03
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_call.cc
@@ -0,0 +1,9 @@
+template <typename T> void f() {}
+
+//- @"A" defines/binding ClsA
+struct A {};
+
+void g() {
+ //- @"A" ref ClsA
+ f<A>();
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl.cc
new file mode 100644
index 000000000..240e9d3b7
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl.cc
@@ -0,0 +1,7 @@
+// Tests basic support for function template declarations.
+template <typename T>
+T
+//- @id defines/binding IdDecl
+id(T x);
+//- IdDecl.node/kind function
+//- IdDecl.complete incomplete
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl_defn.cc
new file mode 100644
index 000000000..fd8dfe746
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_decl_defn.cc
@@ -0,0 +1,16 @@
+// Tests basic support for function template declarations and definitions.
+template <typename T>
+T
+//- @id defines/binding Decl
+id(T x);
+
+template <typename T>
+T
+//- @id defines/binding Defn
+//- @id completes/uniquely Decl
+id(T x)
+{ return x; }
+//- Decl.node/kind function
+//- Defn.node/kind function
+//- Decl.complete incomplete
+//- Defn.complete definition \ No newline at end of file
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defines.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defines.cc
new file mode 100644
index 000000000..f717e90a0
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defines.cc
@@ -0,0 +1,25 @@
+// Full definition ranges for function templates are recorded.
+
+//- @"template <typename T> void f(T t) { }" defines TFnF
+//- @f defines/binding TFnF
+template <typename T> void f(T t) { }
+
+//- @f defines/binding TFnFTS
+//- @"template <> void f(int t) { }" defines TFnFTS
+template <> void f(int t) { }
+
+//- @f defines/binding TFnFPS
+//- @"template <typename S> void f(S* s) { }" defines TFnFPS
+template <typename S> void f(S* s) { }
+
+class C {
+ //- @f defines/binding TMFn
+ //- @"template <typename T> void f(T t) { }" defines TMFn
+ template <typename T> void f(T t) { }
+
+ template <typename T> void g();
+};
+
+//- @g defines/binding TMFnExt
+//- @"template <typename T> void C::g() { }" defines TMFnExt
+template <typename T> void C::g() { }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defn.cc
new file mode 100644
index 000000000..619d8c960
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_defn.cc
@@ -0,0 +1,15 @@
+// Tests basic support for function templates.
+//- @T defines/binding TT
+//- TT.node/kind tvar
+template <typename T>
+T
+//- @id defines/binding IdFun
+id(T x)
+{ return x; }
+//- IdFun.node/kind function
+//- IdFun.complete definition
+//- IdFun tparam.0 TT
+//- IdFun typed IdFunT
+//- IdFunT.node/kind tapp
+//- IdFunT param.1 TyvarT
+//- IdFunT param.2 TyvarT
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_dependent_spec_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_dependent_spec_defn.cc
new file mode 100644
index 000000000..93e6503f2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_dependent_spec_defn.cc
@@ -0,0 +1,14 @@
+// Checks indexing refs and defs of dependent function specializations.
+//- @f defines/binding AbsF
+template <typename S> long f(S s) { return 0; }
+template <typename T> struct S {
+ friend
+ //- @f defines/binding DepSpecFT
+ //- DepSpecFT specializes/speculative TAppAbsFT
+ //- TAppAbsFT param.0 AbsF
+ //- TAppAbsFT param.1 BuiltinInt
+ //- TAppAbsFT param.2 BuiltinShort
+ //- @int ref BuiltinInt
+ //- @short ref BuiltinShort
+ long f<int, short>(T t) { return 1; }
+};
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_completes.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_completes.cc
new file mode 100644
index 000000000..2c30b8c9a
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_completes.cc
@@ -0,0 +1,10 @@
+// Checks that we get completion edges for explicit function template specs.
+template <typename T> T id(T x);
+//- @id defines/binding Decl1
+template <> int id(int x);
+//- @id defines/binding Defn
+//- @id completes/uniquely Decl2
+//- @id completes/uniquely Decl1
+template <> int id(int x) { return x; }
+//- @id defines/binding Decl2
+template <> int id(int x);
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_with_default_completes.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_with_default_completes.cc
new file mode 100644
index 000000000..3a958c342
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_explicit_spec_with_default_completes.cc
@@ -0,0 +1,18 @@
+// Checks that we get completion edges for explicit function template specs.
+//- @id defines/binding PrimDecl
+template <typename T> T id(T x);
+//- @id defines/binding Decl1
+template <> int id(int x);
+//- @id defines/binding PrimDefn
+//- @id completes/uniquely PrimDecl
+template <typename T> T id (T x) { }
+//- @id defines/binding Defn
+//- @id completes/uniquely Decl2
+//- @id completes/uniquely Decl1
+template <> int id(int x) { return x; }
+//- @id defines/binding Decl2
+template <> int id(int x);
+//- Decl2 specializes TAppPrimDecl
+//- Decl1 specializes TAppPrimDecl
+//- Defn specializes TAppPrimDecl
+//- TAppPrimDecl param.0 PrimDecl
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_implicit_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_implicit_spec.cc
new file mode 100644
index 000000000..cfa33e3fc
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_implicit_spec.cc
@@ -0,0 +1,11 @@
+// Tests support for implicit specializations of function templates.
+//- @id defines/binding AbsId
+template <typename T> T id(T x) { return x; }
+//- @id ref TAppAbsInt
+int y = id(42);
+//- SpecId.node/kind function
+//- SpecId specializes TAppAbsInt
+//- TAppAbsInt.node/kind tapp
+//- TAppAbsInt param.0 AbsId
+//- AbsId.node/kind function
+//- TAppAbsInt param.1 vname("int#builtin",_,_,_,_)
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_inst_vs_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_inst_vs_spec.cc
new file mode 100644
index 000000000..c327f4cd7
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_inst_vs_spec.cc
@@ -0,0 +1,22 @@
+// Checks that instantiates/specializes are applied to function templates.
+// Note that function template partial specialization is not allowed. We will
+// still see instantiates edges, but they will point to either the primary
+// template or to the total specialization used.
+
+//- @f defines/binding PrimaryF
+template <typename T> bool f(T* arg);
+//- @f defines/binding TotalF
+template <> bool f(int* arg);
+
+//- @f ref TotalF
+//- TotalF specializes PrimaryFInt
+//- TotalF instantiates PrimaryFInt
+//- PrimaryFInt param.0 PrimaryF
+bool t = f((int*)nullptr);
+
+//- @f ref PrimaryFDouble
+//- ImpPrimaryFDouble.node/kind function
+//- ImpPrimaryFDouble specializes PrimaryFDouble
+//- ImpPrimaryFDouble instantiates PrimaryFDouble
+//- PrimaryFDouble param.0 PrimaryF
+bool s = f((double*)nullptr);
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_member_spec_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_member_spec_defn.cc
new file mode 100644
index 000000000..4b7d973fb
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_member_spec_defn.cc
@@ -0,0 +1,19 @@
+// Checks indexing refs and defs of member function specializations.
+//- @S defines/binding AbsS
+//- @f defines/binding FnF
+template <typename T> struct S { int f() { return 0; } };
+
+int q() {
+ //- @s defines/binding VarS
+ //- VarS typed TAppAbsSInt
+ //- TAppAbsSInt param.0 AbsS
+ S<int> s;
+ //- @f ref UnaryTAppF // Until we index the full type context: #1879
+ //- UnaryTAppF.node/kind tapp
+ //- UnaryTAppF param.0 FnF
+ //- FnFImp instantiates UnaryTAppF
+ //- SInstInt specializes TAppAbsSInt
+ //- FnFImp childof SInstInt
+ //- @"s.f()" ref/call UnaryTAppF
+ return s.f();
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multi_decl_def.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multi_decl_def.cc
new file mode 100644
index 000000000..1926240c2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multi_decl_def.cc
@@ -0,0 +1,9 @@
+// Checks that we index function templates with mutliple forward declarations.
+//- @f defines/binding Decl1
+template <typename T> void f();
+//- @f defines/binding Decl2
+template <typename T> void f();
+//- @f defines/binding Defn
+//- @f completes/uniquely Decl1
+//- @f completes/uniquely Decl2
+template <typename T> void f() { }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multiple_implicit_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multiple_implicit_spec.cc
new file mode 100644
index 000000000..8305a465a
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_multiple_implicit_spec.cc
@@ -0,0 +1,15 @@
+// Tests support for implicit specializations of function templates.
+//- @id defines/binding AbsId
+template <typename T> T id(T x) { return x; }
+//- @id ref TAppAbsIdInt
+int y = id(42);
+//- @id ref TAppAbsIdFloat
+float z = id(42.0f);
+//- IntSpecId specializes TAppAbsIdInt
+//- IntSpecId.node/kind function
+//- FloatSpecId specializes TAppAbsIdFloat
+//- FloatSpecId.node/kind function
+//- TAppAbsIdInt param.0 AbsId
+//- TAppAbsIdInt param.1 vname("int#builtin",_,_,_,_)
+//- TAppAbsIdFloat param.0 AbsId
+//- TAppAbsIdFloat param.1 vname("float#builtin",_,_,_,_)
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_overload.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_overload.cc
new file mode 100644
index 000000000..4629a6d06
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_overload.cc
@@ -0,0 +1,14 @@
+// Tests overloads of template functions.
+//- @T defines/binding FNoPtrT
+template <typename T>
+//- @f defines/binding FNoPtr
+void f(T t) { }
+//- @T defines/binding FPtrT
+template <typename T>
+//- @f defines/binding FPtr
+void f(T* t) { }
+//- FNoPtr typed TAppFnT
+//- TAppFnT param.2 FNoPtrT
+//- FPtr typed TAppFnTPtr
+//- TAppFnTPtr param.2 FPtrTTy
+//- FPtrTTy param.1 FPtrT
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec.cc
new file mode 100644
index 000000000..845cf6c65
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec.cc
@@ -0,0 +1,10 @@
+// Tests explicit specialization of function templates.
+// Note that function templates do not support partial specialization.
+//- @id defines/binding PrimaryTemplate
+template <typename T> T id(T x) { return T(); }
+//- @id defines/binding SpecTemplate
+template <> int id(int x) { return x; }
+//- SpecTemplate specializes TAppPTInt
+//- TAppPTInt.node/kind tapp
+//- TAppPTInt param.0 PrimaryTemplate
+//- TAppPTInt param.1 vname("int#builtin",_,_,_,_)
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_decl.cc
new file mode 100644
index 000000000..ce04b36c2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_decl.cc
@@ -0,0 +1,13 @@
+// Tests that declarations of template specializations are recorded.
+//- @id defines/binding IdDecl
+template <typename T> T id(T x);
+//- @id defines/binding IdSpecDecl
+//- IdSpecDecl specializes TApp
+//- TApp param.0 IdDecl
+template <> int id(int x);
+//- @id defines/binding IdDecl2
+template <typename T> T id(T x);
+//- @id defines/binding IdSpecDecl2
+//- IdSpecDecl2 specializes TApp2
+//- TApp2 param.0 IdDecl
+template <> int id(int x);
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_decl.cc
new file mode 100644
index 000000000..bd6860ce6
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_decl.cc
@@ -0,0 +1,10 @@
+// Tests explicit specialization of function templates with defns and decls.
+//- @id defines/binding IdDecl
+template <typename T> T id(T x);
+//- @id defines/binding IdSpecDefn
+template <> int id(int x) { return x; }
+//- @id defines/binding IdDefn
+template <typename T> T id(T x) { return T(); }
+//- IdSpecDefn specializes TAppDefn
+//- TAppDefn.node/kind tapp
+//- TAppDefn param.0 IdDecl
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_defn_decl_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_defn_decl_decl.cc
new file mode 100644
index 000000000..c19fa35ba
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_defn_defn_decl_decl.cc
@@ -0,0 +1,15 @@
+// The choice of which defn/decl to associate with is arbitrary. In reality,
+// it is defined by the implementation, but it's useful to check if this
+// changes.
+//- @id defines/binding IdDecl
+template <typename T> T id(T x);
+//- @id defines/binding IdSpecDefn
+//- IdSpecDefn specializes TAppIdSpecDefnInt
+template <> int id(int x) { return x; }
+//- @id defines/binding IdDecl2
+template <typename T> T id(T x);
+//- @id defines/binding IdSpecDefn2
+//- IdSpecDefn2 specializes TAppIdSpecDefnFloat
+template <> float id(float x) { return x; }
+//- TAppIdSpecDefnInt param.0 IdDecl
+//- TAppIdSpecDefnFloat param.0 IdDecl \ No newline at end of file
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_overload.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_overload.cc
new file mode 100644
index 000000000..3ed20d355
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fn_spec_overload.cc
@@ -0,0 +1,10 @@
+// Tests the combination of overloading and specialization on function
+// templates.
+//- @f defines/binding FnF
+template <typename T> void f(T t) { }
+//- @f defines/binding FnFInt
+template <> void f(int) { }
+//- @f defines/binding FnFPtr
+template <typename T> void f(T* t) { }
+//- FnFInt specializes TAppFnF
+//- TAppFnF param.0 FnF \ No newline at end of file
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fold_expressions.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fold_expressions.cc
new file mode 100644
index 000000000..f25e8791b
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_fold_expressions.cc
@@ -0,0 +1,10 @@
+// Verify that we parse and reference templates with C++17 fold expressions.
+
+//- @Args defines/binding ArgsParam
+template <typename... Args>
+//- @Args ref ArgsParam
+//- @args defines/binding ArgsVar
+auto Sum(Args... args){
+ //- @args ref ArgsVar
+ return (args + ...);
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_incomplete_array.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_incomplete_array.cc
new file mode 100644
index 000000000..26cd85930
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_incomplete_array.cc
@@ -0,0 +1,10 @@
+// We don't fall over on incomplete arrays.
+//- @T defines/binding TyvarT
+template<typename T> struct A {
+//- @R defines/binding FieldR
+ T R[];
+};
+//- FieldR typed TAppIArrT
+//- TAppDArrIntExpr.node/kind tapp
+//- TAppDArrIntExpr param.0 vname("iarr#builtin",_,_,_,_)
+//- TAppDArrIntExpr param.1 TyvarT
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_instance_type_from_class.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_instance_type_from_class.cc
new file mode 100644
index 000000000..474b0dab6
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_instance_type_from_class.cc
@@ -0,0 +1,8 @@
+// Checks the representation of types from template instantiations.
+template
+<typename X>
+struct C {
+using T = typename X::Y;
+};
+struct D { using Y = int; };
+using S = C<D>::T;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_multilevel_argument.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_multilevel_argument.cc
new file mode 100644
index 000000000..a88adb2ce
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_multilevel_argument.cc
@@ -0,0 +1,12 @@
+// Tests the behavior of multiple levels of template arguments.
+//- @T defines/binding AbsT
+template <typename T>
+struct X {
+//- @S defines/binding AbsS
+ template<typename S>
+ struct Y {
+//- @U defines/binding AliasU
+ using U = T;
+ };
+};
+//- AliasU aliases AbsT
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_nested_name.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_nested_name.cc
new file mode 100644
index 000000000..4962d6408
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_nested_name.cc
@@ -0,0 +1,23 @@
+// We emit references to nodes in nested names.
+template <typename T>
+//- @S defines/binding StructS
+struct S {
+ static T x;
+ template <typename U>
+//- @V defines/binding StructV
+ struct V {
+ static U y;
+ };
+};
+
+//- @S ref SInt
+//- @V ref VFloat
+//- @int ref Int
+//- @float ref Float
+double z = S<int>::V<float>::y;
+
+//- SInt instantiates AppSInt
+//- VFloat instantiates AppVFloat
+//- AppSInt param.0 StructS
+//- AppVFloat param.0 NominalV
+//- NominalV.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_decl.cc
new file mode 100644
index 000000000..3c7b6ff6d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_decl.cc
@@ -0,0 +1,7 @@
+// We index function template declarations with parameter pack arguments.
+//- @Ts defines/binding PackAbsvar
+template <typename... Ts>
+//- @Ts ref PackAbsvar
+//- @ts defines/binding PackParam
+//- PackParam typed PackAbsvar
+void f(Ts... ts) { }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_mono_call.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_mono_call.cc
new file mode 100644
index 000000000..5a88ebdeb
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_mono_call.cc
@@ -0,0 +1,22 @@
+// We index calls to function templates with parameter pack arguments.
+template <typename... Ts>
+//- @f defines/binding FnTF
+void f(Ts... ts) { }
+
+void g() {
+//- @f ref AppFnTFSigma
+ f(1, "one");
+}
+
+//- @cc defines/binding CC CC typed String
+const char *cc;
+//- @tn defines/binding TN TN typed Int
+int tn;
+
+//- FnF instantiates AppFnTFSigma
+//- FnF.node/kind function
+//- AppFnTFSigma param.0 FnTF
+//- AppFnTFSigma param.1 Sigma
+//- Sigma.node/kind tsigma
+//- Sigma param.0 Int
+//- Sigma param.1 String
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_pack_call.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_pack_call.cc
new file mode 100644
index 000000000..92e0ab076
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_fn_pack_call.cc
@@ -0,0 +1,17 @@
+// We index calls to function templates with parameter pack arguments.
+
+//- @Ts defines/binding FTs
+template <typename... Ts>
+//- @S defines/binding AbsS
+void S(Ts... ts);
+
+//- @Ts defines/binding GTs
+template <typename... Ts>
+//- @g defines/binding FnTG
+void g(Ts... ts) {
+ //- SCall childof FnTG
+ //- SCall ref/call LookupS
+ auto s = S<Ts...>(ts...);
+}
+
+//- LookupS.text "S<Ts...>"
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_rec_pack_call.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_rec_pack_call.cc
new file mode 100644
index 000000000..c47d07d0c
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_pack_rec_pack_call.cc
@@ -0,0 +1,23 @@
+// We index calls to ctors of class templates with parameter pack arguments.
+
+//- @Ts defines/binding FTs
+template <typename... Ts>
+//- @S defines/binding StructS
+struct S {
+ S(Ts... ts);
+};
+
+//- @Ts defines/binding GTs
+template <typename... Ts>
+//- @g defines/binding FnTG
+void g(Ts... ts) {
+ //- CtorCall ref/call CtorLookup
+ //- CtorCall childof FnTG
+ auto s = S<Ts...>(ts...);
+}
+
+//- CtorLookup.node/kind lookup
+//- CtorLookup.text "#ctor"
+//- CtorLookup param.0 TAppAbsSTs
+//- TAppAbsSTs param.0 StructS
+//- TAppAbsSTs param.1 GTs
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_completes.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_completes.cc
new file mode 100644
index 000000000..79626c7f6
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_completes.cc
@@ -0,0 +1,17 @@
+// Checks that completion edges are properly recorded for specializations.
+
+//- @C defines/binding TemplateTS
+template <typename T, typename S> class C;
+//- @C defines/binding TemplateT
+template <typename T> class C<int, T>;
+//- @C defines/binding Template
+template <> class C<int, float>;
+
+//- @C completes/uniquely TemplateTS
+template <typename T, typename S> class C { };
+
+//- @C completes/uniquely TemplateT
+template <typename T> class C<int, T> { };
+
+//- @C completes/uniquely Template
+template <> class C<int, float> { };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_decl.cc
new file mode 100644
index 000000000..0e58f124a
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_decl.cc
@@ -0,0 +1,19 @@
+// Checks that single-variable specialization decls are recorded.
+template
+<typename T>
+//- @C defines/binding IncompleteC
+class C;
+
+template
+<>
+//- @C defines/binding PCDecl
+class C
+<int>;
+
+//- PCDecl specializes TAppNomCInt
+//- TAppNomCInt.node/kind tapp
+//- TAppNomCInt param.0 NominalC
+//- IncompleteC.node/kind record
+//- IncompleteC.complete incomplete
+//- PCDecl.node/kind record
+//- PCDecl.complete incomplete \ No newline at end of file
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_defn.cc
new file mode 100644
index 000000000..c11fac388
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_defn.cc
@@ -0,0 +1,23 @@
+// Checks that declarations and definitions of templates are distinguished.
+
+//- @C defines/binding FwdTemplate
+template <typename T> class C;
+
+//- @C defines/binding FwdSpec
+template <> class C <int>;
+
+//- @C defines/binding Template
+//- @C completes/uniquely FwdTemplate
+template <typename T> class C { };
+
+//- @C defines/binding Spec
+//- @C completes/uniquely FwdSpec
+template <> class C <int> { };
+
+//- FwdTemplate.node/kind record
+//- FwdSpec.node/kind record
+//- FwdSpec.complete incomplete
+//- Spec.node/kind record
+//- Spec.complete definition
+//- Spec specializes TAppCInt
+//- FwdSpec specializes TAppCInt
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_multiple_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_multiple_decl.cc
new file mode 100644
index 000000000..77816ef32
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_multiple_decl.cc
@@ -0,0 +1,26 @@
+// Checks that multiple declarations of a partial specialization are recorded.
+template
+<typename T, typename S>
+//- @C defines/binding CDecl
+class C;
+
+template
+//-
+<typename V>
+//- @C defines/binding CVDecl
+class C
+<int, V>;
+
+template
+<typename W>
+//- @C defines/binding CWDecl
+class C
+<int, W>;
+
+//- CWDecl specializes TAppCNameW
+//- CVDecl specializes TAppCNameV
+//- TAppCNameW.node/kind tapp
+//- TAppCNameV.node/kind tapp
+//- TAppCNameW param.0 CDecl
+//- TAppCNameV param.0 CDecl
+//- CDecl.node/kind record
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_twovar_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_twovar_decl.cc
new file mode 100644
index 000000000..be6972468
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ps_twovar_decl.cc
@@ -0,0 +1,18 @@
+// Checks that multi-variable partial specialization decls are recorded.
+template
+<typename T, typename S>
+//- @C defines/binding CDecl
+class C;
+
+template
+//- @U defines/binding TU
+<typename U>
+//- @C defines/binding PCDecl
+class C
+<int, U>;
+
+//- APCDecl specializes TAppCDeclIntAbsU
+//- TAppCDeclIntAbsU.node/kind tapp
+//- TAppCDeclIntAbsU param.2 TU
+//- PCDecl tparam.0 TU
+//- TAppCDeclIntAbsU param.0 CNominal
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_member_abs.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_member_abs.cc
new file mode 100644
index 000000000..e89a2faad
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_member_abs.cc
@@ -0,0 +1,10 @@
+// Checks that we don't draw spurious childof edges when aliasing is on.
+template <typename T>
+//- @C defines/binding ClassC
+//- @F defines/binding CiF // aliased.
+//- CiF childof ClassC
+struct C { void F() { } };
+
+//- CiF instantiates TAppCiFNil
+//- TAppCiFNil param.0 CiF
+void g() { C<int> ci; ci.F(); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override.cc
new file mode 100644
index 000000000..cf5839d93
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override.cc
@@ -0,0 +1,11 @@
+// We index overrides that come from templates.
+// Note that we override C<int>::f, not \T.C<T>::f.
+//- @f defines/binding CF
+//- @C defines/binding TemplateC
+//- CF childof CInstInt
+//- CInstInt instantiates TAppCInt
+//- TAppCInt param.0 TemplateC
+template <typename T> class C { virtual void f() { } };
+//- @f defines/binding DF
+//- DF overrides CF
+class D : public C<int> { void f() override { } };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root.cc
new file mode 100644
index 000000000..fdda37312
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root.cc
@@ -0,0 +1,17 @@
+// We index overrides that come from templates.
+// Note that we override C<int>::f, not \T.C<T>::f.
+//- @f defines/binding CF
+//- @C defines/binding TemplateC
+//- CF childof CInstInt
+//- CInstInt instantiates TAppCInt
+//- TAppCInt param.0 TemplateC
+//- !{CF overrides/root _}
+template <typename T> class C { virtual void f() { } };
+//- @f defines/binding DF
+//- DF overrides CF
+//- DF overrides/root CF
+class D : public C<int> { void f() override { } };
+//- @f defines/binding EF
+//- EF overrides DF
+//- EF overrides/root CF
+class E : public D { void f() override { } };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root_aliasing.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root_aliasing.cc
new file mode 100644
index 000000000..405939db4
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_rec_override_root_aliasing.cc
@@ -0,0 +1,16 @@
+// We point at the correct abs nodes in overrides when aliasing is on.
+//- @f defines/binding CF
+//- @C defines/binding ClassC
+//- CF childof ClassC
+//- !{CF overrides/root _}
+template <typename T> class C { virtual void f() { } };
+//- @f defines/binding DF
+//- DF overrides TAppCF
+//- DF overrides/root TAppCF
+//- TAppCF.node/kind tapp
+//- TAppCF param.0 CF
+class D : public C<int> { void f() override { } };
+//- @f defines/binding EF
+//- EF overrides DF
+//- EF overrides/root TAppCF
+class E : public D { void f() override { } };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_redundant_constituents_anchored.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_redundant_constituents_anchored.cc
new file mode 100644
index 000000000..ade1b42b0
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_redundant_constituents_anchored.cc
@@ -0,0 +1,8 @@
+// Checks that repeated structured types have their constituents marked.
+template <typename T> class C { };
+//- @D defines/binding ClassD
+class D { };
+//- @D ref ClassD
+C<D> x;
+//- @D ref ClassD
+C<D> y;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_static_member.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_static_member.cc
new file mode 100644
index 000000000..a6b95cfa0
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_static_member.cc
@@ -0,0 +1,15 @@
+// We handle refs to static member function template specs in member expressions
+// Needs -ignore_dups (function pointer type ref is doubly emitted)
+//- @C defines/binding StructC
+struct C { };
+//- @f defines/binding MemberF
+struct S { template <typename T> static int f(void) { return 0; } };
+S s;
+//- @C ref StructC
+//- @f ref TAppFC
+//- @"s.f<C>()" ref/call TAppFC
+//- TAppFC param.0 MemberF
+//- TAppFC param.1 StructC
+//- Imp instantiates TAppFC
+//- Imp.node/kind function
+void qqq() { s.f<C>(); }
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_two_arg_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_two_arg_spec.cc
new file mode 100644
index 000000000..a6c1451c6
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_two_arg_spec.cc
@@ -0,0 +1,15 @@
+// Checks that specializations of record nodes underneath abstractions are
+// given distinct names.
+// (This test's verifier load is mainly in the well-formedness checks.)
+
+//- @C defines/binding TemplateCBody
+//- TemplaceCBody.node/kind record
+template <typename T, typename S> class C { };
+
+//- @C defines/binding PartialSpecializationC
+//- PartialSpecializationC.node/kind record
+template <typename U> class C<int, U> { };
+
+//- @C defines/binding TotalSpecializationC
+//- TotalSpecializationC.node/kind record
+template <> class C<int, float> { };
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ty_typename.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ty_typename.cc
new file mode 100644
index 000000000..d67084af9
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_ty_typename.cc
@@ -0,0 +1,8 @@
+// Checks that typename template parameters are properly recorded.
+template
+//- @X defines/binding TvX
+<typename X>
+//- @C defines/binding Abs
+class C {};
+//- C tparam.0 TvX
+//- TvX.node/kind tvar
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_type_alias_param.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_type_alias_param.cc
new file mode 100644
index 000000000..e460b2379
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_type_alias_param.cc
@@ -0,0 +1,7 @@
+// Checks that we don't fall over on type alias type parameters.
+
+template <typename T>
+struct tstruct {};
+
+template <typename T>
+using alias = typename tstruct<T>::type;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_unresolved_ctor_expr.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_unresolved_ctor_expr.cc
new file mode 100644
index 000000000..232fd9889
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_unresolved_ctor_expr.cc
@@ -0,0 +1,14 @@
+// Checks that we handle type-dependent maybe-ctor callish sites.
+// see also CXXUnresolvedConstructExpr.
+//- @T defines/binding TyvarT
+template<typename T, typename A1>
+//- @make_a defines/binding MakeA
+//- MakeA.node/kind function
+inline T make_a(const A1& a1) {
+ //- CallAnchor=@"T(a1)" ref/call LookupCtorT
+ //- CallAnchor childof MakeA
+ //- LookupCtorT.node/kind lookup
+ //- LookupCtorT.text "#ctor"
+ //- LookupCtorT param.0 TyvarT
+ return T(a1);
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_using_pack_expansion.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_using_pack_expansion.cc
new file mode 100644
index 000000000..257c07d88
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_using_pack_expansion.cc
@@ -0,0 +1,28 @@
+// Verify that we emit references for C++17 pack expansion using declarations.
+
+struct A {
+ //- @Call defines/binding ACallFn
+ void Call(const A&);
+};
+
+struct B {
+ //- @Call defines/binding BCallFn
+ void Call(const B&);
+};
+
+template <typename... Ts>
+struct S : Ts... {
+ //- @Call ref/implicit ACallFn
+ //- @Call ref/implicit BCallFn
+ using Ts::Call...;
+};
+
+void f() {
+ S<A, B> c;
+ //- @Call ref ACallFn
+ //- @"c.Call(A{})" ref/call ACallFn
+ c.Call(A{});
+ //- @Call ref BCallFn
+ //- @"c.Call(B{})" ref/call BCallFn
+ c.Call(B{});
+}
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_constexpr.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_constexpr.cc
new file mode 100644
index 000000000..1431715ec
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_constexpr.cc
@@ -0,0 +1,13 @@
+// We index constexpr variable templates.
+//- VariableTemplate defines/binding VT
+//- VT.node/kind variable
+template <typename T> constexpr T VariableTemplate{};
+//- @VariableTemplate ref VT
+//- @auto ref IntBuiltin
+auto TemplateValue = VariableTemplate<int>;
+//- TApp.node/kind tapp
+//- TApp param.0 VT
+//- TApp param.1 IntBuiltin
+//- VTVar.node/kind variable
+//- VTVar instantiates TApp
+//- VTVar specializes TApp
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_decl.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_decl.cc
new file mode 100644
index 000000000..acd7d80e6
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_decl.cc
@@ -0,0 +1,9 @@
+// Checks that we index decls of variable templates.
+//- @T defines/binding TyvarT
+template <typename T>
+//- @T ref TyvarT
+//- @y defines/binding VarYBody
+extern T y;
+//- VarYBody.node/kind variable
+//- VarYBody typed TyvarT
+//- VarYBody.complete incomplete \ No newline at end of file
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn.cc
new file mode 100644
index 000000000..c883d1601
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn.cc
@@ -0,0 +1,9 @@
+// Checks that we index defns of variable templates.
+//- @T defines/binding TyvarT
+template <typename T>
+//- @T ref TyvarT
+//- @y defines/binding VarYBody
+T y;
+//- VarYBody.node/kind variable
+//- VarYBody typed TyvarT
+//- VarYBody.complete definition \ No newline at end of file
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn_completes.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn_completes.cc
new file mode 100644
index 000000000..487221063
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_defn_completes.cc
@@ -0,0 +1,5 @@
+// Checks that variable template defns complete variable template decls.
+//- @z defines/binding VarZDecl
+template <typename T> extern T z;
+//- @z completes/uniquely VarZDecl
+template <typename T> T z;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_explicit_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_explicit_spec.cc
new file mode 100644
index 000000000..071136cd2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_explicit_spec.cc
@@ -0,0 +1,10 @@
+// Tests that we index explicit specializations of template variables.
+//- @v defines/binding PrimaryTemplateV
+template <typename T> T v;
+//- @v defines/binding SpecIntV
+//- SpecIntV specializes AppPTInt
+//- AppPTInt.node/kind tapp
+//- AppPTInt param.0 PrimaryTemplateV
+//- AppPTInt param.1 vname("int#builtin",_,_,_,_)
+template <> int v<int>;
+template <> float v<float>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_implicit_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_implicit_spec.cc
new file mode 100644
index 000000000..1c01bff18
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_implicit_spec.cc
@@ -0,0 +1,10 @@
+// Tests that we index implicit specializations of template variables.
+//- @v defines/binding PrimaryTemplateV
+template <typename T> T v;
+//- @v ref SpecIntV
+//- SpecIntV instantiates AppPTInt
+//- SpecIntV specializes AppPTInt
+//- AppPTInt.node/kind tapp
+//- AppPTInt param.0 PrimaryTemplateV
+//- AppPTInt param.1 vname("int#builtin",_,_,_,_)
+int w = v<int>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_inst_total_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_inst_total_spec.cc
new file mode 100644
index 000000000..aa2374258
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_inst_total_spec.cc
@@ -0,0 +1,10 @@
+// Checks that we correctly record instantiates edges for total specs.
+//- @s_equals_float defines/binding PrimaryT
+template <typename S> bool s_equals_float = false;
+//- @s_equals_float defines/binding TotalT
+template <> bool s_equals_float<float> = true;
+//- @s_equals_float ref TotalT
+//- TotalT instantiates PrimaryTFloat
+//- TotalT specializes PrimaryTFloat
+//- PrimaryTFloat param.0 PrimaryT
+bool is_true = s_equals_float<float>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps.cc
new file mode 100644
index 000000000..f90b0e477
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps.cc
@@ -0,0 +1,13 @@
+// Tests that we index partial specializations of template variables.
+//- @v defines/binding VarV
+template <typename T, typename S> T v;
+//- @U defines/binding TyvarU
+template <typename U>
+//- @v defines/binding VarPSU
+U v<U, int>;
+//- VarPSU.node/kind variable
+//- VarPSU specializes TAppVarV
+//- TAppVarV.node/kind tapp
+//- TAppVarV param.0 VarV
+//- TAppVarV param.1 TyvarU
+//- TAppVarV param.2 vname("int#builtin",_,_,_,_)
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_completes.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_completes.cc
new file mode 100644
index 000000000..75247a60a
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_completes.cc
@@ -0,0 +1,6 @@
+// Checks completion edges for variable template partial specializations.
+template <typename T, typename S> extern T z;
+//- @z defines/binding VarZPsAbsDecl
+template <typename U> extern int z<int, U>;
+//- @z completes/uniquely VarZPsAbsDecl
+template <typename U> int z<int, U>;
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_implicit_spec.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_implicit_spec.cc
new file mode 100644
index 000000000..2cb94f83d
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ps_implicit_spec.cc
@@ -0,0 +1,16 @@
+// Tests that we index instances of partial specializations of template vars.
+//- @v defines/binding Prim
+template <typename T, typename S, typename V> T v;
+template <typename U>
+//- @v defines/binding V
+U v<int, U, long>;
+//- @v ref Spec
+float w = v<int, float, long>;
+//- Spec specializes TAppPrim
+//- Spec instantiates TAppV
+//- TAppPrim param.0 Prim
+//- TAppPrim param.1 vname("int#builtin",_,_,_,_)
+//- TAppPrim param.2 vname("float#builtin",_,_,_,_)
+//- TAppPrim param.3 vname("long#builtin",_,_,_,_)
+//- TAppV param.0 V
+//- TAppV param.1 vname("float#builtin",_,_,_,_)
diff --git a/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ref_ps.cc b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ref_ps.cc
new file mode 100644
index 000000000..467d39ca2
--- /dev/null
+++ b/kythe/cxx/indexer/cxx/testdata/tvar_template/template_var_ref_ps.cc
@@ -0,0 +1,11 @@
+/// Tests that references to ps var templates go to the ps and not the primary.
+//- @v defines/binding Primary
+template <typename T, typename S> T v = S();
+//- @v defines/binding PartialVar
+//- PartialVar.node/kind variable
+template <typename U> U v<U, int> = 3;
+//- @v ref Spec
+int w = v<int,int>;
+//- Spec.node/kind variable
+//- Spec instantiates TAppPartialVar
+//- TAppPartialVar param.0 PartialVar
diff --git a/kythe/cxx/indexer/proto/file_descriptor_walker.cc b/kythe/cxx/indexer/proto/file_descriptor_walker.cc
index 089eeb94a..9638a8678 100644
--- a/kythe/cxx/indexer/proto/file_descriptor_walker.cc
+++ b/kythe/cxx/indexer/proto/file_descriptor_walker.cc
@@ -21,6 +21,7 @@
#include "absl/strings/str_join.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
+#include "absl/types/optional.h"
#include "glog/logging.h"
#include "google/protobuf/descriptor.h"
#include "google/protobuf/repeated_field.h"
@@ -369,17 +370,18 @@ void FileDescriptorWalker::VisitGeneratedProtoInfo() {
}
namespace {
-proto::VName VNameForBuiltinType(FieldDescriptor::Type type) {
+absl::optional<proto::VName> VNameForBuiltinType(FieldDescriptor::Type type) {
// TODO(zrlk): Emit builtins.
- proto::VName builtin_vname;
- builtin_vname.set_language(kLanguageName);
- builtin_vname.set_signature(FieldDescriptor::TypeName(type));
- return builtin_vname;
+ return absl::nullopt;
}
} // anonymous namespace
-proto::VName FileDescriptorWalker::VNameForFieldType(
+absl::optional<proto::VName> FileDescriptorWalker::VNameForFieldType(
const FieldDescriptor* field_proto) {
+ if (field_proto->is_map()) {
+ // Maps are technically TYPE_MESSAGE, but don't have a useful VName.
+ return absl::nullopt;
+ }
if (field_proto->type() == FieldDescriptor::TYPE_MESSAGE ||
field_proto->type() == FieldDescriptor::TYPE_GROUP) {
return builder_->VNameForDescriptor(field_proto->message_type());
@@ -456,22 +458,18 @@ void FileDescriptorWalker::VisitField(const std::string* parent_name,
}
}
}
- VName type = VNameForFieldType(field);
-
- // TODO: add value_type back in at some point.
- // Add reference for this field's type. We assume it to be output
- // processing a dependency, but in the worst case this might introduce
- // an edge to no VName (presumably in turn introducing a Lost node).
-
- builder_->AddReference(type, type_location);
- builder_->AddTyping(v_name, type);
+ if (auto type = VNameForFieldType(field)) {
+ // TODO: add value_type back in at some point.
+ // Add reference for this field's type. We assume it to be output
+ // processing a dependency, but in the worst case this might introduce
+ // an edge to no VName (presumably in turn introducing a Lost node).
+ builder_->AddReference(*type, type_location);
+ builder_->AddTyping(v_name, *type);
+ }
if (field->is_map()) {
- // Add references to map type components.
- VName keyType = VNameForFieldType(field->message_type()->field(0));
- VName valType = VNameForFieldType(field->message_type()->field(1));
- // Map key/value types do not have SourceCodeInfo locations; we have to find
- // them within the outer "map<...>" type location.
+ // Map key/value types do not have SourceCodeInfo locations; we have to
+ // find them within the outer "map<...>" type location.
absl::string_view content = absl::string_view(content_);
absl::string_view type_name = content.substr(
type_location.begin, type_location.end - type_location.begin);
@@ -479,15 +477,20 @@ void FileDescriptorWalker::VisitField(const std::string* parent_name,
if (RE2::FullMatch(ToStringPiece(type_name),
R"(\s*map\s*<\s*(\S+)\s*,\s*(\S+)\s*>\s*)", &key,
&val)) {
- size_t key_start = key.data() - content.data();
- size_t val_start = val.data() - content.data();
+ // Add references to map type components.
+ if (auto key_type = VNameForFieldType(field->message_type()->field(0))) {
+ size_t key_start = key.data() - content.data();
+ builder_->AddReference(
+ *key_type, {type_location.file, key_start, key_start + key.size()});
+ }
- builder_->AddReference(
- keyType, {type_location.file, key_start, key_start + key.size()});
- builder_->AddReference(
- valType, {type_location.file, val_start, val_start + val.size()});
+ if (auto val_type = VNameForFieldType(field->message_type()->field(1))) {
+ size_t val_start = val.data() - content.data();
+ builder_->AddReference(
+ *val_type, {type_location.file, val_start, val_start + val.size()});
+ }
+ // TODO(schroederc): emit map type node
}
- // TODO(schroederc): emit map type node
}
if (field->has_default_value()) {
diff --git a/kythe/cxx/indexer/proto/file_descriptor_walker.h b/kythe/cxx/indexer/proto/file_descriptor_walker.h
index b875004e3..be7a530b9 100644
--- a/kythe/cxx/indexer/proto/file_descriptor_walker.h
+++ b/kythe/cxx/indexer/proto/file_descriptor_walker.h
@@ -208,7 +208,7 @@ class FileDescriptorWalker {
absl::StatusOr<PartialLocation> ParseLocation(
const std::vector<int>& span) const;
- proto::VName VNameForFieldType(
+ absl::optional<proto::VName> VNameForFieldType(
const google::protobuf::FieldDescriptor* field);
/// \brief Attach marked source (if not None) to `vname`.
diff --git a/kythe/cxx/indexer/proto/testdata/BUILD b/kythe/cxx/indexer/proto/testdata/BUILD
index 40bc9d3c3..e7233d487 100644
--- a/kythe/cxx/indexer/proto/testdata/BUILD
+++ b/kythe/cxx/indexer/proto/testdata/BUILD
@@ -69,6 +69,12 @@ proto_verifier_test(
)
proto_verifier_test(
+ name = "map_test",
+ srcs = [":basic_map_proto"],
+ tags = ["basic"],
+)
+
+proto_verifier_test(
name = "proto3",
srcs = [":proto3_proto"],
tags = ["basic"],
@@ -196,8 +202,14 @@ proto_library(
)
proto_library(
+ name = "basic_map_proto",
+ srcs = ["basic/map.proto"],
+)
+
+proto_library(
name = "corner_cases_import_syntax_proto",
srcs = ["corner_cases/import_syntax.proto"],
+ exports = [":basic_oneof_proto"],
deps = [
":basic_nested_message_proto",
":basic_oneof_proto",
diff --git a/kythe/cxx/indexer/proto/testdata/basic/map.proto b/kythe/cxx/indexer/proto/testdata/basic/map.proto
new file mode 100644
index 000000000..1da7a3429
--- /dev/null
+++ b/kythe/cxx/indexer/proto/testdata/basic/map.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+
+package kythe_test_proto;
+
+
+//- @Value defines/binding ValueMsg
+message Value {}
+
+message Message {
+ //- !{ @"map<string, int32>" ref _NativeMap }
+ map<string, int32> builtin_map = 1;
+
+ //- @Value ref ValueMsg
+ //- !{ "@map<string, Value>" ref _MessageMap }
+ map<string, Value> message_map = 2;
+}
diff --git a/kythe/cxx/indexer/proto/testdata/proto_verifier_test.bzl b/kythe/cxx/indexer/proto/testdata/proto_verifier_test.bzl
index 19a835342..2cd5a93c5 100644
--- a/kythe/cxx/indexer/proto/testdata/proto_verifier_test.bzl
+++ b/kythe/cxx/indexer/proto/testdata/proto_verifier_test.bzl
@@ -40,7 +40,17 @@ def get_proto_files_and_proto_paths(protolibs):
for src in info.direct_sources:
toplevel_srcs.append(src)
all_srcs = depset([], transitive = [lib[ProtoInfo].transitive_sources for lib in protolibs])
- proto_paths = depset(transitive = [lib[ProtoInfo].transitive_proto_path for lib in protolibs])
+ proto_paths = depset(
+ transitive = [lib[ProtoInfo].transitive_proto_path for lib in protolibs] +
+ # Workaround for https://github.com/bazelbuild/bazel/issues/7964.
+ # Since we can't rely on ProtoInfo to provide accurate roots, generate them here.
+ [depset([
+ src.root.path
+ for src in depset(toplevel_srcs, transitive = [all_srcs], order = "postorder").to_list()
+ if src.root.path
+ ])],
+ order = "postorder",
+ )
return toplevel_srcs, all_srcs, proto_paths
def _proto_extract_kzip_impl(ctx):
diff --git a/kythe/cxx/indexer/textproto/testdata/BUILD b/kythe/cxx/indexer/textproto/testdata/BUILD
index 2734a88ad..1504b9c37 100644
--- a/kythe/cxx/indexer/textproto/testdata/BUILD
+++ b/kythe/cxx/indexer/textproto/testdata/BUILD
@@ -47,6 +47,15 @@ textproto_verifier_test(
)
textproto_verifier_test(
+ name = "imports_generated_test",
+ protos = [
+ ":generated_proto",
+ ":imports_generated_proto",
+ ],
+ textprotos = ["generated_imports.pbtxt"],
+)
+
+textproto_verifier_test(
name = "extensions_test",
protos = [":extensions_proto"],
textprotos = ["extensions.pbtxt"],
@@ -108,3 +117,21 @@ proto_library(
name = "repeated_extension_proto",
srcs = ["repeated_extension.proto"],
)
+
+genrule(
+ name = "generate_proto",
+ srcs = ["example.proto"],
+ outs = ["generated.proto"],
+ cmd = "cp $< $@",
+)
+
+proto_library(
+ name = "generated_proto",
+ srcs = [":generated.proto"],
+)
+
+proto_library(
+ name = "imports_generated_proto",
+ srcs = ["imports_generated.proto"],
+ deps = [":generated_proto"],
+)
diff --git a/kythe/cxx/indexer/textproto/testdata/generated_imports.pbtxt b/kythe/cxx/indexer/textproto/testdata/generated_imports.pbtxt
new file mode 100644
index 000000000..5d5e5d9d8
--- /dev/null
+++ b/kythe/cxx/indexer/textproto/testdata/generated_imports.pbtxt
@@ -0,0 +1,8 @@
+# proto-message: example2.OuterMessage
+# proto-file: kythe/cxx/indexer/textproto/testdata/imports_generated.proto
+
+#- @inner_msg ref OuterMessageInnerMsg
+inner_msg {
+ #- @field1 ref Field1
+ field1: "hello"
+}
diff --git a/kythe/cxx/indexer/textproto/testdata/imports_generated.proto b/kythe/cxx/indexer/textproto/testdata/imports_generated.proto
new file mode 100644
index 000000000..a85321819
--- /dev/null
+++ b/kythe/cxx/indexer/textproto/testdata/imports_generated.proto
@@ -0,0 +1,10 @@
+syntax = "proto2";
+
+package example2;
+
+import "kythe/cxx/indexer/textproto/testdata/generated.proto";
+
+message OuterMessage {
+ //- @inner_msg defines/binding OuterMessageInnerMsg
+ optional example.Message2 inner_msg = 1;
+};
diff --git a/kythe/cxx/indexer/textproto/testdata/textproto_verifier_test.bzl b/kythe/cxx/indexer/textproto/testdata/textproto_verifier_test.bzl
index 042560068..156526776 100644
--- a/kythe/cxx/indexer/textproto/testdata/textproto_verifier_test.bzl
+++ b/kythe/cxx/indexer/textproto/testdata/textproto_verifier_test.bzl
@@ -165,7 +165,6 @@ def textproto_verifier_test(
verifier_test,
name = name,
size = size,
- srcs = textproto_entries + [proto_entries],
opts = vopts,
tags = tags,
visibility = visibility,
diff --git a/kythe/cxx/tools/fyi/testdata/compile_commands.bzl b/kythe/cxx/tools/fyi/testdata/compile_commands.bzl
index 09ea2bcf2..b8c44217d 100644
--- a/kythe/cxx/tools/fyi/testdata/compile_commands.bzl
+++ b/kythe/cxx/tools/fyi/testdata/compile_commands.bzl
@@ -1,6 +1,6 @@
-"""Rule for generating compile_commands.json.in with appropriate inlcude directories."""
+"""Rule for generating compile_commands.json.in with appropriate include directories."""
-load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
+load("//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", "use_cpp_toolchain")
_TEMPLATE = """ {{
"directory": "OUT_DIR",
@@ -38,6 +38,6 @@ compile_commands = rule(
outputs = {
"compile_commands": "compile_commands.json.in",
},
- toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
+ toolchains = use_cpp_toolchain(),
implementation = _compile_commands_impl,
)
diff --git a/kythe/cxx/verifier/BUILD b/kythe/cxx/verifier/BUILD
index 87706f6db..6c6661730 100644
--- a/kythe/cxx/verifier/BUILD
+++ b/kythe/cxx/verifier/BUILD
@@ -220,6 +220,7 @@ cc_library(
srcs = ["pretty_printer.cc"],
hdrs = ["pretty_printer.h"],
deps = [
+ "@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
],
)
diff --git a/kythe/cxx/verifier/assertions.cc b/kythe/cxx/verifier/assertions.cc
index f2edee190..478b97a2e 100644
--- a/kythe/cxx/verifier/assertions.cc
+++ b/kythe/cxx/verifier/assertions.cc
@@ -18,6 +18,7 @@
#include <sstream>
+#include "absl/strings/str_cat.h"
#include "kythe/cxx/common/file_utils.h"
#include "verifier.h"
@@ -448,10 +449,9 @@ bool AssertionParser::ResolveLocations(const yy::location& end_of_line,
break;
case UnresolvedLocation::Kind::kAnchor:
if (default_inspect_) {
- inspections_.emplace_back(token + ":" +
- std::to_string(location.begin.line) +
- "." + std::to_string(col),
- evar, Inspection::Kind::IMPLICIT);
+ inspections_.emplace_back(
+ absl::StrCat("@", token, ":", location.begin.line, ".", col),
+ evar, Inspection::Kind::IMPLICIT);
}
AppendGoal(group_id, verifier_.MakePredicate(
location, verifier_.eq_id(),
diff --git a/kythe/cxx/verifier/pretty_printer.cc b/kythe/cxx/verifier/pretty_printer.cc
index 7e269a3f1..9def95527 100644
--- a/kythe/cxx/verifier/pretty_printer.cc
+++ b/kythe/cxx/verifier/pretty_printer.cc
@@ -19,14 +19,14 @@
#include <bitset>
#include "absl/strings/str_format.h"
+#include "absl/strings/string_view.h"
namespace kythe {
namespace verifier {
PrettyPrinter::~PrettyPrinter() {}
-void StringPrettyPrinter::Print(const std::string& string) { data_ << string; }
-
+void StringPrettyPrinter::Print(absl::string_view string) { data_ << string; }
void StringPrettyPrinter::Print(const char* string) { data_ << string; }
void StringPrettyPrinter::Print(const void* ptr) {
@@ -37,7 +37,7 @@ void StringPrettyPrinter::Print(const void* ptr) {
}
}
-void FileHandlePrettyPrinter::Print(const std::string& string) {
+void FileHandlePrettyPrinter::Print(absl::string_view string) {
absl::FPrintF(file_, "%s", string);
}
@@ -49,50 +49,46 @@ void FileHandlePrettyPrinter::Print(const void* ptr) {
absl::FPrintF(file_, "0x%016llx", reinterpret_cast<unsigned long long>(ptr));
}
-void QuoteEscapingPrettyPrinter::Print(const std::string& string) {
- Print(string.c_str());
-}
-
-void QuoteEscapingPrettyPrinter::Print(const char* string) {
- char buf[2];
- buf[1] = 0;
- while ((buf[0] = *string++)) {
- if (buf[0] == '\"') {
+void QuoteEscapingPrettyPrinter::Print(absl::string_view string) {
+ for (char ch : string) {
+ if (ch == '\"') {
wrapped_.Print("\\\"");
- } else if (buf[0] == '\n') {
+ } else if (ch == '\n') {
wrapped_.Print("\\n");
- } else if (buf[0] == '\'') {
+ } else if (ch == '\'') {
wrapped_.Print("\\\'");
} else {
- wrapped_.Print(buf);
+ wrapped_.Print({&ch, 1});
}
}
}
-void QuoteEscapingPrettyPrinter::Print(const void* ptr) { wrapped_.Print(ptr); }
-
-void HtmlEscapingPrettyPrinter::Print(const std::string& string) {
- Print(string.c_str());
+void QuoteEscapingPrettyPrinter::Print(const char* string) {
+ Print(absl::string_view(string));
}
-void HtmlEscapingPrettyPrinter::Print(const char* string) {
- char buf[2];
- buf[1] = 0;
- while ((buf[0] = *string++)) {
- if (buf[0] == '\"') {
+void QuoteEscapingPrettyPrinter::Print(const void* ptr) { wrapped_.Print(ptr); }
+
+void HtmlEscapingPrettyPrinter::Print(absl::string_view string) {
+ for (char ch : string) {
+ if (ch == '\"') {
wrapped_.Print("&quot;");
- } else if (buf[0] == '&') {
+ } else if (ch == '&') {
wrapped_.Print("&amp;");
- } else if (buf[0] == '<') {
+ } else if (ch == '<') {
wrapped_.Print("&lt;");
- } else if (buf[0] == '>') {
+ } else if (ch == '>') {
wrapped_.Print("&gt;");
} else {
- wrapped_.Print(buf);
+ wrapped_.Print({&ch, 1});
}
}
}
+void HtmlEscapingPrettyPrinter::Print(const char* string) {
+ Print(absl::string_view(string));
+}
+
void HtmlEscapingPrettyPrinter::Print(const void* ptr) { wrapped_.Print(ptr); }
} // namespace verifier
diff --git a/kythe/cxx/verifier/pretty_printer.h b/kythe/cxx/verifier/pretty_printer.h
index 13564cf2d..c673fcdf0 100644
--- a/kythe/cxx/verifier/pretty_printer.h
+++ b/kythe/cxx/verifier/pretty_printer.h
@@ -18,7 +18,8 @@
#define KYTHE_CXX_VERIFIER_PRETTY_PRINTER_H_
#include <sstream>
-#include <string>
+
+#include "absl/strings/string_view.h"
namespace kythe {
namespace verifier {
@@ -27,7 +28,7 @@ namespace verifier {
class PrettyPrinter {
public:
/// \brief Prints `string`.
- virtual void Print(const std::string& string) = 0;
+ virtual void Print(absl::string_view string) = 0;
/// \brief Prints `string`.
virtual void Print(const char* string) = 0;
@@ -41,9 +42,9 @@ class PrettyPrinter {
/// \brief A `PrettyPrinter` using a `string` as its backing store.
class StringPrettyPrinter : public PrettyPrinter {
public:
- /// \copydoc PrettyPrinter::Print(const std::string&)
- void Print(const std::string& string) override;
- /// \copydoc PrettyPrinter::Print(const char *)
+ /// \copydoc PrettyPrinter::Print(absl::string_view)
+ void Print(absl::string_view string) override;
+ /// \copydoc PrettyPrinter::Print(const char*)
void Print(const char* string) override;
/// \copydoc PrettyPrinter::Print(const void *)
void Print(const void* ptr) override;
@@ -60,9 +61,9 @@ class FileHandlePrettyPrinter : public PrettyPrinter {
public:
/// \param file The file handle to print to.
explicit FileHandlePrettyPrinter(FILE* file) : file_(file) {}
- /// \copydoc PrettyPrinter::Print(const std::string&)
- void Print(const std::string& string) override;
- /// \copydoc PrettyPrinter::Print(const char *)
+ /// \copydoc PrettyPrinter::Print(absl::string_view)
+ void Print(absl::string_view string) override;
+ /// \copydoc PrettyPrinter::Print(const char*)
void Print(const char* string) override;
/// \copydoc PrettyPrinter::Print(const void *)
void Print(const void* ptr) override;
@@ -79,9 +80,9 @@ class QuoteEscapingPrettyPrinter : public PrettyPrinter {
/// sent.
explicit QuoteEscapingPrettyPrinter(PrettyPrinter& wrapped)
: wrapped_(wrapped) {}
- /// \copydoc PrettyPrinter::Print(const std::string&)
- void Print(const std::string& string) override;
- /// \copydoc PrettyPrinter::Print(const char *)
+ /// \copydoc PrettyPrinter::Print(absl::string_view)
+ void Print(absl::string_view string) override;
+ /// \copydoc PrettyPrinter::Print(const char*)
void Print(const char* string) override;
/// \copydoc PrettyPrinter::Print(const void *)
void Print(const void* ptr) override;
@@ -98,9 +99,9 @@ class HtmlEscapingPrettyPrinter : public PrettyPrinter {
/// sent.
explicit HtmlEscapingPrettyPrinter(PrettyPrinter& wrapped)
: wrapped_(wrapped) {}
- /// \copydoc PrettyPrinter::Print(const std::string&)
- void Print(const std::string& string) override;
- /// \copydoc PrettyPrinter::Print(const char *)
+ /// \copydoc PrettyPrinter::Print(absl::string_view)
+ void Print(absl::string_view string) override;
+ /// \copydoc PrettyPrinter::Print(const char*)
void Print(const char* string) override;
/// \copydoc PrettyPrinter::Print(const void *)
void Print(const void* ptr) override;
diff --git a/kythe/cxx/verifier/verifier.cc b/kythe/cxx/verifier/verifier.cc
index 8f253aca3..a8cac9b2c 100644
--- a/kythe/cxx/verifier/verifier.cc
+++ b/kythe/cxx/verifier/verifier.cc
@@ -22,6 +22,7 @@
#include <unistd.h>
#include "absl/memory/memory.h"
+#include "absl/strings/strip.h"
#include "assertions.h"
#include "glog/logging.h"
#include "google/protobuf/text_format.h"
@@ -583,6 +584,44 @@ class Solver {
size_t highest_group_reached_ = 0;
size_t highest_goal_reached_ = 0;
};
+
+enum class NodeKind { kFile, kAnchor, kOther };
+
+struct NodeFacts {
+ NodeKind kind = NodeKind::kOther;
+ absl::Span<AstNode* const> facts;
+};
+
+NodeFacts ReadNodeFacts(absl::Span<AstNode* const> entries, Verifier& ctx) {
+ NodeFacts result = {
+ .kind = NodeKind::kOther,
+ .facts = entries,
+ };
+
+ if (entries.empty()) {
+ return result;
+ }
+
+ Tuple* head = entries.front()->AsApp()->rhs()->AsTuple();
+ for (size_t i = 0; i < entries.size(); ++i) {
+ Tuple* current = entries[i]->AsApp()->rhs()->AsTuple();
+ if (!EncodedVNameOrIdentEqualTo(current->element(0), head->element(0)) ||
+ current->element(1) != ctx.empty_string_id()) {
+ // Moved past the fact block or moved to a different source node;
+ // we're done.
+ result.facts = entries.subspan(0, i);
+ break;
+ }
+ if (EncodedIdentEqualTo(current->element(3), ctx.kind_id())) {
+ if (EncodedIdentEqualTo(current->element(4), ctx.anchor_id())) {
+ result.kind = NodeKind::kAnchor;
+ } else if (EncodedIdentEqualTo(current->element(4), ctx.file_id())) {
+ result.kind = NodeKind::kFile;
+ }
+ }
+ }
+ return result;
+}
} // namespace
Verifier::Verifier(bool trace_lex, bool trace_parse)
@@ -617,6 +656,10 @@ Verifier::Verifier(bool trace_lex, bool trace_parse)
IdentifierFor(builtin_location_, "PARAMETER_LOOKUP_BY_PARAM");
marked_source_lookup_by_param_id_ =
IdentifierFor(builtin_location_, "LOOKUP_BY_PARAM");
+ marked_source_parameter_lookup_by_tparam_id_ =
+ IdentifierFor(builtin_location_, "PARAMETER_LOOKUP_BY_TPARAM");
+ marked_source_lookup_by_tparam_id_ =
+ IdentifierFor(builtin_location_, "LOOKUP_BY_TPARAM");
marked_source_parameter_lookup_by_param_with_defaults_id_ = IdentifierFor(
builtin_location_, "PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS");
marked_source_lookup_by_typed_id_ =
@@ -1357,6 +1400,13 @@ AstNode* Verifier::ConvertMarkedSource(
case proto::common::MarkedSource::LOOKUP_BY_PARAM:
emit_fact(marked_source_kind_id_, marked_source_lookup_by_param_id_);
break;
+ case proto::common::MarkedSource::PARAMETER_LOOKUP_BY_TPARAM:
+ emit_fact(marked_source_kind_id_,
+ marked_source_parameter_lookup_by_tparam_id_);
+ break;
+ case proto::common::MarkedSource::LOOKUP_BY_TPARAM:
+ emit_fact(marked_source_kind_id_, marked_source_lookup_by_tparam_id_);
+ break;
case proto::common::MarkedSource::PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS:
emit_fact(marked_source_kind_id_,
marked_source_parameter_lookup_by_param_with_defaults_id_);
@@ -1503,22 +1553,18 @@ void Verifier::DumpAsDot() {
return;
}
std::map<std::string, std::string> vname_labels;
- for (const auto& label_vname : saved_assignments_) {
- if (!label_vname.second) {
+ for (const auto& [label, vname] : saved_assignments_) {
+ if (!vname) {
continue;
}
- if (App* a = label_vname.second->AsApp()) {
- if (Tuple* t = a->rhs()->AsTuple()) {
- StringPrettyPrinter printer;
- QuoteEscapingPrettyPrinter quote_printer(printer);
- label_vname.second->Dump(symbol_table_, &printer);
- auto old_label = vname_labels.find(printer.str());
- if (old_label == vname_labels.end()) {
- vname_labels[printer.str()] = label_vname.first;
- } else {
- old_label->second += ", " + label_vname.first;
- }
- }
+ StringPrettyPrinter printer;
+ QuoteEscapingPrettyPrinter quote_printer(printer);
+ vname->Dump(symbol_table_, &printer);
+ auto old_label = vname_labels.find(printer.str());
+ if (old_label == vname_labels.end()) {
+ vname_labels[printer.str()] = label;
+ } else {
+ old_label->second += ", " + label;
}
}
auto GetLabel = [&](AstNode* node) {
@@ -1535,66 +1581,97 @@ void Verifier::DumpAsDot() {
return std::string();
}
};
+ auto ElideNode = [&](AstNode* node) {
+ if (show_unlabeled_) {
+ return false;
+ }
+ return GetLabel(node).empty();
+ };
+
std::sort(facts_.begin(), facts_.end(), GraphvizSortOrder);
FileHandlePrettyPrinter printer(stdout);
QuoteEscapingPrettyPrinter quote_printer(printer);
HtmlEscapingPrettyPrinter html_printer(printer);
FileHandlePrettyPrinter dprinter(stderr);
+
+ auto PrintQuotedNodeId = [&](AstNode* node) {
+ printer.Print("\"");
+ if (std::string label = GetLabel(node);
+ show_labeled_vnames_ || label.empty()) {
+ node->Dump(symbol_table_, &quote_printer);
+ } else {
+ quote_printer.Print(label);
+ }
+ printer.Print("\"");
+ };
+
+ auto FactName = [this](AstNode* node) {
+ StringPrettyPrinter printer;
+ node->Dump(symbol_table_, &printer);
+ if (show_fact_prefix_) {
+ return printer.str();
+ }
+ return std::string(absl::StripPrefix(printer.str(), "/kythe/"));
+ };
+
+ auto EdgeName = [this](AstNode* node) {
+ StringPrettyPrinter printer;
+ node->Dump(symbol_table_, &printer);
+ if (show_fact_prefix_) {
+ return printer.str();
+ }
+ return std::string(absl::StripPrefix(printer.str(), "/kythe/edge/"));
+ };
+
printer.Print("digraph G {\n");
for (size_t i = 0; i < facts_.size(); ++i) {
AstNode* fact = facts_[i];
Tuple* t = fact->AsApp()->rhs()->AsTuple();
- printer.Print("\"");
- t->element(0)->Dump(symbol_table_, &quote_printer);
- printer.Print("\"");
if (t->element(1) == empty_string_id()) {
- std::string label = GetLabel(t->element(0));
// Node. We sorted these above st all the facts should come subsequent.
// Figure out if the node is an anchor.
- bool is_anchor_node = false;
- bool is_file_node = false;
- size_t first_fact = i, last_fact = facts_.size();
- for (; i < facts_.size(); ++i) {
- Tuple* nt = facts_[i]->AsApp()->rhs()->AsTuple();
- if (!EncodedVNameOrIdentEqualTo(nt->element(0), t->element(0)) ||
- nt->element(1) != empty_string_id()) {
- // Moved past the fact block or moved to a different source node.
- last_fact = i;
- break;
- }
- if (EncodedIdentEqualTo(nt->element(3), kind_id_)) {
- if (EncodedIdentEqualTo(nt->element(4), anchor_id_)) {
- // Keep on scanning to find the end of the fact block.
- is_anchor_node = true;
- } else if (EncodedIdentEqualTo(nt->element(4), file_id_)) {
- is_file_node = true;
- }
- }
+ NodeFacts info =
+ ReadNodeFacts(absl::MakeConstSpan(facts_).subspan(i), *this);
+ if (!info.facts.empty()) {
+ // Skip over facts which correspond to this node.
+ i += info.facts.size() - 1;
}
- if (is_anchor_node && !show_anchors_) {
- printer.Print(" [ shape=circle, label=\"@");
- printer.Print(label);
- if (!label.empty()) {
+ if (ElideNode(t->element(0))) {
+ continue;
+ }
+ PrintQuotedNodeId(t->element(0));
+ std::string label = GetLabel(t->element(0));
+ if (info.kind == NodeKind::kAnchor && !show_anchors_) {
+ printer.Print(" [ shape=circle, label=\"");
+ if (label.empty()) {
+ printer.Print("@");
+ } else {
+ printer.Print(label);
printer.Print("\", color=\"blue");
}
printer.Print("\" ];\n");
} else {
printer.Print(" [ label=<<TABLE>");
printer.Print("<TR><TD COLSPAN=\"2\">");
- Tuple* nt = facts_[first_fact]->AsApp()->rhs()->AsTuple();
- // Since all of our facts are well-formed, we know this is a vname.
- nt->element(0)->AsApp()->rhs()->Dump(symbol_table_, &html_printer);
+ Tuple* nt = info.facts.front()->AsApp()->rhs()->AsTuple();
+ if (label.empty() || show_labeled_vnames_) {
+ // Since all of our facts are well-formed, we know this is a vname.
+ nt->element(0)->AsApp()->rhs()->Dump(symbol_table_, &html_printer);
+ }
if (!label.empty()) {
- html_printer.Print(" = ");
+ if (show_labeled_vnames_) {
+ html_printer.Print(" = ");
+ }
html_printer.Print(label);
}
printer.Print("</TD></TR>");
- for (i = first_fact; i < last_fact; ++i) {
- Tuple* nt = facts_[i]->AsApp()->rhs()->AsTuple();
+ for (AstNode* fact : info.facts) {
+ Tuple* nt = fact->AsApp()->rhs()->AsTuple();
printer.Print("<TR><TD>");
- nt->element(3)->Dump(symbol_table_, &html_printer);
+ html_printer.Print(FactName(nt->element(3)));
printer.Print("</TD><TD>");
- if (is_file_node && EncodedIdentEqualTo(nt->element(3), text_id_)) {
+ if (info.kind == NodeKind::kFile &&
+ EncodedIdentEqualTo(nt->element(3), text_id_)) {
// Don't clutter the graph with file content.
printer.Print("...");
} else if (EncodedIdentEqualTo(nt->element(3), code_id_)) {
@@ -1611,13 +1688,16 @@ void Verifier::DumpAsDot() {
}
printer.Print("];\n");
}
- --i; // Don't skip the fact following the block.
} else {
// Edge.
- printer.Print(" -> \"");
- t->element(2)->Dump(symbol_table_, &quote_printer);
- printer.Print("\" [ label=\"");
- t->element(1)->Dump(symbol_table_, &quote_printer);
+ if (ElideNode(t->element(0)) || ElideNode(t->element(2))) {
+ continue;
+ }
+ PrintQuotedNodeId(t->element(0));
+ printer.Print(" -> ");
+ PrintQuotedNodeId(t->element(2));
+ printer.Print(" [ label=\"");
+ quote_printer.Print(EdgeName(t->element(1)));
if (t->element(4) != empty_string_id()) {
printer.Print(".");
t->element(4)->Dump(symbol_table_, &quote_printer);
diff --git a/kythe/cxx/verifier/verifier.h b/kythe/cxx/verifier/verifier.h
index 4db76b4d1..226ed43a1 100644
--- a/kythe/cxx/verifier/verifier.h
+++ b/kythe/cxx/verifier/verifier.h
@@ -155,6 +155,12 @@ class Verifier {
/// \brief The fact kind used to assign a node its kind (eg /kythe/node/kind).
AstNode* kind_id() { return kind_id_; }
+ /// \brief The fact kind used for an anchor.
+ AstNode* anchor_id() { return anchor_id_; }
+
+ /// \brief The fact kind used for a file.
+ AstNode* file_id() { return file_id_; }
+
/// \brief Object for parsing and storing assertions.
AssertionParser* parser() { return &parser_; }
@@ -182,6 +188,15 @@ class Verifier {
/// \brief Show anchor locations in graph dumps (instead of @).
void ShowAnchors() { show_anchors_ = true; }
+ /// \brief Show VNames for nodes which also have labels in graph dumps.
+ void ShowLabeledVnames() { show_labeled_vnames_ = true; }
+
+ /// \brief Show the /kythe and /kythe/edge prefixes in graph dumps.
+ void ShowFactPrefix() { show_fact_prefix_ = true; }
+
+ /// \brief Elide unlabeled nodes from graph dumps.
+ void ElideUnlabeled() { show_unlabeled_ = false; }
+
/// \brief Check for singleton EVars.
/// \return true if there were singletons.
bool CheckForSingletonEVars() { return parser_.CheckForSingletonEVars(); }
@@ -336,6 +351,15 @@ class Verifier {
/// If true, show anchor locations in graph dumps (instead of @).
bool show_anchors_ = false;
+ /// If true, show unlabeled nodes in graph dumps.
+ bool show_unlabeled_ = true;
+
+ /// If true, show VNames for labeled nodes in graph dumps.
+ bool show_labeled_vnames_ = false;
+
+ /// If true, include the /kythe and /kythe/edge prefix on facts and edges.
+ bool show_fact_prefix_ = false;
+
/// Identifier for MarkedSource child edges.
AstNode* marked_source_child_id_;
@@ -366,6 +390,12 @@ class Verifier {
/// Identifier for MarkedSource LOOKUP_BY_PARAM kinds.
AstNode* marked_source_lookup_by_param_id_;
+ /// Identifier for MarkedSource PARAMETER_LOOKUP_BY_TPARAM kinds.
+ AstNode* marked_source_parameter_lookup_by_tparam_id_;
+
+ /// Identifier for MarkedSource LOOKUP_BY_TPARAM kinds.
+ AstNode* marked_source_lookup_by_tparam_id_;
+
/// Identifier for MarkedSource LOOKUP_BY_PARAM_WITH_DEFAULTS kinds.
AstNode* marked_source_parameter_lookup_by_param_with_defaults_id_;
diff --git a/kythe/cxx/verifier/verifier_main.cc b/kythe/cxx/verifier/verifier_main.cc
index 1ce70436f..af48e6ea8 100644
--- a/kythe/cxx/verifier/verifier_main.cc
+++ b/kythe/cxx/verifier/verifier_main.cc
@@ -41,6 +41,8 @@ ABSL_FLAG(bool, graphviz, false,
"Only dump facts as a GraphViz-compatible graph");
ABSL_FLAG(bool, annotated_graphviz, false,
"Solve and annotate a GraphViz graph.");
+ABSL_FLAG(bool, minimal_graphviz, false,
+ "Solve and dump a GraphViz graph eliding unused nodes.");
ABSL_FLAG(std::string, goal_prefix, "//-", "Denote goals with this string.");
ABSL_FLAG(bool, use_file_nodes, false,
"Look for assertions in UTF8 file nodes.");
@@ -51,6 +53,10 @@ ABSL_FLAG(std::string, goal_regex, "",
ABSL_FLAG(bool, convert_marked_source, false,
"Convert MarkedSource-valued facts to subgraphs.");
ABSL_FLAG(bool, show_anchors, false, "Show anchor locations instead of @s");
+ABSL_FLAG(bool, show_vnames, true,
+ "Show VNames for nodes which also have labels.");
+ABSL_FLAG(bool, show_fact_prefix, true,
+ "Include the /kythe or /kythe/edge prefix on facts and edges.");
ABSL_FLAG(bool, file_vnames, true,
"Find file vnames by matching file content.");
ABSL_FLAG(bool, use_fast_solver, false,
@@ -91,6 +97,11 @@ Example:
v.SaveEVarAssignments();
}
+ if (absl::GetFlag(FLAGS_minimal_graphviz)) {
+ v.SaveEVarAssignments();
+ v.ElideUnlabeled();
+ }
+
if (absl::GetFlag(FLAGS_use_file_nodes)) {
v.UseFileNodes();
}
@@ -103,10 +114,18 @@ Example:
v.ShowAnchors();
}
+ if (absl::GetFlag(FLAGS_show_vnames)) {
+ v.ShowLabeledVnames();
+ }
+
if (!absl::GetFlag(FLAGS_file_vnames)) {
v.IgnoreFileVnames();
}
+ if (absl::GetFlag(FLAGS_show_fact_prefix)) {
+ v.ShowFactPrefix();
+ }
+
v.UseFastSolver(absl::GetFlag(FLAGS_use_fast_solver));
std::string dbname = "database";
@@ -176,7 +195,8 @@ Example:
}
if (absl::GetFlag(FLAGS_graphviz) ||
- absl::GetFlag(FLAGS_annotated_graphviz)) {
+ absl::GetFlag(FLAGS_annotated_graphviz) ||
+ absl::GetFlag(FLAGS_minimal_graphviz)) {
v.DumpAsDot();
}
diff --git a/kythe/docs/schema/schema.txt b/kythe/docs/schema/schema.txt
index c6fe12c4c..a19e0e300 100644
--- a/kythe/docs/schema/schema.txt
+++ b/kythe/docs/schema/schema.txt
@@ -176,23 +176,23 @@ bounded/upper or bounded/lower
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Brief description::
- <<absvar>> A is *bounded/upper* by B when A is constrained to be a subtype
- of B. <<absvar>> A is *bounded/lower* by B when A is constrained to be a
- supertype of B.
+ <<absvar>>/<<tvar>> A is *bounded/upper* by B when A is constrained to be a
+ subtype of B. <<absvar>>/<<tvar>> A is *bounded/lower* by B when A is
+ constrained to be a supertype of B.
See also::
- <<absvar>>
+ <<absvar>>, <<tvar>>
Commonly arises from::
Type parameters
Notes::
- * Kythe leaves the interpretation of unbounded <<absvar>> nodes to each
- language. For example, an <<absvar>> with no *bounded* edges in Java may be
- assigned any subtype of Object, but no primitive type.
- * It is possible for an <<absvar>> to have multiple bounds. For example, this
- occurs in Java when a type parameter must implement several interfaces.
- In cases where the order of the bounds matters (e.g., in Java, where the
- order affects type erasure), the bound edge kind may be qualified by an ordinal,
- so that A is *bounded/upper.N* by B if B is the Nth upper bound of A.
- Code interpreting *bounded* edges should be able to handle both
+ * Kythe leaves the interpretation of unbounded <<absvar>>/<<tvar>> nodes to
+ each language. For example, an <<absvar>>/<<tvar>> with no *bounded* edges
+ in Java may be assigned any subtype of Object, but no primitive type.
+ * It is possible for an <<absvar>>/<<tvar>> to have multiple bounds. For
+ example, this occurs in Java when a type parameter must implement several
+ interfaces. In cases where the order of the bounds matters (e.g., in Java,
+ where the order affects type erasure), the bound edge kind may be qualified
+ by an ordinal, so that A is *bounded/upper.N* by B if B is the Nth upper
+ bound of A. Code interpreting *bounded* edges should be able to handle both
ordered and unordered edges.
[kythe,Java,"Generic type parameters can be bound."]
@@ -304,6 +304,37 @@ template <typename T> struct C {
template struct C<int>;
--------------------------------------------------------------------------------
+[[completedby]]
+completedby
+~~~~~~~~~~~
+
+Brief description::
+ Declaration A *completedby* definition B if B fully specifies A.
+ There may exist other definitions that may also fully specify A.
+Commonly arises from::
+ definitions of forward declarations
+Points from::
+ semantic nodes with `complete` facts set to `incomplete` or `complete`
+Points toward::
+ semantic nodes with `complete` facts set to `complete`
+See also::
+ <<record>>, <<sum>>
+
+[kythe,C++,"Declarations are completed by definitions."]
+--------------------------------------------------------------------------------
+#include "test.h"
+//- Decl1 completedby Defn
+//- Decl2 completedby Defn
+//- @C defines/binding Defn
+class C { };
+
+#example test.h
+//- @C defines/binding Decl1
+class C;
+//- @C defines/binding Decl2
+class C;
+--------------------------------------------------------------------------------
+
[[completes]]
completes
~~~~~~~~~
@@ -320,6 +351,9 @@ Points toward::
See also::
<<record>>, <<sum>>, <<completesuniquely,[completes/uniquely]>>
+WARNING: *completes* edges are deprecated. Their structure should be replaced
+with the one documented for <<completedby>>.
+
[kythe,C++,"Definitions complete forward declarations in headers."]
--------------------------------------------------------------------------------
#include "test.h"
@@ -351,6 +385,9 @@ Points toward::
See also::
<<completes>>, <<record>>, <<sum>>
+WARNING: *completes/uniquely* edges are deprecated. Their structure should be
+replaced with the one documented for <<completedby>>.
+
[kythe,C++,"Definitions uniquely complete same-file forward declarations."]
--------------------------------------------------------------------------------
//- @C defines/binding Decl1
@@ -594,7 +631,8 @@ extends
~~~~~~~
Brief description::
- A *extends* B if A is a direct nominal subtype of B.
+ A *extends* B if A explicitly derives from B. It neither implies nor excludes
+ any type relationship between A and B.
Commonly arises from::
inheritance
Points from::
@@ -621,15 +659,35 @@ public class E {
}
--------------------------------------------------------------------------------
+[kythe,Java,"Classes and interfaces extend interfaces."]
+--------------------------------------------------------------------------------
+package pkg;
+//- @I defines/binding IntfI
+interface I { }
+
+//- @J defines/binding IntfJ
+//- IntfJ extends IntfI
+interface J extends I { }
+
+//- @C defines/binding ClassC
+//- ClassC extends IntfJ
+//- !{ClassC extends IntfI}
+class C implements J { }
+--------------------------------------------------------------------------------
+
[kythe,C++,"Classes extend classes."]
--------------------------------------------------------------------------------
//- @A defines/binding ClassA
class A { };
+
//- @B defines/binding ClassB
//- ClassB extends/public ClassA
class B : public A { };
---------------------------------------------------------------------------------
+//- @C defines/binding ClassC
+//- ClassC extends/private ClassA
+class C : private A { };
+--------------------------------------------------------------------------------
[[generates]]
generates
@@ -1534,6 +1592,45 @@ Points toward::
Ordinals are used::
never
+
+[[tparam]]
+tparam
+~~~~~~
+
+Brief description::
+ A *tparam.N* B if B is the Nth type/template parameter of A.
+Commonly arises from::
+ templates, generic types
+Points from::
+ semantic nodes
+Points toward::
+ <<tvar>>
+Ordinals are used::
+ always
+
+[kythe,Go,"Generics have ordered tparam edges."]
+--------------------------------------------------------------------------------
+package tparam
+
+//- Func.node/kind function
+//- TVar.node/kind tvar
+//- UVar.node/kind tvar
+
+//- Func tparam.0 TVar
+//- Func tparam.1 UVar
+
+//- @Map defines/binding Func
+//- @#0T defines/binding TVar
+//- @#0U defines/binding UVar
+func Map[T any, U any](l []T, f func(T) U) []U {
+ res := make([]U, len(l))
+ for i, t := range l {
+ res[i] = f(t)
+ }
+ return res
+}
+--------------------------------------------------------------------------------
+
[[typed]]
typed
~~~~~
@@ -1695,6 +1792,9 @@ Brief description::
See also::
<<absvar>>, <<specializes>>, <<tapp>>
+WARNING: *abs* nodes are deprecated. Their structure should be replaced with
+the one documented for <<tparam>>.
+
It is not necessarily the case that the child of the abs node be a type;
for example, in $$C++$$, it may be a variable or a function.
@@ -1735,7 +1835,10 @@ absvar
Brief description::
An *absvar* is bound by an <<abs>> and valid in its children.
See also::
- <<abs>>, <<specializes>>
+ <<abs>>, <<specializes>>, <<tvar>>
+
+WARNING: *absvar* nodes are deprecated. They should be replaced with <<tvar>>
+nodes.
[kythe,C++,"Type variables are absvars."]
--------------------------------------------------------------------------------
@@ -1985,6 +2088,19 @@ int x;
//- SourceFile=vname("",Corpus,Root,Path,"").node/kind file
--------------------------------------------------------------------------------
+[[flag]]
+flag
+~~~~
+
+Brief description::
+ A *flag* is a named parameter usually passed to a program from the command
+ line.
+Notes::
+ Indexers can support various common flag libraries. Flag nodes from different
+ libraries are given different kind labels. For example, the Abseil/Google
+ flag libraries will produce *flag/google* nodes. The name and default value
+ of a flag can be derived from its <<code>> fact.
+
[[interface]]
interface
~~~~~~~~~
@@ -2417,6 +2533,33 @@ int g(double x) { f(1, x); }
--------------------------------------------------------------------------------
+[[tvar]]
+tvar
+~~~~
+
+Brief description::
+ A *tvar* is a type/template parameter and bound to a semantic node with a
+ <<tparam>> edge.
+See also::
+ <<tapp>>, <<tparam>>, <<specializes>>
+
+[kythe,Go,"Type parameters are tvars."]
+--------------------------------------------------------------------------------
+package tvar
+
+//- Container.node/kind record
+//- TVar.node/kind tvar
+
+//- Container tparam.0 TVar
+
+//- @Container defines/binding Container
+//- @T defines/binding TVar
+type Container[T any] struct {
+ //- @T ref TVar
+ Element T
+}
+--------------------------------------------------------------------------------
+
[[variable]]
variable
~~~~~~~~
diff --git a/kythe/extractors/BUILD b/kythe/extractors/BUILD
index f924f2f36..e1c3ed0f8 100644
--- a/kythe/extractors/BUILD
+++ b/kythe/extractors/BUILD
@@ -51,7 +51,7 @@ proto_lang_toolchain(
"@com_google_protobuf//:type_proto",
"@com_google_protobuf//:wrappers_proto",
],
- command_line = "--$(PLUGIN_OUT)=:$(OUT)",
+ command_line = "--PLUGIN_C++_out=:$(OUT)",
plugin = "//kythe/cxx/tools:proto_metadata_plugin",
runtime = "@com_google_protobuf//:protobuf",
)
diff --git a/kythe/extractors/bazel/Dockerfile b/kythe/extractors/bazel/Dockerfile
index 335db5817..49f5e9c9d 100644
--- a/kythe/extractors/bazel/Dockerfile
+++ b/kythe/extractors/bazel/Dockerfile
@@ -15,9 +15,9 @@
FROM debian:sid
# Install C++ compilers and other deps
-# note that openjdk-8-jdk is a dependency of the java extractor
+# note that openjdk-11-jdk-headless is a dependency of the java extractor
RUN apt-get update && \
- apt-get install -y git clang-11 build-essential zip python openjdk-8-jdk && \
+ apt-get install -y git clang-11 build-essential zip python3 openjdk-11-jdk-headless && \
apt-get clean
# Create clang symlinks
diff --git a/kythe/extractors/openjdk11/extract/BUILD b/kythe/extractors/openjdk11/extract/BUILD
index 83e235f80..7c905bc7b 100644
--- a/kythe/extractors/openjdk11/extract/BUILD
+++ b/kythe/extractors/openjdk11/extract/BUILD
@@ -6,7 +6,7 @@ go_binary(
data = [
"//kythe/extractors/openjdk11:vnames.json",
"//kythe/extractors/openjdk11/java_wrapper",
- "//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac9_extractor_deploy.jar",
+ "//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac_extractor_deploy.jar",
],
visibility = ["//visibility:public"],
deps = [
diff --git a/kythe/extractors/openjdk11/extract/extract.go b/kythe/extractors/openjdk11/extract/extract.go
index 8ffaaa412..5550fbf1a 100644
--- a/kythe/extractors/openjdk11/extract/extract.go
+++ b/kythe/extractors/openjdk11/extract/extract.go
@@ -50,7 +50,7 @@ const (
runfilesPrefix = "${RUNFILES}"
runfilesWrapperPath = "kythe/extractors/openjdk11/java_wrapper/java_wrapper"
runfilesVNamesPath = "kythe/extractors/openjdk11/vnames.json"
- runfilesExtractorPath = "kythe/java/com/google/devtools/kythe/extractors/java/standalone/javac9_extractor_deploy.jar"
+ runfilesExtractorPath = "kythe/java/com/google/devtools/kythe/extractors/java/standalone/javac_extractor_deploy.jar"
)
var (
diff --git a/kythe/go/extractors/bazel/extractor.go b/kythe/go/extractors/bazel/extractor.go
index 790c675c3..d40eab1ce 100644
--- a/kythe/go/extractors/bazel/extractor.go
+++ b/kythe/go/extractors/bazel/extractor.go
@@ -52,7 +52,7 @@ import (
// various stages of the extraction process. Schematically, the extractor does
// the following steps:
//
-// CheckAction .. CheckInputs/Env .. Fetch .. Fixup
+// CheckAction .. CheckInputs/Env .. Fetch .. Fixup
//
// The "CheckAction" stage gives the caller an opportunity to preprocess the
// action and decide whether to continue. The caller may modify the ActionInfo
diff --git a/kythe/go/extractors/bazel/extutil/extutil.go b/kythe/go/extractors/bazel/extutil/extutil.go
index 82d853391..c1a5368d4 100644
--- a/kythe/go/extractors/bazel/extutil/extutil.go
+++ b/kythe/go/extractors/bazel/extutil/extutil.go
@@ -30,8 +30,8 @@ import (
// ExtractAndWrite extracts a spawn action through c and writes the results to
// the specified output file. The output format is based on the file extension:
//
-// .kzip -- writes a kzip file
-// otherwise -- reports an error
+// .kzip -- writes a kzip file
+// otherwise -- reports an error
//
// Deprecated: use bazel.ExtractToKzip
func ExtractAndWrite(ctx context.Context, c *bazel.Config, ai *bazel.ActionInfo, outputPath string) error {
diff --git a/kythe/go/extractors/cmd/gotool/Dockerfile b/kythe/go/extractors/cmd/gotool/Dockerfile
index dea5cf13d..4a3c6af2c 100644
--- a/kythe/go/extractors/cmd/gotool/Dockerfile
+++ b/kythe/go/extractors/cmd/gotool/Dockerfile
@@ -12,14 +12,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM gcr.io/cloud-builders/go:debian
+FROM gcr.io/cloud-builders/go:debian-1.17
RUN apt-get update && \
apt-get install -y parallel && \
apt-get clean
# Get a recent go release, remove the current system one so we don't have multiple version problems, and install the new release.
-RUN curl -LO https://golang.org/dl/go1.17.2.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.2.linux-amd64.tar.gz
+RUN curl -LO https://golang.org/dl/go1.18.1.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz
ADD kythe/go/extractors/cmd/gotool/analyze_packages.sh /usr/local/bin/analyze_packages.sh
ADD kythe/go/extractors/cmd/gotool/gotool /usr/local/bin/extract_go
diff --git a/kythe/go/extractors/cmd/gotool/analyze_packages.sh b/kythe/go/extractors/cmd/gotool/analyze_packages.sh
index a11be3f1c..7e66f7b64 100755
--- a/kythe/go/extractors/cmd/gotool/analyze_packages.sh
+++ b/kythe/go/extractors/cmd/gotool/analyze_packages.sh
@@ -19,6 +19,14 @@
: "${TMPDIR:=/tmp}" "${OUTPUT:=/output}" "${KYTHE_KZIP_ENCODING:=JSON}"
+if [[ -z "${GOPATH}" ]]; then
+ echo "GOPATH environment variable is required" >&2
+ exit 1
+fi
+if [[ -z "${KYTHE_CORPUS}" ]]; then
+ echo "KYTHE_CORPUS environment variable is required" >&2
+ exit 1
+fi
FLAGS=()
PACKAGES=()
@@ -32,6 +40,12 @@ while [[ $# -gt 0 ]]; do
shift
done
+if [[ ${#PACKAGES[@]} -ne 1 ]]; then
+ echo "Please specify exactly one go package to extract" >&2
+ exit 1
+fi
+PACKAGE="${PACKAGES[0]}"
+
# golang build tags can optionally be specified with the `KYTHE_GO_BUILD_TAGS`
# env variable.
if [ -n "$KYTHE_GO_BUILD_TAGS" ]; then
@@ -42,16 +56,32 @@ if [ -n "$KYTHE_PRE_BUILD_STEP" ]; then
eval "$KYTHE_PRE_BUILD_STEP"
fi
-echo "Downloading ${PACKAGES[*]}" >&2
-go get -d "${PACKAGES[@]}" || true
+if [ -n "$KYTHE_SKIP_MOD_VENDOR" ]; then
+ if [ "$KYTHE_SKIP_MOD_VENDOR" == "1" ] || \
+ [ "$KYTHE_SKIP_MOD_VENDOR" == "True" ] || \
+ [ "$KYTHE_SKIP_MOD_VENDOR" == "true" ]; then
+ echo "$PACKAGE: Skipping 'go mod vendor' due to KYTHE_SKIP_MOD_VENDOR=$KYTHE_SKIP_MOD_VENDOR" >&2
+ SKIP_MOD_VENDOR=true
+ fi
+fi
+
+if [ -z "$SKIP_MOD_VENDOR" ]; then
+ echo "$PACKAGE: go mod vendor" >&2
+ pushd "$GOPATH/src/$PACKAGE"
+ go mod vendor
+ popd
+fi
-echo "Extracting ${PACKAGES[*]}" >&2
-parallel --will-cite \
+echo "Extracting ${PACKAGE}" >&2
extract_go --continue -v \
--goroot="$(go env GOROOT)" \
- --output="$TMPDIR/out.{#}.kzip" \
+ --output="$TMPDIR/out.kzip" \
+ --use_default_corpus_for_deps \
+ --use_default_corpus_for_stdlib \
+ --corpus="$KYTHE_CORPUS" \
"${FLAGS[@]}" \
- {} ::: "${PACKAGES[@]}"
+ "${PACKAGE}/vendor/..." \
+ "${PACKAGE}/..."
mkdir -p "$OUTPUT"
OUT="$OUTPUT/compilations.kzip"
@@ -61,7 +91,7 @@ fi
# cd into the top-level git directory of our package and query git for the
# commit timestamp.
-pushd "$(go env GOPATH)/src/$(dirname "${PACKAGES[0]}")"
+pushd "$(go env GOPATH)/src/${PACKAGE}"
TIMESTAMP="$(git log --pretty='%ad' -n 1 HEAD)"
popd
@@ -72,5 +102,5 @@ kzip create_metadata \
--commit_timestamp "$TIMESTAMP"
echo "Merging compilations into $OUT" >&2
-kzip merge --encoding "$KYTHE_KZIP_ENCODING" --output "$OUT" "$TMPDIR"/out.*.kzip "$OUTPUT/buildmetadata.kzip"
+kzip merge --encoding "$KYTHE_KZIP_ENCODING" --output "$OUT" "$TMPDIR/out.kzip" "$OUTPUT/buildmetadata.kzip"
fix_permissions.sh "$OUTPUT"
diff --git a/kythe/go/extractors/cmd/gotool/gotool.go b/kythe/go/extractors/cmd/gotool/gotool.go
index ba178a242..39697c4a9 100644
--- a/kythe/go/extractors/cmd/gotool/gotool.go
+++ b/kythe/go/extractors/cmd/gotool/gotool.go
@@ -52,6 +52,8 @@ var (
verbose = flag.Bool("v", false, "Enable verbose logging")
canonicalizePackageCorpus = flag.Bool("canonicalize_package_corpus", false, "Whether to use a package's canonical repository root URL as their corpus")
+ useDefaultCorpusForStdLib = flag.Bool("use_default_corpus_for_stdlib", false, "By default, go stdlib files are given the 'golang.org' corpus. If this flag is enabled, they will instead be assigned the corpus from the --corpus flag.")
+ useDefaultCorpusForDeps = flag.Bool("use_default_corpus_for_deps", false, "By default, imported modules are assigned a corpus based on their import path. If this flag is enabled, they will instead be assigned the corpus from the --corpus flag and a root corresponding the their import path.")
buildTags flagutil.StringList
)
@@ -121,6 +123,8 @@ func main() {
Rules: rules,
CanonicalizePackageCorpus: *canonicalizePackageCorpus,
RootDirectory: os.Getenv("KYTHE_ROOT_DIRECTORY"),
+ UseDefaultCorpusForStdLib: *useDefaultCorpusForStdLib,
+ UseDefaultCorpusForDeps: *useDefaultCorpusForDeps,
},
}
if *extraFiles != "" {
diff --git a/kythe/go/extractors/cmd/gotool/readme.md b/kythe/go/extractors/cmd/gotool/readme.md
new file mode 100644
index 000000000..521f62196
--- /dev/null
+++ b/kythe/go/extractors/cmd/gotool/readme.md
@@ -0,0 +1,20 @@
+# golang-extractor image
+
+## Example usage
+
+```.sh
+mkdir -p /tmp/workspace/gopath/src/golang.org/x
+
+git clone https://go.googlesource.com/tools /tmp/workspace/gopath/src/golang.org/x/tools
+
+docker run \
+ -v /tmp/workspace:/workspace:z \
+ -e KYTHE_CORPUS=golang.org/x/tools \
+ -e GOPATH=/workspace/gopath \
+ -e OUTPUT=/workspace/out \
+ gcr.io/kythe-public/golang-extractor:latest \
+ golang.org/x/tools
+
+# inspect output kzip
+kzip info --input /tmp/workspace/out/compilations.kzip | jq
+```
diff --git a/kythe/go/extractors/config/preprocessor/modifier/pom_xml_modifier.go b/kythe/go/extractors/config/preprocessor/modifier/pom_xml_modifier.go
index c32ddcf4d..df3bb8afa 100644
--- a/kythe/go/extractors/config/preprocessor/modifier/pom_xml_modifier.go
+++ b/kythe/go/extractors/config/preprocessor/modifier/pom_xml_modifier.go
@@ -98,12 +98,14 @@ func hasCompilerPlugin(doc *etree.Document) (bool, error) {
// wellformedCompilerPlugin checks to see if the plugin fits the minimum
// supported versions we've tested:
// <plugin>
-// <artifactId>maven-compiler-plugin</artifactId>
-// <version>3.7.0</version>
-// <configuration>
-// <source>1.8</source>
-// <target>1.8</target>
-// </configuration>
+//
+// <artifactId>maven-compiler-plugin</artifactId>
+// <version>3.7.0</version>
+// <configuration>
+// <source>1.8</source>
+// <target>1.8</target>
+// </configuration>
+//
// </plugin>
// TODO(danielmoy): see if we can relax some of these restrictions.
func wellformedCompilerPlugin(el *etree.Element) error {
diff --git a/kythe/go/extractors/config/runextractor/backup/backup.go b/kythe/go/extractors/config/runextractor/backup/backup.go
index d95485e96..15d6d04e3 100644
--- a/kythe/go/extractors/config/runextractor/backup/backup.go
+++ b/kythe/go/extractors/config/runextractor/backup/backup.go
@@ -19,13 +19,13 @@
//
// Example usage:
//
-// tmp, err := backup.Save(someFile)
-// if err != nil {
-// return fmt.Errorf("backing up %q: %v", somePath, err)
-// }
-// defer tmp.Release()
-// // ... do real work ...
-// tmp.Restore()
+// tmp, err := backup.Save(someFile)
+// if err != nil {
+// return fmt.Errorf("backing up %q: %v", somePath, err)
+// }
+// defer tmp.Release()
+// // ... do real work ...
+// tmp.Restore()
package backup // import "kythe.io/kythe/go/extractors/config/runextractor/backup"
import (
diff --git a/kythe/go/extractors/golang/golang.go b/kythe/go/extractors/golang/golang.go
index d38c96309..50874b58b 100644
--- a/kythe/go/extractors/golang/golang.go
+++ b/kythe/go/extractors/golang/golang.go
@@ -19,19 +19,19 @@
// results are available to the caller.
//
// Usage:
-// var c golang.Extractor
-// if _, err := c.Locate("fmt"); err != nil {
-// log.Fatalf(`Unable to locate package "fmt": %v`, err)
-// }
-// c.Extract()
-// for _, pkg := range c.Packages {
-// if pkg.Err != nil {
-// log.Printf("Error extracting %q: %v", pkg.Path, pkg.Err)
-// } else {
-// writeOutput(pkg)
-// }
-// }
//
+// var c golang.Extractor
+// if _, err := c.Locate("fmt"); err != nil {
+// log.Fatalf(`Unable to locate package "fmt": %v`, err)
+// }
+// c.Extract()
+// for _, pkg := range c.Packages {
+// if pkg.Err != nil {
+// log.Printf("Error extracting %q: %v", pkg.Path, pkg.Err)
+// } else {
+// writeOutput(pkg)
+// }
+// }
package golang // import "kythe.io/kythe/go/extractors/golang"
import (
@@ -424,10 +424,11 @@ func (p *Package) addFiles(cu *apb.CompilationUnit, root, base string, names []s
// kythe/go/extractors/govname and is usually the package's
// repository root (e.g. github.com/golang/protobuf).
vn.Corpus = p.VName.Corpus
- components := strings.SplitN(vn.Path, string(filepath.Separator), 2)
- vn.Path = strings.TrimPrefix(components[1], p.CorpusRoot+"/")
- if components[0] != "src" {
- vn.Root = components[0]
+ if components := strings.SplitN(vn.Path, string(filepath.Separator), 2); len(components) == 2 {
+ vn.Path = strings.TrimPrefix(components[1], p.CorpusRoot+"/")
+ if components[0] != "src" {
+ vn.Root = components[0]
+ }
}
}
cu.RequiredInput = append(cu.RequiredInput, &apb.CompilationUnit_FileInput{
diff --git a/kythe/go/extractors/govname/govname.go b/kythe/go/extractors/govname/govname.go
index 1bf21bf3a..9e31d56f5 100644
--- a/kythe/go/extractors/govname/govname.go
+++ b/kythe/go/extractors/govname/govname.go
@@ -32,9 +32,10 @@ import (
)
const (
- pathTail = `(?:/(?P<path>.+))?$`
- packageSig = "package"
- golangCorpus = "golang.org"
+ pathTail = `(?:/(?P<path>.+))?$`
+ packageSig = "package"
+ // GolangCorpus is the corpus used for the go std library
+ GolangCorpus = "golang.org"
)
// Language is the language string to use for Go VNames.
@@ -59,6 +60,15 @@ type PackageVNameOptions struct {
// applying vname rules (if any). If unset, the module root (if using
// modules) or the gopath directory is used instead.
RootDirectory string
+
+ // UseDefaultCorpusForStdLib tells the extractor to assign the DefaultCorpus
+ // to go stdlib files rather than the default of 'golang.org'.
+ UseDefaultCorpusForStdLib bool
+
+ // UseDefaultCorpusForDeps tells the extractor to set the vname corpus for
+ // imported modules to DefaultCorpus and to use the module's import path as
+ // the vname's root.
+ UseDefaultCorpusForDeps bool
}
// ForPackage returns a VName for a Go package.
@@ -73,33 +83,34 @@ type PackageVNameOptions struct {
// applicable. Note that vname rules are ignored for go stdlib packages.
//
// Examples:
-// ForPackage(<kythe.io/kythe/go/util/schema>, &{CanonicalizePackageCorpus: false}) => {
-// Corpus: "kythe.io",
-// Path: "kythe/go/util/schema",
-// Language: "go",
-// Signature: "package",
-// }
//
-// ForPackage( <kythe.io/kythe/go/util/schema>, &{CanonicalizePackageCorpus: true}) => {
-// Corpus: "github.com/kythe/kythe",
-// Path: "kythe/go/util/schema",
-// Language: "go",
-// Signature: "package",
-// }
+// ForPackage(<kythe.io/kythe/go/util/schema>, &{CanonicalizePackageCorpus: false}) => {
+// Corpus: "kythe.io",
+// Path: "kythe/go/util/schema",
+// Language: "go",
+// Signature: "package",
+// }
//
-// ForPackage(<github.com/kythe/kythe/kythe/go/util/schema>, &{CanonicalizePackageCorpus: false}) => {
-// Corpus: "github.com/kythe/kythe",
-// Path: "kythe/go/util/schema",
-// Language: "go",
-// Signature: "package",
-// }
+// ForPackage( <kythe.io/kythe/go/util/schema>, &{CanonicalizePackageCorpus: true}) => {
+// Corpus: "github.com/kythe/kythe",
+// Path: "kythe/go/util/schema",
+// Language: "go",
+// Signature: "package",
+// }
//
-// ForPackage(<github.com/kythe/kythe/kythe/go/util/schema>, &{CanonicalizePackageCorpus: true}) => {
-// Corpus: "github.com/kythe/kythe",
-// Path: "kythe/go/util/schema",
-// Language: "go",
-// Signature: "package",
-// }
+// ForPackage(<github.com/kythe/kythe/kythe/go/util/schema>, &{CanonicalizePackageCorpus: false}) => {
+// Corpus: "github.com/kythe/kythe",
+// Path: "kythe/go/util/schema",
+// Language: "go",
+// Signature: "package",
+// }
+//
+// ForPackage(<github.com/kythe/kythe/kythe/go/util/schema>, &{CanonicalizePackageCorpus: true}) => {
+// Corpus: "github.com/kythe/kythe",
+// Path: "kythe/go/util/schema",
+// Language: "go",
+// Signature: "package",
+// }
func ForPackage(pkg *build.Package, opts *PackageVNameOptions) *spb.VName {
if !pkg.Goroot && opts != nil && opts.Rules != nil {
root := pkg.Root
@@ -140,13 +151,25 @@ func ForPackage(pkg *build.Package, opts *PackageVNameOptions) *spb.VName {
} else {
v.Corpus = r.Root
}
+
+ if opts.UseDefaultCorpusForDeps && v.Corpus != opts.DefaultCorpus {
+ v.Root = v.Corpus
+ v.Corpus = opts.DefaultCorpus
+ }
+
return v
}
v.Path = ip
if pkg.Goroot {
- // This is a Go standard library package; the corpus is implicit.
- v.Corpus = golangCorpus
+ // This is a Go standard library package. By default the corpus is
+ // implied to be "golang.org", but can be configured to use the default
+ // corpus instead.
+ if opts.UseDefaultCorpusForStdLib {
+ v.Corpus = opts.DefaultCorpus
+ } else {
+ v.Corpus = GolangCorpus
+ }
} else if strings.HasPrefix(ip, ".") {
// Local import; no corpus
} else if i := strings.Index(ip, "/"); i > 0 {
@@ -164,7 +187,7 @@ func ForPackage(pkg *build.Package, opts *PackageVNameOptions) *spb.VName {
// ForBuiltin returns a VName for a Go built-in with the given signature.
func ForBuiltin(signature string) *spb.VName {
return &spb.VName{
- Corpus: golangCorpus,
+ Corpus: GolangCorpus,
Language: Language,
Root: "ref/spec",
Signature: signature,
@@ -175,7 +198,7 @@ func ForBuiltin(signature string) *spb.VName {
// given import path.
func ForStandardLibrary(importPath string) *spb.VName {
return &spb.VName{
- Corpus: golangCorpus,
+ Corpus: GolangCorpus,
Language: Language,
Path: importPath,
Signature: "package",
@@ -186,7 +209,7 @@ func ForStandardLibrary(importPath string) *spb.VName {
// This includes the "golang.org" corpus but excludes the "golang.org/x/..."
// extension repositories. If v == nil, the answer is false.
func IsStandardLibrary(v *spb.VName) bool {
- return v != nil && (v.Language == "go" || v.Language == "") && v.Corpus == golangCorpus
+ return v != nil && (v.Language == "go" || v.Language == "") && v.Corpus == GolangCorpus
}
// ImportPath returns the putative Go import path corresponding to v. The
@@ -209,7 +232,7 @@ func ImportPath(v *spb.VName, goRoot string) string {
// rootRelative reports whether path has the form
//
-// root[/pkg/os_arch/]tail
+// root[/pkg/os_arch/]tail
//
// and if so, returns the tail. It returns path, false if path does not have
// this form.
diff --git a/kythe/go/extractors/govname/govname_test.go b/kythe/go/extractors/govname/govname_test.go
index d3480e9e1..bf64b6c1b 100644
--- a/kythe/go/extractors/govname/govname_test.go
+++ b/kythe/go/extractors/govname/govname_test.go
@@ -39,13 +39,15 @@ func TestForPackage(t *testing.T) {
}}]`
tests := []struct {
- path string // import path
- dir string // on-disk directory that contains this package
- root string // GOPATH if set, otherwise working directory from which extractor was invoked
- ticket string
- canonical string
- isRoot bool
- rulesJSON string
+ path string // import path
+ dir string // on-disk directory that contains this package
+ root string // GOPATH if set, otherwise working directory from which extractor was invoked
+ ticket string
+ canonical string
+ isRoot bool
+ rulesJSON string
+ defaultCorpus string
+ useDefaultCorpusForDeps bool
}{
{path: "bytes", ticket: "kythe://golang.org?lang=go?path=bytes#package", isRoot: true},
// Rules should have no effect on go stdlib packages.
@@ -63,6 +65,7 @@ func TestForPackage(t *testing.T) {
{path: "bitbucket.org/creachadair/stringset/makeset", ticket: "kythe://bitbucket.org/creachadair/stringset?lang=go?path=makeset#package"},
{path: "launchpad.net/~frood/blee/blor", ticket: "kythe://launchpad.net/~frood/blee/blor?lang=go#package"},
{path: "launchpad.net/~frood/blee/blor/baz", ticket: "kythe://launchpad.net/~frood/blee/blor?lang=go?path=baz#package"},
+ {path: "bitbucket.org/creachadair/stringset/makeset", defaultCorpus: "github.com/kythe/kythe", useDefaultCorpusForDeps: true, ticket: "kythe://github.com/kythe/kythe?lang=go?path=makeset?root=bitbucket.org/creachadair/stringset#package"},
}
for _, test := range tests {
var rules vnameutil.Rules
@@ -80,7 +83,11 @@ func TestForPackage(t *testing.T) {
Dir: test.dir,
Root: test.root,
}
- got := ForPackage(pkg, &PackageVNameOptions{Rules: rules})
+ got := ForPackage(pkg, &PackageVNameOptions{
+ DefaultCorpus: test.defaultCorpus,
+ UseDefaultCorpusForDeps: test.useDefaultCorpusForDeps,
+ Rules: rules,
+ })
gotTicket := kytheuri.ToString(got)
if gotTicket != test.ticket {
t.Errorf(`ForPackage([%s], nil): got %q, want %q`, test.path, gotTicket, test.ticket)
@@ -90,7 +97,12 @@ func TestForPackage(t *testing.T) {
if test.canonical != "" {
canonical = test.canonical
}
- canonicalOpts := &PackageVNameOptions{CanonicalizePackageCorpus: true, Rules: rules}
+ canonicalOpts := &PackageVNameOptions{
+ DefaultCorpus: test.defaultCorpus,
+ UseDefaultCorpusForDeps: test.useDefaultCorpusForDeps,
+ CanonicalizePackageCorpus: true,
+ Rules: rules,
+ }
if got := kytheuri.ToString(ForPackage(pkg, canonicalOpts)); got != canonical {
t.Errorf(`ForPackage([%s], %#v): got %q, want canonicalized %q`, test.path, canonicalOpts, got, canonical)
}
@@ -130,7 +142,7 @@ func TestNotStandardLib(t *testing.T) {
func TestForBuiltin(t *testing.T) {
const signature = "blah"
want := &spb.VName{
- Corpus: golangCorpus,
+ Corpus: GolangCorpus,
Language: Language,
Root: "ref/spec",
Signature: signature,
diff --git a/kythe/go/extractors/govname/types.go b/kythe/go/extractors/govname/types.go
index 66b002882..3c1af7fb2 100644
--- a/kythe/go/extractors/govname/types.go
+++ b/kythe/go/extractors/govname/types.go
@@ -25,38 +25,38 @@ import (
// BasicType returns the VName for a basic builtin Go type.
func BasicType(b *types.Basic) *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: b.Name() + "#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: b.Name() + "#builtin"}
}
// FunctionConstructorType returns the VName for the builtin Go function type constructor.
func FunctionConstructorType() *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: "fn#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: "fn#builtin"}
}
// TupleConstructorType returns the VName for the builtin Go tuple type constructor.
func TupleConstructorType() *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: "tuple#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: "tuple#builtin"}
}
// MapConstructorType returns the VName for the builtin Go map type constructor.
func MapConstructorType() *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: "map#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: "map#builtin"}
}
// ArrayConstructorType returns the VName for the builtin Go array type
// constructor of a given length.
func ArrayConstructorType(length int64) *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: fmt.Sprintf("array%d#builtin", length)}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: fmt.Sprintf("array%d#builtin", length)}
}
// SliceConstructorType returns the VName for the builtin Go slice type constructor.
func SliceConstructorType() *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: "slice#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: "slice#builtin"}
}
// PointerConstructorType returns the VName for the builtin Go pointer type constructor.
func PointerConstructorType() *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: "pointer#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: "pointer#builtin"}
}
// ChanConstructorType returns the VName for the builtin Go chan type
@@ -71,10 +71,10 @@ func ChanConstructorType(dir types.ChanDir) *spb.VName {
default:
chanType = "chan"
}
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: chanType + "#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: chanType + "#builtin"}
}
// VariadicConstructorType returns the VName for the builtin Go variadic type constructor.
func VariadicConstructorType() *spb.VName {
- return &spb.VName{Corpus: golangCorpus, Language: Language, Signature: "variadic#builtin"}
+ return &spb.VName{Corpus: GolangCorpus, Language: Language, Signature: "variadic#builtin"}
}
diff --git a/kythe/go/indexer/BUILD b/kythe/go/indexer/BUILD
index b102606a7..bacbd0af3 100644
--- a/kythe/go/indexer/BUILD
+++ b/kythe/go/indexer/BUILD
@@ -15,6 +15,7 @@ go_library(
],
deps = [
"//kythe/go/extractors/govname",
+ "//kythe/go/util/kytheuri",
"//kythe/go/util/metadata",
"//kythe/go/util/ptypes",
"//kythe/go/util/schema/edges",
@@ -52,6 +53,37 @@ bzl_library(
)
go_indexer_test(
+ name = "genericstruct_test",
+ srcs = ["testdata/generics/genericstruct.go"],
+ has_marked_source = True,
+)
+
+go_indexer_test(
+ name = "genericmethod_test",
+ srcs = ["testdata/generics/genericmethod.go"],
+ has_marked_source = True,
+)
+
+go_indexer_test(
+ name = "genericinterface_test",
+ srcs = ["testdata/generics/genericinterface.go"],
+ has_marked_source = True,
+)
+
+go_indexer_test(
+ name = "genericfunc_test",
+ srcs = ["testdata/generics/genericfunc.go"],
+ has_marked_source = True,
+)
+
+go_indexer_test(
+ name = "genericdep_test",
+ srcs = ["testdata/generics/genericdep.go"],
+ has_marked_source = True,
+ deps = [":genericinterface_test"],
+)
+
+go_indexer_test(
name = "syntax_test",
srcs = ["testdata/syntax.go"],
)
@@ -200,6 +232,12 @@ go_indexer_test(
)
go_indexer_test(
+ name = "anonref_test",
+ srcs = ["testdata/basic/anonref.go"],
+ deps = [":anonymous_test"],
+)
+
+go_indexer_test(
name = "structinit_test",
srcs = ["testdata/structinit.go"],
)
@@ -239,6 +277,35 @@ empty_corpus_test(
entries = ":tappcorpus_test_entries.entries.gz",
)
+go_indexer_test(
+ name = "stdlibimport_test",
+ srcs = ["testdata/basic/stdlibimport.go"],
+ extra_extractor_args = [
+ "--use_default_corpus_for_stdlib",
+ "--corpus=kythe",
+ ],
+ use_compilation_corpus_as_default = True,
+)
+
+# Test that extracting and indexing a go package that imports standard libraries
+# does not contain entries in the "golang.org" corpus when
+# --use_default_corpus_for_stdlib is enabled.
+empty_corpus_test(
+ name = "stdlibimport_corpus_test",
+ allowed_corpora = ["kythe"],
+ entries = ":stdlibimport_test_entries.entries.gz",
+)
+
+go_indexer_test(
+ name = "stdliboverride_test",
+ srcs = ["testdata/basic/stdliboverride.go"],
+ extra_extractor_args = [
+ "--corpus=kythe",
+ ],
+ override_stdlib_corpus = "STDLIB_OVERRIDE",
+ use_compilation_corpus_as_default = True,
+)
+
# load(":testdata/go_indexer_test.bzl", "go_integration_test")
# TODO(#2375): (closed?) requires MarkedSource resolution in pipeline
# go_integration_test(
diff --git a/kythe/go/indexer/cmd/go_indexer/go_indexer.go b/kythe/go/indexer/cmd/go_indexer/go_indexer.go
index 907fe0384..c7391c781 100644
--- a/kythe/go/indexer/cmd/go_indexer/go_indexer.go
+++ b/kythe/go/indexer/cmd/go_indexer/go_indexer.go
@@ -52,6 +52,7 @@ var (
verbose = flag.Bool("verbose", false, "Emit verbose log information")
contOnErr = flag.Bool("continue", false, "Log errors encountered during analysis but do not exit unsuccessfully")
useCompilationCorpusAsDefault = flag.Bool("use_compilation_corpus_as_default", false, "Nodes that otherwise wouldn't have a corpus (such as tapps) are given the corpus of the compilation unit being indexed.")
+ overrideStdlibCorpus = flag.String("override_stdlib_corpus", "", "If set, all stdlib nodes are assigned this corpus")
writeEntry func(context.Context, *spb.Entry) error
docURL *url.URL
@@ -160,6 +161,7 @@ func indexGo(ctx context.Context, unit *apb.CompilationUnit, f indexer.Fetcher)
DocBase: docURL,
OnlyEmitDocURIsForStandardLibs: *onlyEmitDocURIsForStandardLibs,
UseCompilationCorpusAsDefault: *useCompilationCorpusAsDefault,
+ OverrideStdlibCorpus: *overrideStdlibCorpus,
})
}
diff --git a/kythe/go/indexer/emit.go b/kythe/go/indexer/emit.go
index 00f930e1f..671e6151e 100644
--- a/kythe/go/indexer/emit.go
+++ b/kythe/go/indexer/emit.go
@@ -68,6 +68,9 @@ type EmitOptions struct {
// Nodes that otherwise wouldn't have a corpus (such as tapps) are given the
// corpus of the compilation unit being indexed.
UseCompilationCorpusAsDefault bool
+
+ // If set, all stdlib nodes are assigned this corpus.
+ OverrideStdlibCorpus string
}
func (e *EmitOptions) emitMarkedSource() bool {
@@ -168,6 +171,10 @@ func (pi *PackageInfo) Emit(ctx context.Context, sink Sink, opts *EmitOptions) e
e.visitRangeStmt(n, stack)
case *ast.CompositeLit:
e.visitCompositeLit(n, stack)
+ case *ast.IndexExpr:
+ e.visitIndexExpr(n, stack)
+ case *ast.IndexListExpr:
+ e.visitIndexListExpr(n, stack)
}
return true
}), file)
@@ -206,7 +213,31 @@ func (e *emitter) visitIdent(id *ast.Ident, stack stackFunc) {
return
}
- target := e.pi.ObjectVName(obj)
+ if sig, ok := obj.Type().(*types.Signature); ok && sig.RecvTypeParams().Len() > 0 {
+ // Lookup the original non-instantiated method to reference.
+ if n, ok := deref(sig.Recv().Type()).(*types.Named); ok {
+ f, _, _ := types.LookupFieldOrMethod(n.Origin(), true, obj.Pkg(), obj.Name())
+ if f != nil {
+ obj = f
+ }
+ }
+ }
+
+ // Receiver type parameter identifiers are both usages and definitions; take
+ // the opportunity to emit a binding and do not continue to emit a Ref edge.
+ if def, ok := e.pi.Info.Defs[id].(*types.TypeName); ok && def == obj {
+ e.writeBinding(id, nodes.TVar, nil)
+ return
+ }
+
+ var target *spb.VName
+ if n, ok := obj.(*types.TypeName); ok && obj.Pkg() == nil {
+ // Handle type arguments in instantiated types.
+ target = e.emitType(n.Type())
+ } else {
+ target = e.pi.ObjectVName(obj)
+ }
+
if target == nil {
// This should not happen in well-formed packages, but can if the
// extractor gets confused. Avoid emitting confusing references in such
@@ -272,11 +303,23 @@ func (e *emitter) visitFuncDecl(decl *ast.FuncDecl, stack stackFunc) {
e.emitParameters(decl.Type, sig, info)
}
+// rewrittenCorpusForVName returns the new corpus that should be assigned to the
+// given vname based on the OverrideStdlibCorpus and UseCompilationCorpusAsDefault options
+func (e *emitter) rewrittenCorpusForVName(v *spb.VName) string {
+ if e.opts.OverrideStdlibCorpus != "" && v.GetCorpus() == govname.GolangCorpus {
+ return e.opts.OverrideStdlibCorpus
+ }
+ if e.opts.UseCompilationCorpusAsDefault {
+ return e.pi.VName.GetCorpus()
+ }
+ return v.GetCorpus()
+}
+
// emitTApp emits a tapp node and returns its VName. The new tapp is emitted
// with given constructor and parameters. The constructor's kind is also
// emitted if this is the first time seeing it.
func (e *emitter) emitTApp(ms *cpb.MarkedSource, ctorKind string, ctor *spb.VName, params ...*spb.VName) *spb.VName {
- if e.pi.typeEmitted.Add(ctor.Signature) {
+ if ctorKind != "" && e.pi.typeEmitted.Add(ctor.Signature) {
e.writeFact(ctor, facts.NodeKind, ctorKind)
if ctorKind == nodes.TBuiltin {
e.emitBuiltinMarkedSource(ctor)
@@ -287,8 +330,8 @@ func (e *emitter) emitTApp(ms *cpb.MarkedSource, ctorKind string, ctor *spb.VNam
components = append(components, p)
}
v := &spb.VName{Language: govname.Language, Signature: hashSignature(components)}
- if e.opts.UseCompilationCorpusAsDefault {
- v.Corpus = e.pi.VName.GetCorpus()
+ if e.opts.UseCompilationCorpusAsDefault || e.opts.OverrideStdlibCorpus != "" {
+ v.Corpus = e.rewrittenCorpusForVName(v)
}
if e.pi.typeEmitted.Add(v.Signature) {
e.writeFact(v, facts.NodeKind, nodes.TApp)
@@ -313,7 +356,18 @@ func (e *emitter) emitType(typ types.Type) *spb.VName {
switch typ := typ.(type) {
case *types.Named:
- v = e.pi.ObjectVName(typ.Obj())
+ if typ.TypeArgs().Len() == 0 {
+ v = e.pi.ObjectVName(typ.Obj())
+ } else {
+ // Instantiated Named types produce tapps
+ ctor := e.emitType(typ.Origin())
+ args := typ.TypeArgs()
+ var params []*spb.VName
+ for i := 0; i < args.Len(); i++ {
+ params = append(params, e.emitType(args.At(i)))
+ }
+ v = e.emitTApp(genericTAppMS, "", ctor, params...)
+ }
case *types.Basic:
v = govname.BasicType(typ)
if e.pi.typeEmitted.Add(v.Signature) {
@@ -410,6 +464,8 @@ func (e *emitter) emitType(typ types.Type) *spb.VName {
})
}
}
+ case *types.TypeParam:
+ v = e.pi.ObjectVName(typ.Obj())
default:
log.Printf("WARNING: unknown type %T: %+v", typ, typ)
}
@@ -488,6 +544,11 @@ func (e *emitter) visitTypeSpec(spec *ast.TypeSpec, stack stackFunc) {
e.writeDef(spec, target)
e.writeDoc(specComment(spec, stack), target)
+ mapFields(spec.TypeParams, func(i int, id *ast.Ident) {
+ v := e.writeBinding(id, nodes.TVar, nil)
+ e.writeEdge(target, v, edges.TParamIndex(i))
+ })
+
// Emit type-specific structure.
switch t := obj.Type().Underlying().(type) {
case *types.Struct:
@@ -670,6 +731,22 @@ func (e *emitter) visitCompositeLit(expr *ast.CompositeLit, stack stackFunc) {
}
}
+// visitIndexExpr handles references to instantiated types with a single type
+// parameter.
+func (e *emitter) visitIndexExpr(expr *ast.IndexExpr, stack stackFunc) {
+ if n, ok := e.pi.Info.TypeOf(expr).(*types.Named); ok && n.TypeArgs().Len() > 0 {
+ e.writeRef(expr, e.emitType(n), edges.Ref)
+ }
+}
+
+// visitIndexListExpr handles references to instantiated types with multiple
+// type parameters.
+func (e *emitter) visitIndexListExpr(expr *ast.IndexListExpr, stack stackFunc) {
+ if n, ok := e.pi.Info.TypeOf(expr).(*types.Named); ok && n.TypeArgs().Len() > 0 {
+ e.writeRef(expr, e.emitType(n), edges.Ref)
+ }
+}
+
// emitPosRef emits an anchor spanning loc, pointing to obj.
func (e *emitter) emitPosRef(loc ast.Node, obj types.Object, kind string) {
target := e.pi.ObjectVName(obj)
@@ -710,6 +787,11 @@ func (e *emitter) emitParameters(ftype *ast.FuncType, sig *types.Signature, info
mapFields(ftype.Results, func(i int, id *ast.Ident) {
e.writeBinding(id, nodes.Variable, info.vname)
})
+ // Emit bindings for type parameters
+ mapFields(ftype.TypeParams, func(i int, id *ast.Ident) {
+ v := e.writeBinding(id, nodes.TVar, nil)
+ e.writeEdge(info.vname, v, edges.TParamIndex(i))
+ })
}
// emitAnonMembers checks whether expr denotes an anonymous struct or interface
@@ -753,18 +835,25 @@ func (o overrides) seen(x, y types.Object) bool {
// indexed, and emits edges connecting it to any known interfaces its method
// set satisfies.
func (e *emitter) emitSatisfactions() {
- // Find the names of all defined types mentioned in this compilation.
- var allNames []*types.TypeName
+ // Find all the Named types mentioned in this compilation.
+ var allTypes []*types.Named
// For the current source package, use all names, even local ones.
for _, obj := range e.pi.Info.Defs {
if obj, ok := obj.(*types.TypeName); ok {
- if _, ok := obj.Type().(*types.Named); ok {
- allNames = append(allNames, obj)
+ if n, ok := obj.Type().(*types.Named); ok {
+ allTypes = append(allTypes, n)
}
}
}
+ // Include instance types.
+ for _, t := range e.pi.Info.Types {
+ if n, ok := t.Type.(*types.Named); ok && n.TypeArgs().Len() > 0 {
+ allTypes = append(allTypes, n)
+ }
+ }
+
// For dependencies, we only have access to package-level types, not those
// defined by inner scopes.
for _, pkg := range e.pi.Dependencies {
@@ -776,24 +865,27 @@ func (e *emitter) emitSatisfactions() {
// compiled package headers omit the names if they are not
// needed. Skip such cases, even though they would qualify if
// we had the source package.
- if _, ok := obj.Type().(*types.Named); ok && obj.Name() != "" {
- allNames = append(allNames, obj)
+ if n, ok := obj.Type().(*types.Named); ok && obj.Name() != "" {
+ allTypes = append(allTypes, n)
}
}
}
}
+ // Shared Context across all generic assignability checks.
+ tctx := types.NewContext()
+
// Cache the method set of each named type in this package.
var msets typeutil.MethodSetCache
// Cache the overrides we've noticed to avoid duplicate entries.
cache := make(overrides)
- for _, xobj := range allNames {
+ for _, x := range allTypes {
+ xobj := x.Obj()
if xobj.Pkg() != e.pi.Package {
continue // not from this package
}
// Check whether x is a named type with methods; if not, skip it.
- x := xobj.Type()
if len(typeutil.IntuitiveMethodSet(x, &msets)) == 0 {
continue // no methods to consider
}
@@ -803,46 +895,40 @@ func (e *emitter) emitSatisfactions() {
// single compilation.
// Check the method sets of both x and pointer-to-x for overrides.
- xmset := msets.MethodSet(x)
- pxmset := msets.MethodSet(types.NewPointer(x))
+ xmset := msets.MethodSet(xobj.Type())
+ pxmset := msets.MethodSet(types.NewPointer(xobj.Type()))
- for _, yobj := range allNames {
+ for _, y := range allTypes {
+ yobj := y.Obj()
if xobj == yobj {
continue
}
- y := yobj.Type()
- ymset := msets.MethodSet(y)
+ ymset := msets.MethodSet(yobj.Type())
ifx, ify := isInterface(x), isInterface(y)
switch {
case ifx && ify && ymset.Len() > 0:
// x and y are both interfaces. Note that extension is handled
// elsewhere as part of the type spec for the interface.
- if types.AssignableTo(x, y) {
+ if assignableTo(tctx, x, y) {
e.writeSatisfies(xobj, yobj)
}
- if types.AssignableTo(y, x) {
+ if assignableTo(tctx, y, x) {
e.writeSatisfies(yobj, xobj)
}
case ifx:
// y is a concrete type
pymset := msets.MethodSet(types.NewPointer(y))
- if types.AssignableTo(y, x) {
- e.writeSatisfies(yobj, xobj)
- e.emitOverrides(ymset, pymset, xmset, cache)
- } else if py := types.NewPointer(y); types.AssignableTo(py, x) {
+ if assignableTo(tctx, y, x) {
e.writeSatisfies(yobj, xobj)
e.emitOverrides(ymset, pymset, xmset, cache)
}
case ify && ymset.Len() > 0:
// x is a concrete type
- if types.AssignableTo(x, y) {
- e.writeSatisfies(xobj, yobj)
- e.emitOverrides(xmset, pxmset, ymset, cache)
- } else if px := types.NewPointer(x); types.AssignableTo(px, y) {
+ if assignableTo(tctx, x, y) {
e.writeSatisfies(xobj, yobj)
e.emitOverrides(xmset, pxmset, ymset, cache)
}
@@ -877,7 +963,9 @@ func (e *emitter) emitOverrides(xmset, pxmset, ymset *types.MethodSet, cache ove
xvname := e.pi.ObjectVName(xobj)
yvname := e.pi.ObjectVName(yobj)
- e.writeEdge(xvname, yvname, edges.Overrides)
+ if e.pi.typeEmitted.Add(xvname.Signature + "+" + yvname.Signature) {
+ e.writeEdge(xvname, yvname, edges.Overrides)
+ }
xt := e.emitType(xobj.Type())
yt := e.emitType(yobj.Type())
@@ -912,14 +1000,28 @@ func (e *emitter) writeSatisfies(src, tgt types.Object) {
}
func (e *emitter) writeFact(src *spb.VName, name, value string) {
+ if e.opts.UseCompilationCorpusAsDefault || e.opts.OverrideStdlibCorpus != "" {
+ src = proto.Clone(src).(*spb.VName)
+ src.Corpus = e.rewrittenCorpusForVName(src)
+ }
e.check(e.sink.writeFact(e.ctx, src, name, value))
}
func (e *emitter) writeEdge(src, tgt *spb.VName, kind string) {
+ if e.opts.UseCompilationCorpusAsDefault || e.opts.OverrideStdlibCorpus != "" {
+ src = proto.Clone(src).(*spb.VName)
+ src.Corpus = e.rewrittenCorpusForVName(src)
+ tgt = proto.Clone(tgt).(*spb.VName)
+ tgt.Corpus = e.rewrittenCorpusForVName(tgt)
+ }
e.check(e.sink.writeEdge(e.ctx, src, tgt, kind))
}
func (e *emitter) writeAnchor(node ast.Node, src *spb.VName, start, end int) {
+ if e.opts.UseCompilationCorpusAsDefault || e.opts.OverrideStdlibCorpus != "" {
+ src = proto.Clone(src).(*spb.VName)
+ src.Corpus = e.rewrittenCorpusForVName(src)
+ }
if _, ok := e.anchored[node]; ok {
return // this node already has an anchor
}
@@ -928,6 +1030,10 @@ func (e *emitter) writeAnchor(node ast.Node, src *spb.VName, start, end int) {
}
func (e *emitter) writeDiagnostic(src *spb.VName, d diagnostic) {
+ if e.opts.UseCompilationCorpusAsDefault || e.opts.OverrideStdlibCorpus != "" {
+ src = proto.Clone(src).(*spb.VName)
+ src.Corpus = e.rewrittenCorpusForVName(src)
+ }
e.check(e.sink.writeDiagnostic(e.ctx, src, d))
}
@@ -1275,3 +1381,47 @@ func firstNonEmptyComment(cs ...*ast.CommentGroup) *ast.CommentGroup {
}
return nil
}
+
+func canBeAssignableTo(v, t types.Type) bool {
+ return types.AssignableTo(v, t) || types.AssignableTo(types.NewPointer(v), t)
+}
+
+func assignableTo(tctx *types.Context, V, T types.Type) bool {
+ // If V and T are not both named, or do not have matching non-empty type
+ // parameter lists, fall back on types.AssignableTo.
+ VN, Vnamed := V.(*types.Named)
+ TN, Tnamed := T.(*types.Named)
+ if !Vnamed || !Tnamed {
+ return canBeAssignableTo(V, T)
+ }
+
+ vtparams := VN.TypeParams()
+ ttparams := TN.TypeParams()
+ if vtparams.Len() == 0 || vtparams.Len() != ttparams.Len() || VN.TypeArgs().Len() != 0 || TN.TypeArgs().Len() != 0 {
+ return canBeAssignableTo(V, T)
+ }
+
+ // V and T have the same (non-zero) number of type params. Instantiate both
+ // with the type parameters of V. This must always succeed for V, and will
+ // succeed for T if and only if the type set of each type parameter of V is a
+ // subset of the type set of the corresponding type parameter of T, meaning
+ // that every instantiation of V corresponds to a valid instantiation of T.
+
+ targs := make([]types.Type, vtparams.Len())
+ for i := 0; i < vtparams.Len(); i++ {
+ targs[i] = vtparams.At(i)
+ }
+
+ vinst, err := types.Instantiate(tctx, V, targs, true)
+ if err != nil {
+ log.Printf("ERROR: type parameters should satisfy their own constraints: %v", err)
+ return false
+ }
+
+ tinst, err := types.Instantiate(tctx, T, targs, true)
+ if err != nil {
+ return false
+ }
+
+ return canBeAssignableTo(vinst, tinst)
+}
diff --git a/kythe/go/indexer/indexer.go b/kythe/go/indexer/indexer.go
index 3e94cbdc0..bc5ff7345 100644
--- a/kythe/go/indexer/indexer.go
+++ b/kythe/go/indexer/indexer.go
@@ -18,19 +18,18 @@
//
// Usage example: Indexing a Kythe CompilationUnit message.
//
-// // Obtain a compilation from some source, e.g., an kzip.
-// var unit *apb.CompilationUnit = ...
-//
-// // Parse the sources and resolve types.
-// pi, err := indexer.Resolve(unit, pack, &indexer.ResolveOptions{
-// Info: indexer.AllTypeInfo(),
-// })
-// if err != nil {
-// log.Fatal("Resolving failed: %v", err)
-// }
-// // Type information from http://godoc.org/go/types is now available
-// // from pi.Info, which is a *types.Info record.
+// // Obtain a compilation from some source, e.g., an kzip.
+// var unit *apb.CompilationUnit = ...
//
+// // Parse the sources and resolve types.
+// pi, err := indexer.Resolve(unit, pack, &indexer.ResolveOptions{
+// Info: indexer.AllTypeInfo(),
+// })
+// if err != nil {
+// log.Fatal("Resolving failed: %v", err)
+// }
+// // Type information from http://godoc.org/go/types is now available
+// // from pi.Info, which is a *types.Info record.
package indexer // import "kythe.io/kythe/go/indexer"
import (
@@ -262,9 +261,11 @@ func Resolve(unit *apb.CompilationUnit, f Fetcher, opts *ResolveOptions) (*Packa
//
// The build context is used to check build tags.
bc := &build.Context{
- GOOS: details.GetGoos(),
- GOARCH: details.GetGoarch(),
- BuildTags: details.GetBuildTags(),
+ GOOS: details.GetGoos(),
+ GOARCH: details.GetGoarch(),
+ BuildTags: details.GetBuildTags(),
+ ReleaseTags: build.Default.ReleaseTags,
+ ToolTags: build.Default.ToolTags,
}
for _, ri := range unit.RequiredInput {
if ri.Info == nil {
@@ -418,7 +419,6 @@ func Resolve(unit *apb.CompilationUnit, f Fetcher, opts *ResolveOptions) (*Packa
Error: func(err error) { pi.Errors = append(pi.Errors, err) },
}
pi.Package, _ = c.Check(pi.Name, pi.FileSet, pi.Files, pi.Info)
- pi.PackageVName[pi.Package] = unit.VName
// Fill in the mapping from packages to vnames.
for ip, vname := range imap {
@@ -436,6 +436,7 @@ func Resolve(unit *apb.CompilationUnit, f Fetcher, opts *ResolveOptions) (*Packa
pi.VName = proto.Clone(unit.VName).(*spb.VName)
pi.VName.Language = govname.Language
pi.VName.Signature = "package"
+ pi.PackageVName[pi.Package] = pi.VName
return pi, nil
}
@@ -552,6 +553,7 @@ const (
tagLabel = "label"
tagMethod = "method"
tagParam = "param"
+ tagTVar = "tvar"
tagType = "type"
tagVar = "var"
)
@@ -587,7 +589,7 @@ func (pi *PackageInfo) newSignature(obj types.Object) (tag, base string) {
_, base := pi.newSignature(owner)
return tagField, base + "." + t.Name()
}
- return tagField, fmt.Sprintf("[%p].%s", t, t.Name())
+ return tagField, pi.anonSignature(t)
} else if owner, ok := pi.owner[t]; ok {
_, base := pi.newSignature(owner)
return tagParam, base + ":" + t.Name()
@@ -610,13 +612,16 @@ func (pi *PackageInfo) newSignature(obj types.Object) (tag, base string) {
}
case *types.TypeName:
+ if param, ok := t.Type().(*types.TypeParam); ok {
+ return tagTVar, fmt.Sprintf("[%p]%s", t, param.String())
+ }
topLevelTag = tagType
if t.Pkg() == nil {
return isBuiltin + tagType, t.Name()
}
case *types.Label:
- return tagLabel, fmt.Sprintf("[%p].%s", t, t.Name())
+ return tagLabel, pi.anonSignature(t)
default:
log.Panicf("Unexpected object kind: %T", obj)
@@ -634,7 +639,17 @@ func (pi *PackageInfo) newSignature(obj types.Object) (tag, base string) {
}
// Objects in interior (local) scopes, i.e., everything else.
- return topLevelTag, fmt.Sprintf("[%p].%s", obj, obj.Name())
+ return topLevelTag, pi.anonSignature(obj)
+}
+
+func (pi *PackageInfo) anonSignature(obj types.Object) string {
+ // Use the object's line number and file basename to differentiate the
+ // node while allowing for cross-package references (other parts of the
+ // Position may differ). This may collide if a source file isn't gofmt'd
+ // and defines multiple anonymous fields with the same name on the same
+ // line, but that's unlikely to happen in practice.
+ pos := pi.FileSet.Position(obj.Pos())
+ return fmt.Sprintf("[%s#%d].%s", filepath.Base(pos.Filename), pos.Line, obj.Name())
}
// addOwners updates pi.owner from the types in pkg, adding mapping from fields
@@ -656,16 +671,16 @@ func (pi *PackageInfo) newSignature(obj types.Object) (tag, base string) {
// to types T and U, even though according the syntax, it belongs primarily to
// T in the first example and U in the second:
//
-// type T struct {X int}
-// type U T
+// type T struct {X int}
+// type U T
//
-// type T U
-// type U struct {X int}
+// type T U
+// type U struct {X int}
//
// Similarly:
//
-// type U struct {X int}
-// type V struct {U}
+// type U struct {X int}
+// type V struct {U}
//
// TODO(adonovan): sameer@ points out a useful heuristic: in a case of struct
// or interface embedding, if one struct/interface has fewer fields/methods,
@@ -675,17 +690,17 @@ func (pi *PackageInfo) newSignature(obj types.Object) (tag, base string) {
// from outside the package but for which we can't easily come up with good
// names. Here are some examples:
//
-// // package p
-// var V1, V2 struct {X int} = ...
-// func F() struct{X int} {...}
-// type T struct {
-// Y struct { X int }
-// }
+// // package p
+// var V1, V2 struct {X int} = ...
+// func F() struct{X int} {...}
+// type T struct {
+// Y struct { X int }
+// }
//
-// // main
-// p.V2.X = 1
-// print(p.F().X)
-// new(p.T).Y[0].X
+// // main
+// p.V2.X = 1
+// print(p.F().X)
+// new(p.T).Y[0].X
//
// Also note that there may be arbitrary pointer, struct, chan, map, array, and
// slice type constructors between the type of the exported package member (V2,
@@ -693,6 +708,14 @@ func (pi *PackageInfo) newSignature(obj types.Object) (tag, base string) {
// names. They should be rare in readable code.
func (pi *PackageInfo) addOwners(pkg *types.Package, ownerByPos map[token.Position]types.Object, unownedByPos map[token.Position][]types.Object) {
scope := pkg.Scope()
+ addTypeParams := func(obj types.Object, params *types.TypeParamList) {
+ mapTypeParams(params, func(i int, param *types.TypeParam) {
+ typeName := param.Obj()
+ if _, ok := pi.owner[typeName]; !ok {
+ pi.owner[typeName] = obj
+ }
+ })
+ }
addFunc := func(obj *types.Func) {
// Inspect the receiver, parameters, and result values.
fsig := obj.Type().(*types.Signature)
@@ -709,6 +732,8 @@ func (pi *PackageInfo) addOwners(pkg *types.Package, ownerByPos map[token.Positi
pi.owner[res.At(i)] = obj
}
}
+ addTypeParams(obj, fsig.TypeParams())
+ addTypeParams(obj, fsig.RecvTypeParams())
}
addMethods := func(obj types.Object, n int, method func(i int) *types.Func) {
for i := 0; i < n; i++ {
@@ -751,6 +776,31 @@ func (pi *PackageInfo) addOwners(pkg *types.Package, ownerByPos map[token.Positi
}
}
}
+ addNamed := func(obj types.Object, named *types.Named) {
+ addTypeParams(obj, named.TypeParams())
+ switch t := named.Underlying().(type) {
+ case *types.Struct:
+ // Inspect the fields of a struct.
+ for i := 0; i < t.NumFields(); i++ {
+ f := t.Field(i)
+ if f.Pkg() != pkg && named.TypeArgs().Len() == 0 {
+ continue // wrong package (and not an instantiated type)
+ }
+ if _, ok := pi.owner[f]; !ok {
+ pi.owner[f] = obj
+ }
+ }
+ addMethods(obj, named.NumMethods(), named.Method)
+
+ case *types.Interface:
+ // Inspect the declared methods of an interface.
+ addMethods(obj, t.NumExplicitMethods(), t.ExplicitMethod)
+
+ default:
+ // Inspect declared methods of other named types.
+ addMethods(obj, named.NumMethods(), named.Method)
+ }
+ }
for _, name := range scope.Names() {
switch obj := scope.Lookup(name).(type) {
@@ -762,33 +812,32 @@ func (pi *PackageInfo) addOwners(pkg *types.Package, ownerByPos map[token.Positi
if !ok {
continue
}
- switch t := named.Underlying().(type) {
- case *types.Struct:
- // Inspect the fields of a struct.
- for i := 0; i < t.NumFields(); i++ {
- f := t.Field(i)
- if f.Pkg() != pkg {
- continue // wrong package
- }
- if _, ok := pi.owner[f]; !ok {
- pi.owner[f] = obj
- }
- }
- addMethods(obj, named.NumMethods(), named.Method)
-
- case *types.Interface:
- // Inspect the declared methods of an interface.
- addMethods(obj, t.NumExplicitMethods(), t.ExplicitMethod)
-
- default:
- // Inspect declared methods of other named types.
- addMethods(obj, named.NumMethods(), named.Method)
- }
+ addNamed(obj, named)
case *types.Func:
addFunc(obj)
}
}
+
+ if pkg == pi.Package {
+ // Add owners for members of known known instantiations
+ for _, t := range pi.Info.Types {
+ if n, ok := t.Type.(*types.Named); ok && n.TypeArgs().Len() > 0 {
+ addNamed(n.Obj(), n)
+ }
+ }
+ }
+}
+
+// mapTypeParams applies f to each type parameter declared in params. Each call
+// to f is given the offset and the type parameter.
+func mapTypeParams(params *types.TypeParamList, f func(i int, id *types.TypeParam)) {
+ if params == nil {
+ return
+ }
+ for i := 0; i < params.Len(); i++ {
+ f(i, params.At(i))
+ }
}
// findFieldName tries to resolve the identifier that names an embedded
diff --git a/kythe/go/indexer/markedsource.go b/kythe/go/indexer/markedsource.go
index 6eb0209ab..1d1c8b963 100644
--- a/kythe/go/indexer/markedsource.go
+++ b/kythe/go/indexer/markedsource.go
@@ -22,6 +22,7 @@ import (
"log"
"strings"
+ "kythe.io/kythe/go/util/kytheuri"
"kythe.io/kythe/go/util/schema/facts"
"github.com/golang/protobuf/proto"
@@ -37,6 +38,7 @@ func (pi *PackageInfo) MarkedSource(obj types.Object) *cpb.MarkedSource {
Child: []*cpb.MarkedSource{{
Kind: cpb.MarkedSource_IDENTIFIER,
PreText: objectName(obj),
+ Link: []*cpb.Link{{Definition: []string{kytheuri.ToString(pi.ObjectVName(obj))}}},
}},
}
@@ -87,18 +89,29 @@ func (pi *PackageInfo) MarkedSource(obj types.Object) *cpb.MarkedSource {
if recv := sig.Recv(); recv != nil {
// Parenthesized receiver type, e.g. (R).
fn.Child = append(fn.Child, &cpb.MarkedSource{
+ // TODO(schroederc): use LOOKUP_BY_PARAM
Kind: cpb.MarkedSource_PARAMETER,
PreText: "(",
PostText: ") ",
Child: []*cpb.MarkedSource{{
Kind: cpb.MarkedSource_TYPE,
- PreText: typeName(recv.Type()),
+ PreText: typeName(recv.Type()) + typeArgs(recv.Type()),
+ Link: []*cpb.Link{{Definition: []string{kytheuri.ToString(pi.ObjectVName(recv))}}},
}},
})
firstParam = 1
}
fn.Child = append(fn.Child, ms)
+ if sig.TypeParams().Len() > 0 {
+ fn.Child = append(fn.Child, &cpb.MarkedSource{
+ Kind: cpb.MarkedSource_PARAMETER_LOOKUP_BY_TPARAM,
+ PreText: "[",
+ PostText: "]",
+ PostChildText: ", ",
+ })
+ }
+
// If there are no parameters, the lookup will not produce anything.
// Ensure when this happens we still get parentheses for notational
// purposes.
@@ -180,28 +193,47 @@ func typeName(typ types.Type) string {
return typ.String()
}
+// typeArgs returns a human readable string for a type's list of type arguments
+// (or "" if the type does not have any).
+func typeArgs(typ types.Type) string {
+ n, ok := deref(typ).(*types.Named)
+ if !ok || n.TypeArgs().Len() == 0 {
+ return ""
+ }
+ args := n.TypeArgs()
+ var ss []string
+ for i := 0; i < args.Len(); i++ {
+ ss = append(ss, typeName(args.At(i)))
+ }
+ return "[" + strings.Join(ss, ", ") + "]"
+}
+
// typeContext returns the package, type, and function context identifiers that
// qualify the name of obj, if any are applicable. The result is empty if there
// are no appropriate qualifiers.
func (pi *PackageInfo) typeContext(obj types.Object) []*cpb.MarkedSource {
var ms []*cpb.MarkedSource
- addID := func(s string) {
- ms = append(ms, &cpb.MarkedSource{
+ addID := func(s string, v *spb.VName) {
+ id := &cpb.MarkedSource{
Kind: cpb.MarkedSource_IDENTIFIER,
PreText: s,
- })
+ }
+ if v != nil {
+ id.Link = []*cpb.Link{{Definition: []string{kytheuri.ToString(v)}}}
+ }
+ ms = append(ms, id)
}
for cur := pi.owner[obj]; cur != nil; cur = pi.owner[cur] {
if t, ok := cur.(interface {
Name() string
}); ok {
- addID(t.Name())
+ addID(t.Name(), pi.ObjectVName(cur))
} else {
- addID(typeName(cur.Type()))
+ addID(typeName(cur.Type()), pi.ObjectVName(cur))
}
}
if pkg := obj.Pkg(); pkg != nil {
- addID(pi.importPath(pkg))
+ addID(pi.importPath(pkg), pi.PackageVName[pkg])
}
for i, j := 0, len(ms)-1; i < j; {
ms[i], ms[j] = ms[j], ms[i]
@@ -211,10 +243,32 @@ func (pi *PackageInfo) typeContext(obj types.Object) []*cpb.MarkedSource {
return ms
}
+// rewriteMarkedSourceCorpus finds all tickets in the MarkedSource
+// and its children and rewrites them to use the given corpus.
+func rewriteMarkedSourceCorpus(ms *cpb.MarkedSource, corpus string) {
+ for _, link := range ms.Link {
+ for i, def := range link.Definition {
+ v, err := kytheuri.ToVName(def)
+ if err != nil {
+ log.Printf("Error parsing ticket %q: %v", def, err)
+ continue
+ }
+ v.Corpus = corpus
+ link.Definition[i] = kytheuri.ToString(v)
+ }
+ }
+ for _, child := range ms.Child {
+ rewriteMarkedSourceCorpus(child, corpus)
+ }
+}
+
// emitCode emits a code fact for the specified marked source message on the
// target, or logs a diagnostic.
func (e *emitter) emitCode(target *spb.VName, ms *cpb.MarkedSource) {
if ms != nil {
+ if e.opts.UseCompilationCorpusAsDefault {
+ rewriteMarkedSourceCorpus(ms, e.pi.VName.Corpus)
+ }
bits, err := proto.Marshal(ms)
if err != nil {
log.Printf("ERROR: Unable to marshal marked source: %v", err)
@@ -334,6 +388,22 @@ var (
}},
PreText: "<-chan ",
}
+ genericTAppMS = &cpb.MarkedSource{
+ Kind: cpb.MarkedSource_TYPE,
+ Child: []*cpb.MarkedSource{{
+ Kind: cpb.MarkedSource_LOOKUP_BY_PARAM,
+ LookupIndex: 0,
+ }, {
+ Kind: cpb.MarkedSource_BOX,
+ PreText: "[",
+ PostText: "]",
+ Child: []*cpb.MarkedSource{{
+ Kind: cpb.MarkedSource_PARAMETER_LOOKUP_BY_PARAM,
+ LookupIndex: 1,
+ }},
+ PostChildText: ", ",
+ }},
+ }
)
func arrayTAppMS(length int64) *cpb.MarkedSource {
diff --git a/kythe/go/indexer/testdata/basic/anchors.go b/kythe/go/indexer/testdata/basic/anchors.go
index b7206eb21..006ce7e09 100644
--- a/kythe/go/indexer/testdata/basic/anchors.go
+++ b/kythe/go/indexer/testdata/basic/anchors.go
@@ -1,8 +1,8 @@
// Package anchors verifies that anchors have their language set.
//
-//- @"anchors"=vname(_,_,_,_,"go") defines/binding Pkg
-//- Pkg.node/kind package
+// - @"anchors"=vname(_,_,_,_,"go") defines/binding Pkg
+// - Pkg.node/kind package
package anchors
-//- @x=vname(_,_,_,_,"go") defines/binding _X
+// - @x=vname(_,_,_,_,"go") defines/binding _X
var x int
diff --git a/kythe/go/indexer/testdata/basic/anonref.go b/kythe/go/indexer/testdata/basic/anonref.go
new file mode 100644
index 000000000..4f135e2ca
--- /dev/null
+++ b/kythe/go/indexer/testdata/basic/anonref.go
@@ -0,0 +1,9 @@
+package anonref
+
+import (
+ anonymous "kythe/go/indexer/anonymous_test"
+)
+
+// - @Struct ref Struct
+// - @V ref V
+var _ = anonymous.Struct.V
diff --git a/kythe/go/indexer/testdata/basic/anonymous.go b/kythe/go/indexer/testdata/basic/anonymous.go
index 902166b3a..449dc619a 100644
--- a/kythe/go/indexer/testdata/basic/anonymous.go
+++ b/kythe/go/indexer/testdata/basic/anonymous.go
@@ -3,11 +3,10 @@
// Parameters and variables can be declared with anonymous types that are
// specified as part of their declaration. In the body of functions and of
// initializers, those fields may have references that we'd like to capture.
-//
package anon
-//- @planx defines/binding Planx
-//- Planx.node/kind variable
+// - @planx defines/binding Planx
+// - Planx.node/kind variable
func f(planx struct {
//- T.node/kind variable
//- T.subkind field
@@ -28,7 +27,9 @@ func f(planx struct {
return planx.T
}
-var v = struct {
+// - @Struct defines/binding Struct
+// - Struct.node/kind variable
+var Struct = struct {
//- @V defines/binding V
//- V.node/kind variable
//- V.subkind field
@@ -38,8 +39,8 @@ var v = struct {
V: 25,
}
-//- @V ref V
-var _ = v.V
+// - @V ref V
+var _ = Struct.V
var w struct {
//- @X defines/binding X
@@ -48,7 +49,7 @@ var w struct {
X uint32
}
-//- @X ref X
+// - @X ref X
var _ = w.X
var y struct {
@@ -67,11 +68,11 @@ var y struct {
Y: 25,
}
-//- @Y ref Y
+// - @Y ref Y
var _ = y.Y
-//- @elt defines/binding Elt
-//- Elt.node/kind variable
+// - @elt defines/binding Elt
+// - Elt.node/kind variable
var g = func(elt struct {
//- @P defines/binding P
//- P.node/kind variable
@@ -83,8 +84,8 @@ var g = func(elt struct {
return len(elt.P)
}
-//- @em defines/binding Em
-//- Em.node/kind record
+// - @em defines/binding Em
+// - Em.node/kind record
type em struct {
v struct {
//- @X defines/binding EmX
@@ -94,8 +95,8 @@ type em struct {
}
}
-//- @api defines/binding API
-//- API.node/kind variable
+// - @api defines/binding API
+// - API.node/kind variable
func h(api interface {
//- @M defines/binding M
//- M.node/kind function
diff --git a/kythe/go/indexer/testdata/basic/filenode.go b/kythe/go/indexer/testdata/basic/filenode.go
index 3876d3054..3420e695f 100644
--- a/kythe/go/indexer/testdata/basic/filenode.go
+++ b/kythe/go/indexer/testdata/basic/filenode.go
@@ -1,8 +1,8 @@
// Package file verifies that a file node is generated by the indexer, and that
// it has the correct relationship to its package.
//
-//- File=vname("", "test", "", "basic/filenode.go", "").node/kind file
-//- @file defines/binding Pkg
+// - File=vname("", "test", "", "basic/filenode.go", "").node/kind file
+// - @file defines/binding Pkg
package file
//- Pkg=vname("package", "test", "", "basic", "go").node/kind package
diff --git a/kythe/go/indexer/testdata/basic/funcall.go b/kythe/go/indexer/testdata/basic/funcall.go
index aba82c141..3966123d5 100644
--- a/kythe/go/indexer/testdata/basic/funcall.go
+++ b/kythe/go/indexer/testdata/basic/funcall.go
@@ -1,5 +1,5 @@
// Package fun tests basic function call references.
-//- @fun defines/binding Pkg
+// - @fun defines/binding Pkg
package fun
//- @"\"os/exec\"" ref/imports OSExec
@@ -9,20 +9,20 @@ import "os/exec"
//- Init childof Pkg
//- Init.node/kind function
-//- @F defines/binding Fun = vname("func F", "test", _, "fun", "go")
+// - @F defines/binding Fun = vname("func F", "test", _, "fun", "go")
func F() int { return 0 }
type T struct{}
-//- @M defines/binding Meth=vname("method T.M", "test", _, "fun", "go")
+// - @M defines/binding Meth=vname("method T.M", "test", _, "fun", "go")
func (p *T) M() {}
-//- @F ref Fun
-//- TCall=@"F()" ref/call Fun
-//- TCall childof Init
+// - @F ref Fun
+// - TCall=@"F()" ref/call Fun
+// - TCall childof Init
var _ = F()
-//- @init defines/binding InitFunc = vname("func init#1", "test", _, "fun", "go")
+// - @init defines/binding InitFunc = vname("func init#1", "test", _, "fun", "go")
func init() {
//- @F ref Fun
//- FCall=@"F()" ref/call Fun
diff --git a/kythe/go/indexer/testdata/basic/functions.go b/kythe/go/indexer/testdata/basic/functions.go
index b635b8491..26d5a4a0a 100644
--- a/kythe/go/indexer/testdata/basic/functions.go
+++ b/kythe/go/indexer/testdata/basic/functions.go
@@ -7,52 +7,52 @@ package functions
// Anonymous functions do not get binding anchors.
//
-//- @"func(b bool) {}" defines
-//- Anon1 = vname("package.<init>@59$1", "test", _, "fun", "go")
-//- Anon1 param.0 _AnonPB
-//- Anon1.node/kind function
+// - @"func(b bool) {}" defines
+// - Anon1 = vname("package.<init>@59$1", "test", _, "fun", "go")
+// - Anon1 param.0 _AnonPB
+// - Anon1.node/kind function
var _ = func(b bool) {}
-//- @"func(z int) {}" defines
-//- Anon2 = vname("package.<init>@59$2", "test", _, "fun", "go")
-//- Anon2 param.0 _AnonPZ
-//- Anon2.node/kind function
+// - @"func(z int) {}" defines
+// - Anon2 = vname("package.<init>@59$2", "test", _, "fun", "go")
+// - Anon2 param.0 _AnonPZ
+// - Anon2.node/kind function
var _ = func(z int) {}
-//- @"func F(input int) (output int) { return 17 }" defines Fun
-//- @F defines/binding Fun
-//-
-//- @input defines/binding FunInput
-//- Fun param.0 FunInput
-//- FunInput childof Fun
-//-
-//- @output defines/binding FunOutput
-//- FunOutput childof Fun
+// - @"func F(input int) (output int) { return 17 }" defines Fun
+// - @F defines/binding Fun
+// -
+// - @input defines/binding FunInput
+// - Fun param.0 FunInput
+// - FunInput childof Fun
+// -
+// - @output defines/binding FunOutput
+// - FunOutput childof Fun
func F(input int) (output int) { return 17 }
type T struct{}
-//- @"func (recv *T) M(input int) (output int) { return 34 }" defines Meth
-//- @M defines/binding Meth
-//-
-//- @recv defines/binding Recv
-//- Recv.node/kind variable
-//- Meth param.0 Recv
-//- Recv childof Meth
-//-
-//- @input defines/binding MethInput
-//- MethInput.node/kind variable
-//- Meth param.1 MethInput
-//- MethInput childof Meth
-//-
-//- @output defines/binding MethOutput
-//- MethOutput.node/kind variable
-//- MethOutput childof Meth
-//- Meth childof _Struct
+// - @"func (recv *T) M(input int) (output int) { return 34 }" defines Meth
+// - @M defines/binding Meth
+// -
+// - @recv defines/binding Recv
+// - Recv.node/kind variable
+// - Meth param.0 Recv
+// - Recv childof Meth
+// -
+// - @input defines/binding MethInput
+// - MethInput.node/kind variable
+// - Meth param.1 MethInput
+// - MethInput childof Meth
+// -
+// - @output defines/binding MethOutput
+// - MethOutput.node/kind variable
+// - MethOutput childof Meth
+// - Meth childof _Struct
func (recv *T) M(input int) (output int) { return 34 }
-//- @outer defines/binding Outer
-//- Outer.node/kind function
+// - @outer defines/binding Outer
+// - Outer.node/kind function
func outer() {
//- @"func(q bool) {}" defines Inner = vname("func outer$1", _, _, _, _)
//- Inner param.0 _InnerPQ
@@ -60,8 +60,8 @@ func outer() {
_ = func(q bool) {}
}
-//- @ignore defines/binding Ignore
-//- Ignore param.0 Unnamed
-//- Unnamed.node/kind variable
-//- !{_X defines/binding Unnamed}
+// - @ignore defines/binding Ignore
+// - Ignore param.0 Unnamed
+// - Unnamed.node/kind variable
+// - !{_X defines/binding Unnamed}
func ignore(_ int) bool { return false }
diff --git a/kythe/go/indexer/testdata/basic/imports.go b/kythe/go/indexer/testdata/basic/imports.go
index 11fc9aca1..c14afa222 100644
--- a/kythe/go/indexer/testdata/basic/imports.go
+++ b/kythe/go/indexer/testdata/basic/imports.go
@@ -9,13 +9,10 @@ import (
//- @"\"strconv\"" ref/imports
//- Strconv=vname("package", "golang.org", _, "strconv", "go")
"strconv"
-
- //- @"\"net/http\"" ref/imports
- //- _NetHTTP=vname("package", "golang.org", _, "net/http", "go")
- _ "net/http"
)
-//- @fmt ref Fmt
+// - @fmt ref Fmt
var _ = fmt.Sprint
-//- @strconv ref Strconv
+
+// - @strconv ref Strconv
var _ = strconv.Atoi
diff --git a/kythe/go/indexer/testdata/basic/locals.go b/kythe/go/indexer/testdata/basic/locals.go
index 05777e77c..5b4c85a6c 100644
--- a/kythe/go/indexer/testdata/basic/locals.go
+++ b/kythe/go/indexer/testdata/basic/locals.go
@@ -1,7 +1,7 @@
// Package locals tests bindings in local scopes.
package locals
-//- @foo defines/binding Foo
+// - @foo defines/binding Foo
func foo() {
//- @alpha defines/binding Alpha1
//- Alpha1.node/kind variable
diff --git a/kythe/go/indexer/testdata/basic/packageinit.go b/kythe/go/indexer/testdata/basic/packageinit.go
index 796df7d03..a19413e7a 100644
--- a/kythe/go/indexer/testdata/basic/packageinit.go
+++ b/kythe/go/indexer/testdata/basic/packageinit.go
@@ -8,13 +8,13 @@ import "fmt"
// package initializer, and that said initializer is given a sensible
// definition anchor per http://www.kythe.io/docs/schema/callgraph.html
-//- A=@"fmt.Sprint(27)" ref/call _FmtSprint
-//- A childof PkgInit=vname("package.<init>@107", "test", _, "pkginit", "go")
-//- PkgInit.node/kind function
-//-
-//- InitDef=vname(_, "test", "", "pkginit/packageinit.go", "go")
-//- defines PkgInit
-//- InitDef.node/kind anchor
-//- InitDef.loc/start 0
-//- InitDef.loc/end 0
+// - A=@"fmt.Sprint(27)" ref/call _FmtSprint
+// - A childof PkgInit=vname("package.<init>@107", "test", _, "pkginit", "go")
+// - PkgInit.node/kind function
+// -
+// - InitDef=vname(_, "test", "", "pkginit/packageinit.go", "go")
+// - defines PkgInit
+// - InitDef.node/kind anchor
+// - InitDef.loc/start 0
+// - InitDef.loc/end 0
var p = fmt.Sprint(27)
diff --git a/kythe/go/indexer/testdata/basic/packages.go b/kythe/go/indexer/testdata/basic/packages.go
index eb9c28f85..bf767f441 100644
--- a/kythe/go/indexer/testdata/basic/packages.go
+++ b/kythe/go/indexer/testdata/basic/packages.go
@@ -1,5 +1,5 @@
// Package pkg verifies that the required package structure is created.
-//- @pkg defines/binding Pkg
+// - @pkg defines/binding Pkg
package pkg
//- Pkg=vname("package", "test", _, "pkg", "go").node/kind package
diff --git a/kythe/go/indexer/testdata/basic/satisfies.go b/kythe/go/indexer/testdata/basic/satisfies.go
index 4901bae12..00c8b1f81 100644
--- a/kythe/go/indexer/testdata/basic/satisfies.go
+++ b/kythe/go/indexer/testdata/basic/satisfies.go
@@ -1,7 +1,7 @@
// Package impl tests implementation relationships.
package impl
-//- @Busy defines/binding BusyInterface
+// - @Busy defines/binding BusyInterface
type Busy interface {
//- @Do defines/binding DoMethod
//- DoMethod childof BusyInterface
@@ -12,17 +12,17 @@ type Busy interface {
Be()
}
-//- @Phil defines/binding Phil
-//- Phil satisfies Busy
+// - @Phil defines/binding Phil
+// - Phil satisfies Busy
type Phil int
func (Phil) Do() {}
func (Phil) Be() {}
-//- @Bad1 defines/binding DoOnly
-//- !{ DoOnly satisfies Busy}
+// - @Bad1 defines/binding DoOnly
+// - !{ DoOnly satisfies Busy}
type Bad1 bool
-//- @Bad2 defines/binding BeOnly
-//- !{ BeOnly satisfies Busy}
+// - @Bad2 defines/binding BeOnly
+// - !{ BeOnly satisfies Busy}
type Bad2 float64
diff --git a/kythe/go/indexer/testdata/basic/scopes.go b/kythe/go/indexer/testdata/basic/scopes.go
index 7d8516207..0c8607720 100644
--- a/kythe/go/indexer/testdata/basic/scopes.go
+++ b/kythe/go/indexer/testdata/basic/scopes.go
@@ -1,9 +1,9 @@
package scopes
-//- @Ident defines/binding Ident
+// - @Ident defines/binding Ident
var Ident bool
-//- @F defines/binding F
+// - @F defines/binding F
func F() {
//- IdentRef=@Ident ref Ident
//- IdentRef childof F
diff --git a/kythe/go/indexer/testdata/basic/stdlibimport.go b/kythe/go/indexer/testdata/basic/stdlibimport.go
new file mode 100644
index 000000000..0e78cb7c8
--- /dev/null
+++ b/kythe/go/indexer/testdata/basic/stdlibimport.go
@@ -0,0 +1,9 @@
+package stdlibimport
+
+import (
+ "bytes"
+)
+
+func myFunc() {
+ bytes.NewBuffer(nil)
+}
diff --git a/kythe/go/indexer/testdata/basic/stdliboverride.go b/kythe/go/indexer/testdata/basic/stdliboverride.go
new file mode 100644
index 000000000..e2ab57d32
--- /dev/null
+++ b/kythe/go/indexer/testdata/basic/stdliboverride.go
@@ -0,0 +1,16 @@
+// Package stdliboverride tests that corpus labels are assigned correctly when
+// the --override_stdlib_corpus and --use_compilation_corpus_as_default flags
+// are enabled.
+package stdliboverride
+
+import (
+ //- @"\"bytes\"" ref/imports BYTES=vname("package","STDLIB_OVERRIDE",_,"bytes","go")
+ "bytes"
+)
+
+// - @myFunc=vname(_,"kythe",_,_,"go") defines/binding _MY_FUNC
+func myFunc() {
+ //- @bytes ref BYTES
+ //- @NewBuffer ref vname(_,"STDLIB_OVERRIDE",_,_,"go")
+ bytes.NewBuffer(nil)
+}
diff --git a/kythe/go/indexer/testdata/basic/structref.go b/kythe/go/indexer/testdata/basic/structref.go
index ae0c635d4..afdf0c6a3 100644
--- a/kythe/go/indexer/testdata/basic/structref.go
+++ b/kythe/go/indexer/testdata/basic/structref.go
@@ -11,25 +11,25 @@ import (
// Construct a struct value from another package.
//
-//- @cmd defines/binding Cmd
-//- Cmd.node/kind variable
-//- @exec ref Exec
-//- @"exec.Command(\"blah\")" ref/call ExecCommand
-//- @Command ref ExecCommand
+// - @cmd defines/binding Cmd
+// - Cmd.node/kind variable
+// - @exec ref Exec
+// - @"exec.Command(\"blah\")" ref/call ExecCommand
+// - @Command ref ExecCommand
var cmd = exec.Command("blah")
// Verify that references to the struct's fields work.
//
-//- @ofp defines/binding Out
-//- Out.node/kind variable
-//- @cmd ref Cmd
-//- StdoutRef=@Stdout ref CmdStdout
-//- = vname("field Cmd.Stdout","golang.org","","os/exec","go")
-//- ! {StdoutRef childof _}
+// - @ofp defines/binding Out
+// - Out.node/kind variable
+// - @cmd ref Cmd
+// - StdoutRef=@Stdout ref CmdStdout
+// - = vname("field Cmd.Stdout","golang.org","","os/exec","go")
+// - ! {StdoutRef childof _}
var ofp = cmd.Stdout
-//- @init defines/binding Init
-//- Init.node/kind function
+// - @init defines/binding Init
+// - Init.node/kind function
func init() {
//- @cmd ref Cmd
//- @Stdout ref CmdStdout
diff --git a/kythe/go/indexer/testdata/basic/tappcorpus.go b/kythe/go/indexer/testdata/basic/tappcorpus.go
index b9e5cd4eb..457551603 100644
--- a/kythe/go/indexer/testdata/basic/tappcorpus.go
+++ b/kythe/go/indexer/testdata/basic/tappcorpus.go
@@ -3,7 +3,7 @@ package tappcorpus
// When --use_compilation_corpus_as_default is enabled in the go indexer, tapp
// nodes should use the compilation unit's corpus rather than the empty corpus.
-//- @x defines/binding VarX=vname(_,"kythe",_,_,"go")
-//- VarX typed IntSlice=vname(_,"kythe",_,_,"go")
-//- IntSlice.node/kind tapp
+// - @x defines/binding VarX=vname(_,"kythe",_,_,"go")
+// - VarX typed IntSlice=vname(_,"kythe",_,_,"go")
+// - IntSlice.node/kind tapp
var x []int
diff --git a/kythe/go/indexer/testdata/basic/typespec.go b/kythe/go/indexer/testdata/basic/typespec.go
index b1c3e10eb..c233be8b7 100644
--- a/kythe/go/indexer/testdata/basic/typespec.go
+++ b/kythe/go/indexer/testdata/basic/typespec.go
@@ -3,33 +3,33 @@ package tspec
import "fmt"
-//- @Int defines/binding Int
-//- @"Int int" defines Int
-//- Int.node/kind record
-//- Int.subkind type
+// - @Int defines/binding Int
+// - @"Int int" defines Int
+// - Int.node/kind record
+// - Int.subkind type
type Int int
-//- @Ptr defines/binding Ptr
-//- @"Ptr *bool" defines Ptr
-//- Ptr.node/kind record
-//- Ptr.subkind type
+// - @Ptr defines/binding Ptr
+// - @"Ptr *bool" defines Ptr
+// - Ptr.node/kind record
+// - Ptr.subkind type
type Ptr *bool
-type under struct { z int }
+type under struct{ z int }
-//- @Over defines/binding Over
-//- Over.node/kind record
-//- Over.subkind struct
+// - @Over defines/binding Over
+// - Over.node/kind record
+// - Over.subkind struct
type Over under
-//- @UPtr defines/binding UPtr
-//- UPtr.node/kind record
-//- UPtr.subkind type
+// - @UPtr defines/binding UPtr
+// - UPtr.node/kind record
+// - UPtr.subkind type
type UPtr *under
-//- @Struct defines/binding Struct
-//- Struct.node/kind record
-//- Struct.subkind struct
+// - @Struct defines/binding Struct
+// - Struct.node/kind record
+// - Struct.subkind struct
type Struct struct {
//- @Alpha defines/binding Alpha
//- Alpha.node/kind variable
@@ -44,9 +44,9 @@ type Struct struct {
Bravo int
}
-//- @Embed defines/binding Embed
-//- Embed.node/kind record
-//- Embed.subkind struct
+// - @Embed defines/binding Embed
+// - Embed.node/kind record
+// - Embed.subkind struct
type Embed struct {
// An embedded type from this package.
//
@@ -78,8 +78,8 @@ type Embed struct {
Velocipede struct{}
}
-//- @Thinger defines/binding Thinger
-//- Thinger.node/kind interface
+// - @Thinger defines/binding Thinger
+// - Thinger.node/kind interface
type Thinger interface {
//- @Thing defines/binding Thing
//- Thing.node/kind function
@@ -87,9 +87,9 @@ type Thinger interface {
Thing()
}
-//- @Extender defines/binding Extender
-//- Extender.node/kind interface
-//- Extender extends Thinger
+// - @Extender defines/binding Extender
+// - Extender.node/kind interface
+// - Extender extends Thinger
type Extender interface {
Thinger
diff --git a/kythe/go/indexer/testdata/basic/vardef.go b/kythe/go/indexer/testdata/basic/vardef.go
index a93f4d1ee..87f78be07 100644
--- a/kythe/go/indexer/testdata/basic/vardef.go
+++ b/kythe/go/indexer/testdata/basic/vardef.go
@@ -1,15 +1,15 @@
// Package def tests variable and constant definitions.
-//- @def defines/binding Pkg
+// - @def defines/binding Pkg
package def
//- Pkg.node/kind package
-//- @topLevel defines/binding TopLevel
-//- TopLevel.node/kind variable
-//- TopLevel childof Pkg
+// - @topLevel defines/binding TopLevel
+// - TopLevel.node/kind variable
+// - TopLevel childof Pkg
var topLevel int
-//- @outer defines/binding Outer
+// - @outer defines/binding Outer
func outer() {
//- @stabby defines/binding V
//- V.node/kind variable
@@ -19,7 +19,7 @@ func outer() {
_ = stabby // suppress unused variable error
}
-//- @magic defines/binding Const
-//- Const.node/kind constant
-//- Const childof Pkg
+// - @magic defines/binding Const
+// - Const.node/kind constant
+// - Const childof Pkg
const magic = "beans"
diff --git a/kythe/go/indexer/testdata/code/funcdecl.go b/kythe/go/indexer/testdata/code/funcdecl.go
index a26e1d6eb..d32a918da 100644
--- a/kythe/go/indexer/testdata/code/funcdecl.go
+++ b/kythe/go/indexer/testdata/code/funcdecl.go
@@ -1,61 +1,64 @@
// Package funcdecl tests code facts for a function declaration.
+// - @funcdecl defines/binding Pkg
package funcdecl
-//- @Positive defines/binding Pos
-//- Pos code PosCode
-//-
-//- @x defines/binding Param // see Note [1].
-//- Param code XCode
-//- XCode.post_child_text " "
-//- XCode child.0 XName
-//- XCode child.1 XTypeLookup
-//- XTypeLookup.kind "LOOKUP_BY_TYPED"
-//- Param typed ParamType
-//- ParamType code XType
-//-
-//- XName child.0 XCtx
-//- XName child.1 XId
-//-
-//- XCtx child.0 XPkg
-//- XCtx child.1 XFunc
-//- XPkg.kind "IDENTIFIER"
-//- XPkg.pre_text "funcdecl"
-//- XFunc.kind "IDENTIFIER"
-//- XFunc.pre_text "Positive"
-//- XId.kind "IDENTIFIER"
-//- XId.pre_text "x"
-//-
-//- XType.kind "TYPE"
-//- XType.pre_text "int"
-//-
-//- //--------------------------------------------------
-//- PosCode child.0 PCFunc // func
-//- PosCode child.1 PCName // test/funcdecl.Positive
-//- PosCode child.2 PCParams // parameters
-//- PosCode child.3 PCResult // result
-//-
-//- //--------------------------------------------------
-//- PCFunc.pre_text "func "
-//-
-//- PCName child.0 PCContext
-//- PCName child.1 PCIdent
-//-
-//- PCParams.kind "PARAMETER_LOOKUP_BY_PARAM"
-//- PCParams.pre_text "("
-//- PCParams.post_text ")"
-//- PCParams.post_child_text ", "
-//-
-//- PCResult.pre_text " "
-//- PCResult child.0 PCReturn
-//- PCReturn.pre_text "bool"
-//-
-//- //--------------------------------------------------
-//- PCContext.kind "CONTEXT"
-//- PCContext child.0 PCPkg
-//- PCPkg.pre_text "funcdecl"
-//- PCIdent.kind "IDENTIFIER"
-//- PCIdent.pre_text "Positive"
-//-
+// - @Positive defines/binding Pos
+// - Pos code PosCode
+// -
+// - @x defines/binding Param // see Note [1].
+// - Param code XCode
+// - XCode.post_child_text " "
+// - XCode child.0 XName
+// - XCode child.1 XTypeLookup
+// - XTypeLookup.kind "LOOKUP_BY_TYPED"
+// - Param typed ParamType
+// - ParamType code XType
+// -
+// - XName child.0 XCtx
+// - XName child.1 XId
+// -
+// - XCtx child.0 XPkg
+// - XCtx child.1 XFunc
+// - XPkg.kind "IDENTIFIER"
+// - XPkg.pre_text "funcdecl"
+// - XPkg link Pkg
+// - XFunc.kind "IDENTIFIER"
+// - XFunc.pre_text "Positive"
+// - XId.kind "IDENTIFIER"
+// - XId.pre_text "x"
+// -
+// - XType.kind "TYPE"
+// - XType.pre_text "int"
+// -
+// - //--------------------------------------------------
+// - PosCode child.0 PCFunc // func
+// - PosCode child.1 PCName // test/funcdecl.Positive
+// - PosCode child.2 PCParams // parameters
+// - PosCode child.3 PCResult // result
+// -
+// - //--------------------------------------------------
+// - PCFunc.pre_text "func "
+// -
+// - PCName child.0 PCContext
+// - PCName child.1 PCIdent
+// -
+// - PCParams.kind "PARAMETER_LOOKUP_BY_PARAM"
+// - PCParams.pre_text "("
+// - PCParams.post_text ")"
+// - PCParams.post_child_text ", "
+// -
+// - PCResult.pre_text " "
+// - PCResult child.0 PCReturn
+// - PCReturn.pre_text "bool"
+// -
+// - //--------------------------------------------------
+// - PCContext.kind "CONTEXT"
+// - PCContext child.0 PCPkg
+// - PCPkg.pre_text "funcdecl"
+// - PCPkg link Pkg
+// - PCIdent.kind "IDENTIFIER"
+// - PCIdent.pre_text "Positive"
+// - PCIdent link Pos
func Positive(x int) bool {
return x > 0
}
@@ -64,23 +67,23 @@ func Positive(x int) bool {
// the function will be looked up by the server (or denormalized in post). This
// checks that the explicit signature is generated correctly in situ.
-//- @True defines/binding True
-//- True code TrueCode
-//-
-//- TrueCode child.0 TCFunc
-//- TrueCode child.1 TCName
-//- TrueCode child.2 TCParams
-//- TrueCode child.3 TCResult
-//-
-//- TCFunc.pre_text "func "
-//-
-//- TCName child.0 _TCContext
-//- TCName child.1 _TCIdent
-//-
-//- TCParams.kind "PARAMETER"
-//- TCParams.pre_text "()"
-//-
-//- TCResult.pre_text " "
-//- TCResult child.0 TCReturn
-//- TCReturn.pre_text "bool"
+// - @True defines/binding True
+// - True code TrueCode
+// -
+// - TrueCode child.0 TCFunc
+// - TrueCode child.1 TCName
+// - TrueCode child.2 TCParams
+// - TrueCode child.3 TCResult
+// -
+// - TCFunc.pre_text "func "
+// -
+// - TCName child.0 _TCContext
+// - TCName child.1 _TCIdent
+// -
+// - TCParams.kind "PARAMETER"
+// - TCParams.pre_text "()"
+// -
+// - TCResult.pre_text " "
+// - TCResult child.0 TCReturn
+// - TCReturn.pre_text "bool"
func True() bool { return true }
diff --git a/kythe/go/indexer/testdata/code/interface.go b/kythe/go/indexer/testdata/code/interface.go
index d322a4f0b..c2a9e2d54 100644
--- a/kythe/go/indexer/testdata/code/interface.go
+++ b/kythe/go/indexer/testdata/code/interface.go
@@ -1,15 +1,17 @@
// Package iface tests code facts for an interface type.
+// - @iface defines/binding Pkg
package iface
-//- @Thinger defines/binding Thinger
-//- Thinger code TName
-//-
-//- TName child.0 TContext
-//- TContext.kind "CONTEXT"
-//-
-//- TName child.1 TIdent
-//- TIdent.kind "IDENTIFIER"
-//- TIdent.pre_text "Thinger"
+// - @Thinger defines/binding Thinger
+// - Thinger code TName
+// -
+// - TName child.0 TContext
+// - TContext.kind "CONTEXT"
+// -
+// - TName child.1 TIdent
+// - TIdent.kind "IDENTIFIER"
+// - TIdent.pre_text "Thinger"
+// - TIdent link Thinger
type Thinger interface {
//- @Thing defines/binding Thing
//- Thing code MCode
@@ -38,9 +40,12 @@ type Thinger interface {
//- MContext.kind "CONTEXT"
//- MContext.post_child_text "."
//- MContext child.0 MPkg
+ //- MPkg link Pkg
//- MContext child.1 MOwner
+ //- MOwner link Thinger
//- MPkg.pre_text "test/iface"
//- MOwner.pre_text "Thinger"
//- MIdent.pre_text "Thing"
+ //- MIdent link Thing
Thing()
}
diff --git a/kythe/go/indexer/testdata/code/methdecl.go b/kythe/go/indexer/testdata/code/methdecl.go
index b73860023..e04c50970 100644
--- a/kythe/go/indexer/testdata/code/methdecl.go
+++ b/kythe/go/indexer/testdata/code/methdecl.go
@@ -3,65 +3,65 @@ package methdecl
type w struct{}
-//- @LessThan defines/binding LT
-//- LT code LTCode
-//-
-//- LTCode child.0 LTFunc
-//- LTCode child.1 LTRecv
-//- LTCode child.2 LTName
-//- LTCode child.3 LTParams
-//- LTCode child.4 LTResult
-//-
-//- LTFunc.pre_text "func "
-//-
-//- LTRecv.kind "PARAMETER"
-//- LTRecv.pre_text "("
-//- LTRecv.post_text ") "
-//- LTRecv child.0 LTRType
-//-
-//- LTName child.0 LTContext
-//- LTName child.1 LTIdent
-//-
-//- LTParams.kind "PARAMETER_LOOKUP_BY_PARAM"
-//- LTParams.lookup_index 1
-//- LTParams.pre_text "("
-//- LTParams.post_text ")"
-//- LTParams.post_child_text ", "
-//-
-//- LTResult.pre_text " "
-//- LTResult.kind "TYPE"
-//- LTResult child.0 LTReturn
-//- LTReturn.pre_text "bool"
-//-
-//- LTRType.kind "TYPE"
-//- LTRType.pre_text "*w"
-//-
-//- LTContext.kind "CONTEXT"
-//- LTContext.post_child_text "."
-//- LTContext child.0 LTPkg
-//- LTContext child.1 LTCType
-//- LTPkg.pre_text "methdecl"
-//- LTCType.pre_text "w"
-//- LTIdent.pre_text "LessThan"
-//-
-//- @x defines/binding LTX
-//- LTX code XCode
-//- XCode child.0 XName
-//- XName child.0 XCtx
-//- XCtx.kind "CONTEXT"
-//- XCtx child.0 XPkg
-//- XCtx child.1 XRec
-//- XCtx child.2 XFun
-//- XName child.1 XId
-//- XPkg.kind "IDENTIFIER"
-//- XPkg.pre_text "methdecl"
-//- XRec.kind "IDENTIFIER"
-//- XRec.pre_text "w"
-//- XFun.kind "IDENTIFIER"
-//- XFun.pre_text "LessThan"
-//- XId.kind "IDENTIFIER"
-//- XId.pre_text "x"
-//-
+// - @LessThan defines/binding LT
+// - LT code LTCode
+// -
+// - LTCode child.0 LTFunc
+// - LTCode child.1 LTRecv
+// - LTCode child.2 LTName
+// - LTCode child.3 LTParams
+// - LTCode child.4 LTResult
+// -
+// - LTFunc.pre_text "func "
+// -
+// - LTRecv.kind "PARAMETER"
+// - LTRecv.pre_text "("
+// - LTRecv.post_text ") "
+// - LTRecv child.0 LTRType
+// -
+// - LTName child.0 LTContext
+// - LTName child.1 LTIdent
+// -
+// - LTParams.kind "PARAMETER_LOOKUP_BY_PARAM"
+// - LTParams.lookup_index 1
+// - LTParams.pre_text "("
+// - LTParams.post_text ")"
+// - LTParams.post_child_text ", "
+// -
+// - LTResult.pre_text " "
+// - LTResult.kind "TYPE"
+// - LTResult child.0 LTReturn
+// - LTReturn.pre_text "bool"
+// -
+// - LTRType.kind "TYPE"
+// - LTRType.pre_text "*w"
+// -
+// - LTContext.kind "CONTEXT"
+// - LTContext.post_child_text "."
+// - LTContext child.0 LTPkg
+// - LTContext child.1 LTCType
+// - LTPkg.pre_text "methdecl"
+// - LTCType.pre_text "w"
+// - LTIdent.pre_text "LessThan"
+// -
+// - @x defines/binding LTX
+// - LTX code XCode
+// - XCode child.0 XName
+// - XName child.0 XCtx
+// - XCtx.kind "CONTEXT"
+// - XCtx child.0 XPkg
+// - XCtx child.1 XRec
+// - XCtx child.2 XFun
+// - XName child.1 XId
+// - XPkg.kind "IDENTIFIER"
+// - XPkg.pre_text "methdecl"
+// - XRec.kind "IDENTIFIER"
+// - XRec.pre_text "w"
+// - XFun.kind "IDENTIFIER"
+// - XFun.pre_text "LessThan"
+// - XId.kind "IDENTIFIER"
+// - XId.pre_text "x"
+// -
func (rec *w) LessThan(x int) bool {
return x < 0
}
@@ -71,139 +71,139 @@ type Context interface{}
type FlagSet struct{}
type API struct{}
-//- @Run defines/binding RunFunc
-//- RunFunc code RFCode
-//-
-//- RFCode child.0 RFFunc
-//- RFCode child.1 RFRecv
-//- RFCode child.2 RFName
-//- RFCode child.3 RFParams
-//- RFCode child.4 RFResult
-//-
-//- RFFunc.pre_text "func "
-//-
-//- RFRecv.kind "PARAMETER"
-//- RFRecv.pre_text "("
-//- RFRecv.post_text ") "
-//- RFRecv child.0 RFRType
-//-
-//- RFName child.0 RFContext
-//- RFName child.1 RFIdent
-//-
-//- RFParams.kind "PARAMETER_LOOKUP_BY_PARAM"
-//- RFParams.lookup_index 1
-//- RFParams.pre_text "("
-//- RFParams.post_text ")"
-//- RFParams.post_child_text ", "
-//-
-//- RFResult.pre_text " "
-//- RFResult.kind "TYPE"
-//- RFResult child.0 RFReturn
-//- RFReturn.pre_text "error"
-//-
-//- RFRType.kind "TYPE"
-//- RFRType.pre_text "decorCommand"
-//-
-//- RFContext.kind "CONTEXT"
-//- RFContext.post_child_text "."
-//- RFContext child.0 RFPkg
-//- RFContext child.1 RFCType
-//- RFPkg.pre_text "methdecl"
-//- RFCType.pre_text "decorCommand"
-//- RFIdent.pre_text "Run"
-//-
-//- @ctx defines/binding RFCtx
-//- RFCtx code CtxCode
-//- CtxCode child.0 CtxName
-//- CtxCode child.1 CtxType
-//- CtxName child.0 CtxCtx
-//- CtxCtx.kind "CONTEXT"
-//- CtxCtx child.0 CtxPkg
-//- CtxCtx child.1 CtxRec
-//- CtxCtx child.2 CtxFun
-//- CtxName child.1 CtxId
-//- CtxPkg.kind "IDENTIFIER"
-//- CtxPkg.pre_text "methdecl"
-//- CtxRec.kind "IDENTIFIER"
-//- CtxRec.pre_text "decorCommand"
-//- CtxFun.kind "IDENTIFIER"
-//- CtxFun.pre_text "Run"
-//- CtxId.kind "IDENTIFIER"
-//- CtxId.pre_text "ctx"
-//- CtxType.kind "LOOKUP_BY_TYPED"
-//- CtxType.lookup_index 0
-//-
-//- @Context ref CtxTypeValue
-//- CtxTypeValue code CtxTypeValueCode
-//- CtxTypeValueCode child.0 CtxTypeValueCodeCtx
-//- CtxTypeValueCodeCtx.kind "CONTEXT"
-//- CtxTypeValueCodeCtx.post_child_text "."
-//- CtxTypeValueCodeCtx child.0 CtxTypeValueCodeCtxChild
-//- CtxTypeValueCodeCtxChild.kind "IDENTIFIER"
-//- CtxTypeValueCodeCtxChild.pre_text "methdecl"
-//- CtxTypeValueCode child.1 CtxTypeValueCodeID
-//- CtxTypeValueCodeID.kind "IDENTIFIER"
-//- CtxTypeValueCodeID.pre_text "Context"
-//-
-//- @flag defines/binding RFFlag
-//- RFFlag code FlagCode
-//- FlagCode child.0 FlagName
-//- FlagName child.0 FlagCtx
-//- FlagCtx.kind "CONTEXT"
-//- FlagCtx child.0 FlagPkg
-//- FlagCtx child.1 FlagRec
-//- FlagCtx child.2 FlagFun
-//- FlagName child.1 FlagId
-//- FlagPkg.kind "IDENTIFIER"
-//- FlagPkg.pre_text "methdecl"
-//- FlagRec.kind "IDENTIFIER"
-//- FlagRec.pre_text "decorCommand"
-//- FlagFun.kind "IDENTIFIER"
-//- FlagFun.pre_text "Run"
-//- FlagId.kind "IDENTIFIER"
-//- FlagId.pre_text "flag"
-//-
-//- @FlagSet ref FlagTypeValue
-//- FlagTypeValue code FlagTypeValueCode
-//- FlagTypeValueCode child.0 FlagTypeValueCodeCtx
-//- FlagTypeValueCode child.1 FlagTypeValueCodeID
-//- FlagTypeValueCodeCtx.kind "CONTEXT"
-//- FlagTypeValueCodeCtx.post_child_text "."
-//- FlagTypeValueCodeCtx child.0 FlagTypeValueCodeCtxChild
-//- FlagTypeValueCodeCtxChild.kind "IDENTIFIER"
-//- FlagTypeValueCodeCtxChild.pre_text "methdecl"
-//- FlagTypeValueCodeID.kind "IDENTIFIER"
-//- FlagTypeValueCodeID.pre_text "FlagSet"
-//-
-//- @api defines/binding RFApi
-//- RFApi code ApiCode
-//- ApiCode child.0 ApiName
-//- ApiName child.0 ApiCtx
-//- ApiCtx.kind "CONTEXT"
-//- ApiCtx child.0 ApiPkg
-//- ApiCtx child.1 ApiRec
-//- ApiCtx child.2 ApiFun
-//- ApiName child.1 ApiId
-//- ApiPkg.kind "IDENTIFIER"
-//- ApiPkg.pre_text "methdecl"
-//- ApiRec.kind "IDENTIFIER"
-//- ApiRec.pre_text "decorCommand"
-//- ApiFun.kind "IDENTIFIER"
-//- ApiFun.pre_text "Run"
-//- ApiId.kind "IDENTIFIER"
-//- ApiId.pre_text "api"
-//-
-//- @API ref ApiTypeValue
-//- ApiTypeValue code ApiTypeValueCode
-//- ApiTypeValueCode child.0 ApiTypeValueCodeCtx
-//- ApiTypeValueCode child.1 ApiTypeValueCodeID
-//- ApiTypeValueCodeCtx.kind "CONTEXT"
-//- ApiTypeValueCodeCtx.post_child_text "."
-//- ApiTypeValueCodeCtx child.0 ApiTypeValueCodeCtxChild
-//- ApiTypeValueCodeCtxChild.kind "IDENTIFIER"
-//- ApiTypeValueCodeCtxChild.pre_text "methdecl"
-//- ApiTypeValueCodeID.kind "IDENTIFIER"
-//- ApiTypeValueCodeID.pre_text "API"
+// - @Run defines/binding RunFunc
+// - RunFunc code RFCode
+// -
+// - RFCode child.0 RFFunc
+// - RFCode child.1 RFRecv
+// - RFCode child.2 RFName
+// - RFCode child.3 RFParams
+// - RFCode child.4 RFResult
+// -
+// - RFFunc.pre_text "func "
+// -
+// - RFRecv.kind "PARAMETER"
+// - RFRecv.pre_text "("
+// - RFRecv.post_text ") "
+// - RFRecv child.0 RFRType
+// -
+// - RFName child.0 RFContext
+// - RFName child.1 RFIdent
+// -
+// - RFParams.kind "PARAMETER_LOOKUP_BY_PARAM"
+// - RFParams.lookup_index 1
+// - RFParams.pre_text "("
+// - RFParams.post_text ")"
+// - RFParams.post_child_text ", "
+// -
+// - RFResult.pre_text " "
+// - RFResult.kind "TYPE"
+// - RFResult child.0 RFReturn
+// - RFReturn.pre_text "error"
+// -
+// - RFRType.kind "TYPE"
+// - RFRType.pre_text "decorCommand"
+// -
+// - RFContext.kind "CONTEXT"
+// - RFContext.post_child_text "."
+// - RFContext child.0 RFPkg
+// - RFContext child.1 RFCType
+// - RFPkg.pre_text "methdecl"
+// - RFCType.pre_text "decorCommand"
+// - RFIdent.pre_text "Run"
+// -
+// - @ctx defines/binding RFCtx
+// - RFCtx code CtxCode
+// - CtxCode child.0 CtxName
+// - CtxCode child.1 CtxType
+// - CtxName child.0 CtxCtx
+// - CtxCtx.kind "CONTEXT"
+// - CtxCtx child.0 CtxPkg
+// - CtxCtx child.1 CtxRec
+// - CtxCtx child.2 CtxFun
+// - CtxName child.1 CtxId
+// - CtxPkg.kind "IDENTIFIER"
+// - CtxPkg.pre_text "methdecl"
+// - CtxRec.kind "IDENTIFIER"
+// - CtxRec.pre_text "decorCommand"
+// - CtxFun.kind "IDENTIFIER"
+// - CtxFun.pre_text "Run"
+// - CtxId.kind "IDENTIFIER"
+// - CtxId.pre_text "ctx"
+// - CtxType.kind "LOOKUP_BY_TYPED"
+// - CtxType.lookup_index 0
+// -
+// - @Context ref CtxTypeValue
+// - CtxTypeValue code CtxTypeValueCode
+// - CtxTypeValueCode child.0 CtxTypeValueCodeCtx
+// - CtxTypeValueCodeCtx.kind "CONTEXT"
+// - CtxTypeValueCodeCtx.post_child_text "."
+// - CtxTypeValueCodeCtx child.0 CtxTypeValueCodeCtxChild
+// - CtxTypeValueCodeCtxChild.kind "IDENTIFIER"
+// - CtxTypeValueCodeCtxChild.pre_text "methdecl"
+// - CtxTypeValueCode child.1 CtxTypeValueCodeID
+// - CtxTypeValueCodeID.kind "IDENTIFIER"
+// - CtxTypeValueCodeID.pre_text "Context"
+// -
+// - @flag defines/binding RFFlag
+// - RFFlag code FlagCode
+// - FlagCode child.0 FlagName
+// - FlagName child.0 FlagCtx
+// - FlagCtx.kind "CONTEXT"
+// - FlagCtx child.0 FlagPkg
+// - FlagCtx child.1 FlagRec
+// - FlagCtx child.2 FlagFun
+// - FlagName child.1 FlagId
+// - FlagPkg.kind "IDENTIFIER"
+// - FlagPkg.pre_text "methdecl"
+// - FlagRec.kind "IDENTIFIER"
+// - FlagRec.pre_text "decorCommand"
+// - FlagFun.kind "IDENTIFIER"
+// - FlagFun.pre_text "Run"
+// - FlagId.kind "IDENTIFIER"
+// - FlagId.pre_text "flag"
+// -
+// - @FlagSet ref FlagTypeValue
+// - FlagTypeValue code FlagTypeValueCode
+// - FlagTypeValueCode child.0 FlagTypeValueCodeCtx
+// - FlagTypeValueCode child.1 FlagTypeValueCodeID
+// - FlagTypeValueCodeCtx.kind "CONTEXT"
+// - FlagTypeValueCodeCtx.post_child_text "."
+// - FlagTypeValueCodeCtx child.0 FlagTypeValueCodeCtxChild
+// - FlagTypeValueCodeCtxChild.kind "IDENTIFIER"
+// - FlagTypeValueCodeCtxChild.pre_text "methdecl"
+// - FlagTypeValueCodeID.kind "IDENTIFIER"
+// - FlagTypeValueCodeID.pre_text "FlagSet"
+// -
+// - @api defines/binding RFApi
+// - RFApi code ApiCode
+// - ApiCode child.0 ApiName
+// - ApiName child.0 ApiCtx
+// - ApiCtx.kind "CONTEXT"
+// - ApiCtx child.0 ApiPkg
+// - ApiCtx child.1 ApiRec
+// - ApiCtx child.2 ApiFun
+// - ApiName child.1 ApiId
+// - ApiPkg.kind "IDENTIFIER"
+// - ApiPkg.pre_text "methdecl"
+// - ApiRec.kind "IDENTIFIER"
+// - ApiRec.pre_text "decorCommand"
+// - ApiFun.kind "IDENTIFIER"
+// - ApiFun.pre_text "Run"
+// - ApiId.kind "IDENTIFIER"
+// - ApiId.pre_text "api"
+// -
+// - @API ref ApiTypeValue
+// - ApiTypeValue code ApiTypeValueCode
+// - ApiTypeValueCode child.0 ApiTypeValueCodeCtx
+// - ApiTypeValueCode child.1 ApiTypeValueCodeID
+// - ApiTypeValueCodeCtx.kind "CONTEXT"
+// - ApiTypeValueCodeCtx.post_child_text "."
+// - ApiTypeValueCodeCtx child.0 ApiTypeValueCodeCtxChild
+// - ApiTypeValueCodeCtxChild.kind "IDENTIFIER"
+// - ApiTypeValueCodeCtxChild.pre_text "methdecl"
+// - ApiTypeValueCodeID.kind "IDENTIFIER"
+// - ApiTypeValueCodeID.pre_text "API"
func (c decorCommand) Run(ctx Context, flag *FlagSet, api API) error {
return nil
}
diff --git a/kythe/go/indexer/testdata/code/pkgvar.go b/kythe/go/indexer/testdata/code/pkgvar.go
index 54cf32667..479c44695 100644
--- a/kythe/go/indexer/testdata/code/pkgvar.go
+++ b/kythe/go/indexer/testdata/code/pkgvar.go
@@ -1,26 +1,27 @@
// Package pkgvar tests code facts for package-level variables.
package pkgvar
-//- @V defines/binding Var
-//- Var code VarCode
-//- Var typed VarType
-//- VarType code VType
-//-
-//- VarCode child.0 VName
-//- VarCode child.1 VTyped
-//- VTyped.kind "LOOKUP_BY_TYPED"
-//- VarCode.post_child_text " "
-//-
-//- VName child.0 VContext
-//- VName child.1 VIdent
-//-
-//- VType.kind "TYPE"
-//- VType.pre_text "int"
-//-
-//- VContext.kind "CONTEXT"
-//- VContext child.0 VPkg
-//- VPkg.pre_text "pkgvar"
-//-
-//- VIdent.kind "IDENTIFIER"
-//- VIdent.pre_text "V"
+// - @V defines/binding Var
+// - Var code VarCode
+// - Var typed VarType
+// - VarType code VType
+// -
+// - VarCode child.0 VName
+// - VarCode child.1 VTyped
+// - VTyped.kind "LOOKUP_BY_TYPED"
+// - VarCode.post_child_text " "
+// -
+// - VName child.0 VContext
+// - VName child.1 VIdent
+// -
+// - VType.kind "TYPE"
+// - VType.pre_text "int"
+// -
+// - VContext.kind "CONTEXT"
+// - VContext child.0 VPkg
+// - VPkg.pre_text "pkgvar"
+// -
+// - VIdent.kind "IDENTIFIER"
+// - VIdent.pre_text "V"
+// - VIdent link Var
var V int
diff --git a/kythe/go/indexer/testdata/code/structtype.go b/kythe/go/indexer/testdata/code/structtype.go
index 8e6b12a57..31f04dd53 100644
--- a/kythe/go/indexer/testdata/code/structtype.go
+++ b/kythe/go/indexer/testdata/code/structtype.go
@@ -1,17 +1,17 @@
// Package structtype tests code facts for a named struct type.
package structtype
-//- @T defines/binding Type
-//- Type code TName
-//-
-//- TName child.0 TContext
-//- TName child.1 TIdent
-//-
-//- TContext.kind "CONTEXT"
-//- TContext child.0 TPkg
-//- TPkg.pre_text "structtype"
-//- TIdent.kind "IDENTIFIER"
-//- TIdent.pre_text "T"
+// - @T defines/binding Type
+// - Type code TName
+// -
+// - TName child.0 TContext
+// - TName child.1 TIdent
+// -
+// - TContext.kind "CONTEXT"
+// - TContext child.0 TPkg
+// - TPkg.pre_text "structtype"
+// - TIdent.kind "IDENTIFIER"
+// - TIdent.pre_text "T"
type T struct {
//- @F defines/binding Field
//- Field code FieldCode
diff --git a/kythe/go/indexer/testdata/foo.go b/kythe/go/indexer/testdata/foo.go
index afe030753..be851d15c 100644
--- a/kythe/go/indexer/testdata/foo.go
+++ b/kythe/go/indexer/testdata/foo.go
@@ -1,6 +1,7 @@
// This is the source for the foo.a test data file.
// Compile it manually with:
-// $ go tool compile -o foo.a foo.go
+//
+// $ go tool compile -o foo.a foo.go
package foo
func Foo() int { return 0 }
diff --git a/kythe/go/indexer/testdata/generics/genericdep.go b/kythe/go/indexer/testdata/generics/genericdep.go
new file mode 100644
index 000000000..1586553f5
--- /dev/null
+++ b/kythe/go/indexer/testdata/generics/genericdep.go
@@ -0,0 +1,24 @@
+package genericdep
+
+import (
+ genericinterface "kythe/go/indexer/genericinterface_test"
+)
+
+func main() {
+ c := &genericinterface.Container[string]{"element"}
+ //- @Accept ref ContainerAccept
+ c.Accept("yup")
+ //- @Element ref Element
+ c.Element = ""
+}
+
+// - @Number defines/binding Number
+// - Number satisfies Interface
+type Number struct{ I int }
+
+// - @Accept defines/binding NumberAccept
+// - NumberAccept overrides Accept
+func (n *Number) Accept(i int) { n.I = i }
+
+// - @Interface ref Interface
+var _ genericinterface.Interface[int] = &Number{42}
diff --git a/kythe/go/indexer/testdata/generics/genericfunc.go b/kythe/go/indexer/testdata/generics/genericfunc.go
new file mode 100644
index 000000000..b7ca8bd97
--- /dev/null
+++ b/kythe/go/indexer/testdata/generics/genericfunc.go
@@ -0,0 +1,50 @@
+package genericfunc
+
+func main() {
+ //- @Map ref Func
+ Map([]string{}, func(s string) string { return s })
+}
+
+// - @Map defines/binding Func
+// - Func.node/kind function
+// - @#0T defines/binding TVar
+// - TVar.node/kind tvar
+// - @#0U defines/binding UVar
+// - UVar.node/kind tvar
+// - Func tparam.0 TVar
+// - Func tparam.1 UVar
+func Map[T any, U any](l []T, f func(T) U) []U {
+ //- @U ref UVar
+ res := make([]U, len(l))
+ for i := 0; i < len(l); i++ {
+ //- @T ref TVar
+ var t T = l[i]
+ res[i] = f(t)
+ }
+ return res
+}
+
+//- Func code FuncCode
+//- FuncCode.kind "BOX"
+//- FuncCode child.2 FuncParams
+//- FuncParams.kind "PARAMETER_LOOKUP_BY_TPARAM"
+//- FuncParams.pre_text "["
+//- FuncParams.post_text "]"
+//- FuncParams.post_child_text ", "
+
+// kythe/go/indexer/genericfunc_test.Map.T
+//- TVar code TVarCode
+//- TVarCode.kind "BOX"
+//- TVarCode child.0 C
+//- TVarCode child.1 I
+//- C.kind "CONTEXT"
+//- C.post_child_text "."
+//- C.add_final_list_token "true"
+//- C child.0 Pkg
+//- C child.1 FuncCtxCode
+//- Pkg.kind "IDENTIFIER"
+//- Pkg.pre_text "kythe/go/indexer/genericfunc_test"
+//- FuncCtxCode.kind "IDENTIFIER"
+//- FuncCtxCode.pre_text "Map"
+//- I.kind "IDENTIFIER"
+//- I.pre_text "T"
diff --git a/kythe/go/indexer/testdata/generics/genericinterface.go b/kythe/go/indexer/testdata/generics/genericinterface.go
new file mode 100644
index 000000000..2e7f89ca3
--- /dev/null
+++ b/kythe/go/indexer/testdata/generics/genericinterface.go
@@ -0,0 +1,52 @@
+package genericinterface
+
+// - @Interface defines/binding Interface
+// - Interface.node/kind interface
+// - @T defines/binding TVar
+// - TVar.node/kind tvar
+// - Interface tparam.0 TVar
+type Interface[T any] interface {
+ //- @Accept defines/binding Accept
+ //- @T ref TVar
+ Accept(T)
+}
+
+// - @Thing defines/binding Thing
+// - Thing satisfies Interface
+type Thing struct{ S string }
+
+// - @Accept defines/binding ThingAccept
+// - ThingAccept overrides Accept
+func (t *Thing) Accept(s string) { t.S = s }
+
+// - @Interface ref Interface
+var _ Interface[string] = &Thing{"hello"}
+
+// - @Container defines/binding Container
+// - Container satisfies Interface
+type Container[T any] struct {
+ //- @Element defines/binding Element
+ //- Element.node/kind variable
+ Element T
+}
+
+// - @Accept defines/binding ContainerAccept
+// - ContainerAccept overrides Accept
+func (c *Container[T]) Accept(t T) { c.Element = t }
+
+// kythe/go/indexer/genericinterface_test.Interface.T
+//- TVar code TVarCode
+//- TVarCode.kind "BOX"
+//- TVarCode child.0 C
+//- TVarCode child.1 I
+//- C.kind "CONTEXT"
+//- C.post_child_text "."
+//- C.add_final_list_token "true"
+//- C child.0 Pkg
+//- C child.1 Struct
+//- Pkg.kind "IDENTIFIER"
+//- Pkg.pre_text "kythe/go/indexer/genericinterface_test"
+//- Struct.kind "IDENTIFIER"
+//- Struct.pre_text "Interface"
+//- I.kind "IDENTIFIER"
+//- I.pre_text "T"
diff --git a/kythe/go/indexer/testdata/generics/genericmethod.go b/kythe/go/indexer/testdata/generics/genericmethod.go
new file mode 100644
index 000000000..520dc37dd
--- /dev/null
+++ b/kythe/go/indexer/testdata/generics/genericmethod.go
@@ -0,0 +1,88 @@
+package genericmethod
+
+func main() {
+ c := &Container[string]{"element"}
+ //- @Get ref Get
+ c.Get()
+ //- @Put ref Put
+ c.Put("yup")
+}
+
+// - @Container defines/binding Container
+// - @T defines/binding TVar
+type Container[T any] struct {
+ //- @T ref TVar
+ Element T
+}
+
+// Methods introduce unique tvars
+// TODO(schroederc): relate these to the struct tvar
+// - @Get defines/binding Get
+// - @#0T defines/binding GetTVar
+// - GetTVar.node/kind tvar
+// - @#1T ref GetTVar
+// - !{@#0T ref TVar}
+// - !{@#1T ref TVar}
+func (c *Container[T]) Get() T {
+ //- @T ref GetTVar
+ //- !{@T ref TVar}
+ var res T = c.Element
+ return res
+}
+
+//- Get code GetCode
+//- GetCode.kind "BOX"
+//- GetCode child.1 RecvCode
+//- RecvCode.kind "PARAMETER"
+//- RecvCode child.0 RecvType
+//- RecvType.kind "TYPE"
+//- RecvType.pre_text "*Container[T]"
+
+// And can technically be renamed
+// - @Put defines/binding Put
+// - @#0A defines/binding PutTVar
+// - PutTVar.node/kind tvar
+// - @#1A ref PutTVar
+// - @#2A ref PutTVar
+// - !{@#0A ref GetTVar}
+// - !{@#1A ref GetTVar}
+// - !{@#2A ref GetTVar}
+func (c *Container[A]) Put(t A) A {
+ //- @A ref PutTVar
+ //- !{@A ref GetTVar}
+ var temp A = c.Element
+ c.Element = temp
+ return temp
+}
+
+// - @Interface defines/binding Interface
+type Interface interface {
+ //- @Get defines/binding GetI
+ Get() string
+ //- @Put defines/binding PutI
+ Put(string) string
+
+ //- Container satisfies Interface
+ //- Get overrides GetI
+ //- Put overrides PutI
+}
+
+// kythe/go/indexer/genericmethod_test.Container.Get.T
+//- GetTVar code TVarCode
+//- TVarCode.kind "BOX"
+//- TVarCode child.0 C
+//- TVarCode child.1 I
+//- C.kind "CONTEXT"
+//- C.post_child_text "."
+//- C.add_final_list_token "true"
+//- C child.0 Pkg
+//- C child.1 Struct
+//- C child.2 Method
+//- Pkg.kind "IDENTIFIER"
+//- Pkg.pre_text "kythe/go/indexer/genericmethod_test"
+//- Struct.kind "IDENTIFIER"
+//- Struct.pre_text "Container"
+//- Method.kind "IDENTIFIER"
+//- Method.pre_text "Get"
+//- I.kind "IDENTIFIER"
+//- I.pre_text "T"
diff --git a/kythe/go/indexer/testdata/generics/genericstruct.go b/kythe/go/indexer/testdata/generics/genericstruct.go
new file mode 100644
index 000000000..14bcb85c0
--- /dev/null
+++ b/kythe/go/indexer/testdata/generics/genericstruct.go
@@ -0,0 +1,68 @@
+package genericstruct
+
+func main() {
+ //- @"Container[string]" ref ContainerApp
+ //- @Container ref Container
+ //- @string ref String
+ c := &Container[string]{"element"}
+ //- ContainerApp.node/kind "tapp"
+ //- ContainerApp param.0 Container
+ //- ContainerApp param.1 String
+
+ //- @Element ref Element
+ _ = c.Element
+
+ //- @"Pair[string, int]" ref PairApp
+ //- @Pair ref Pair
+ //- @string ref String
+ //- @int ref Int
+ _ = &Pair[string, int]{"first", 2}
+ //- PairApp.node/kind "tapp"
+ //- PairApp param.0 Pair
+ //- PairApp param.1 String
+ //- PairApp param.2 Int
+}
+
+// - @Container defines/binding Container
+// - Container.node/kind record
+// - @T defines/binding TVar
+// - TVar.node/kind tvar
+// - Container tparam.0 TVar
+type Container[T any] struct {
+ //- @T ref TVar
+ //- @Element defines/binding Element
+ Element T
+
+ //- Element.node/kind variable
+ //- Element.subkind field
+}
+
+// - @T defines/binding TVar2
+// - @U defines/binding UVar
+// - !{@T defines/binding TVar}
+// - !{@T ref TVar}
+type Pair[T any, U any] struct {
+ //- @T ref TVar2
+ //- !{@T defines/binding TVar}
+ //- !{@T ref TVar}
+ First T
+ //- @U ref UVar
+ Second U
+}
+
+// kythe/go/indexer/genericstruct_test.Container.T
+//- TVar code TVarCode
+//- TVarCode.kind "BOX"
+//- TVarCode child.0 C
+//- TVarCode child.1 I
+//- C.kind "CONTEXT"
+//- C.post_child_text "."
+//- C.add_final_list_token "true"
+//- C child.0 Pkg
+//- C child.1 Struct
+//- Pkg.kind "IDENTIFIER"
+//- Pkg.pre_text "kythe/go/indexer/genericstruct_test"
+//- Struct.kind "IDENTIFIER"
+//- Struct.pre_text "Container"
+//- I.kind "IDENTIFIER"
+//- I.pre_text "T"
diff --git a/kythe/go/indexer/testdata/go_indexer_test.bzl b/kythe/go/indexer/testdata/go_indexer_test.bzl
index 065287834..050b4c003 100644
--- a/kythe/go/indexer/testdata/go_indexer_test.bzl
+++ b/kythe/go/indexer/testdata/go_indexer_test.bzl
@@ -30,7 +30,7 @@ load(
# Emit a shell script that sets up the environment needed by the extractor to
# capture dependencies and runs the extractor.
-def _emit_extractor_script(ctx, mode, script, output, srcs, deps, ipath, data):
+def _emit_extractor_script(ctx, mode, script, output, srcs, deps, ipath, data, extra_extractor_args):
tmpdir = output.dirname + "/tmp"
srcroot = tmpdir + "/src"
srcdir = srcroot + "/" + ipath
@@ -63,8 +63,8 @@ def _emit_extractor_script(ctx, mode, script, output, srcs, deps, ipath, data):
goroot = "/".join(ctx.files._sdk_files[0].path.split("/")[:-2])
cmds.append("export GOCACHE=\"$PWD/" + tmpdir + "/cache\"")
cmds.append("export CGO_ENABLED=0")
- cmds.append(" ".join([
- ctx.files._extractor[-1].path,
+
+ args = [ctx.files._extractor[-1].path] + extra_extractor_args + [
"-output",
output.path,
"-goos",
@@ -80,7 +80,8 @@ def _emit_extractor_script(ctx, mode, script, output, srcs, deps, ipath, data):
"-extra_files",
"'%s'" % ",".join(extras),
ipath,
- ]))
+ ]
+ cmds.append(" ".join(args))
f = ctx.actions.declare_file(script)
ctx.actions.write(output = f, content = "\n".join(cmds), is_executable = True)
@@ -109,6 +110,7 @@ def _go_extract(ctx):
deps,
ipath,
data,
+ ctx.attr.extra_extractor_args,
)
extras = []
@@ -148,6 +150,7 @@ go_extract = rule(
allow_files = True,
default = "@go_sdk//:files",
),
+ "extra_extractor_args": attr.string_list(),
},
outputs = {"kzip": "%{name}.kzip"},
toolchains = ["@io_bazel_rules_go//go:toolchain"],
@@ -169,6 +172,9 @@ def _go_entries(ctx):
if ctx.attr.use_compilation_corpus_as_default:
iargs.append("-use_compilation_corpus_as_default")
+ if ctx.attr.override_stdlib_corpus:
+ iargs.append("-override_stdlib_corpus=%s" % ctx.attr.override_stdlib_corpus)
+
# If the test wants linkage metadata, enable support for it in the indexer.
if ctx.attr.metadata_suffix:
iargs += ["-meta", ctx.attr.metadata_suffix]
@@ -204,6 +210,7 @@ go_entries = rule(
# The suffix used to recognize linkage metadata files, if non-empty.
"metadata_suffix": attr.string(default = ""),
"use_compilation_corpus_as_default": attr.bool(default = False),
+ "override_stdlib_corpus": attr.string(default = ""),
# The location of the Go indexer binary.
"_indexer": attr.label(
@@ -224,7 +231,7 @@ def go_verifier_test(
log_entries = False,
has_marked_source = False,
allow_duplicates = False):
- opts = ["--use_file_nodes", "--show_goals", "--check_for_singletons"]
+ opts = ["--use_file_nodes", "--show_goals", "--check_for_singletons", "--goal_regex='\\s*//\\s*-(.*)'"]
if log_entries:
opts.append("--show_protos")
if allow_duplicates or len(deps) > 0:
@@ -252,7 +259,9 @@ def _go_indexer(
emit_anchor_scopes = False,
allow_duplicates = False,
use_compilation_corpus_as_default = False,
- metadata_suffix = ""):
+ override_stdlib_corpus= "",
+ metadata_suffix = "",
+ extra_extractor_args = []):
if importpath == None:
importpath = native.package_name() + "/" + name
lib = name + "_lib"
@@ -267,6 +276,7 @@ def _go_indexer(
name = kzip,
data = data,
library = lib,
+ extra_extractor_args = extra_extractor_args,
)
entries = name + "_entries"
go_entries(
@@ -274,6 +284,7 @@ def _go_indexer(
has_marked_source = has_marked_source,
emit_anchor_scopes = emit_anchor_scopes,
use_compilation_corpus_as_default = use_compilation_corpus_as_default,
+ override_stdlib_corpus = override_stdlib_corpus,
kzip = ":" + kzip,
metadata_suffix = metadata_suffix,
)
@@ -294,7 +305,9 @@ def go_indexer_test(
emit_anchor_scopes = False,
allow_duplicates = False,
use_compilation_corpus_as_default = False,
- metadata_suffix = ""):
+ override_stdlib_corpus= "",
+ metadata_suffix = "",
+ extra_extractor_args = []):
entries = _go_indexer(
name = name,
srcs = srcs,
@@ -302,9 +315,11 @@ def go_indexer_test(
has_marked_source = has_marked_source,
emit_anchor_scopes = emit_anchor_scopes,
use_compilation_corpus_as_default = use_compilation_corpus_as_default,
+ override_stdlib_corpus=override_stdlib_corpus,
importpath = import_path,
metadata_suffix = metadata_suffix,
deps = deps,
+ extra_extractor_args = extra_extractor_args,
)
go_verifier_test(
name = name,
diff --git a/kythe/go/indexer/testdata/initcall.go b/kythe/go/indexer/testdata/initcall.go
index 02bdeb488..63444cb71 100644
--- a/kythe/go/indexer/testdata/initcall.go
+++ b/kythe/go/indexer/testdata/initcall.go
@@ -5,7 +5,7 @@ import "fmt"
// Verify that duplicate anchors are not generated for function calls occurring
// in the initializer of a struct field.
-//- @silly defines/binding Silly
+// - @silly defines/binding Silly
type silly struct {
//- @Q defines/binding SField
//- SField childof Silly
diff --git a/kythe/go/indexer/testdata/integration/marked_source.go b/kythe/go/indexer/testdata/integration/marked_source.go
index a2274f519..f66eaac71 100644
--- a/kythe/go/indexer/testdata/integration/marked_source.go
+++ b/kythe/go/indexer/testdata/integration/marked_source.go
@@ -1,9 +1,9 @@
package marked
-//- @A defines/binding AFunc
-//- AFunc.code/rendered "func test/marked_source.A(test/marked_source.a string, test/marked_source.b int)"
-//- AFunc.code/rendered/identifier "A"
-//- AFunc.code/rendered/params "a,b"
+// - @A defines/binding AFunc
+// - AFunc.code/rendered "func test/marked_source.A(test/marked_source.a string, test/marked_source.b int)"
+// - AFunc.code/rendered/identifier "A"
+// - AFunc.code/rendered/params "a,b"
func A(a string, b int) {}
func B() { A("hello", 42) }
diff --git a/kythe/go/indexer/testdata/override.go b/kythe/go/indexer/testdata/override.go
index f038d7a19..fb7302a88 100644
--- a/kythe/go/indexer/testdata/override.go
+++ b/kythe/go/indexer/testdata/override.go
@@ -7,8 +7,8 @@ import (
"strings"
)
-//- @Thinger defines/binding Thinger
-//- Thinger.node/kind interface
+// - @Thinger defines/binding Thinger
+// - Thinger.node/kind interface
type Thinger interface {
//- @Thing defines/binding AbstractThing
//- Thing.node/kind function
@@ -17,9 +17,9 @@ type Thinger interface {
Thing()
}
-//- @Stuffer defines/binding Stuffer
-//- Stuffer.node/kind interface
-//- Stuffer extends Thinger
+// - @Stuffer defines/binding Stuffer
+// - Stuffer.node/kind interface
+// - Stuffer extends Thinger
type Stuffer interface {
Thinger
@@ -30,55 +30,55 @@ type Stuffer interface {
Stuff()
}
-//- @foo defines/binding Foo
-//- Foo.node/kind record
-//- Foo satisfies Thinger
-//- Foo satisfies Stuffer
+// - @foo defines/binding Foo
+// - Foo.node/kind record
+// - Foo satisfies Thinger
+// - Foo satisfies Stuffer
type foo struct{}
-//- @Thing defines/binding ConcreteThing
-//- ConcreteThing.node/kind function
-//- ConcreteThing childof Foo
-//- ConcreteThing overrides AbstractThing
-//- ConcreteThing typed ConcreteThingType
-//- ConcreteThingType satisfies AbstractThingType
-//- !{ ConcreteThing overrides FoilThing }
+// - @Thing defines/binding ConcreteThing
+// - ConcreteThing.node/kind function
+// - ConcreteThing childof Foo
+// - ConcreteThing overrides AbstractThing
+// - ConcreteThing typed ConcreteThingType
+// - ConcreteThingType satisfies AbstractThingType
+// - !{ ConcreteThing overrides FoilThing }
func (foo) Thing() {}
-//- @Stuff defines/binding ConcreteStuff
-//- ConcreteStuff.node/kind function
-//- ConcreteStuff childof Foo
-//- ConcreteStuff overrides AbstractStuff
-//- ConcreteStuff typed ConcreteStuffType
-//- ConcreteStuffType satisfies AbstractStuffType
+// - @Stuff defines/binding ConcreteStuff
+// - ConcreteStuff.node/kind function
+// - ConcreteStuff childof Foo
+// - ConcreteStuff overrides AbstractStuff
+// - ConcreteStuff typed ConcreteStuffType
+// - ConcreteStuffType satisfies AbstractStuffType
func (foo) Stuff() {}
-//- @bar defines/binding Bar
-//- Bar.node/kind record
-//- Bar satisfies Thinger
-//- Bar satisfies vname("type Stringer",_,_,"fmt","go")
-//- !{ Bar satisfies Stuffer }
+// - @bar defines/binding Bar
+// - Bar.node/kind record
+// - Bar satisfies Thinger
+// - Bar satisfies vname("type Stringer",_,_,"fmt","go")
+// - !{ Bar satisfies Stuffer }
type bar struct{}
-//- @Thing defines/binding OtherConcreteThing
-//- OtherConcreteThing.node/kind function
-//- OtherConcreteThing childof Bar
-//- OtherConcreteThing overrides AbstractThing
-//- !{ OtherConcreteThing overrides FoilThing }
+// - @Thing defines/binding OtherConcreteThing
+// - OtherConcreteThing.node/kind function
+// - OtherConcreteThing childof Bar
+// - OtherConcreteThing overrides AbstractThing
+// - !{ OtherConcreteThing overrides FoilThing }
func (*bar) Thing() {}
-//- @String defines/binding String
-//- String.node/kind function
-//- String childof Bar
-//- String overrides vname("method Stringer.String",_,_,"fmt","go")
+// - @String defines/binding String
+// - String.node/kind function
+// - String childof Bar
+// - String overrides vname("method Stringer.String",_,_,"fmt","go")
func (*bar) String() string { return "" }
// Foil has a method with the same name as Thinger, but is not a compatible
// type signature. We use this to verify that we don't try to emit override
// edges unless the assignability check passes.
//
-//- @Foil defines/binding Foil
-//- Foil.node/kind interface
+// - @Foil defines/binding Foil
+// - Foil.node/kind interface
type Foil interface {
//- @Thing defines/binding FoilThing
//- FoilThing.node/kind function
@@ -86,9 +86,9 @@ type Foil interface {
Thing(bool)
}
-//- @Grower defines/binding Grower
-//- Grower.node/kind interface
-//- StringBuilder satisfies Grower
+// - @Grower defines/binding Grower
+// - Grower.node/kind interface
+// - StringBuilder satisfies Grower
type Grower interface {
//- @Grow defines/binding Grow
//- Grow.node/kind function
@@ -97,8 +97,8 @@ type Grower interface {
//- StringBuilderGrow overrides Grow
}
-//- @Builder ref StringBuilder
+// - @Builder ref StringBuilder
var _ Grower = &strings.Builder{}
-//- @Grow ref StringBuilderGrow
+// - @Grow ref StringBuilderGrow
func init() { (&strings.Builder{}).Grow(10) }
diff --git a/kythe/go/indexer/testdata/structinit.go b/kythe/go/indexer/testdata/structinit.go
index 86112894b..b8d0768ea 100644
--- a/kythe/go/indexer/testdata/structinit.go
+++ b/kythe/go/indexer/testdata/structinit.go
@@ -1,8 +1,8 @@
package structinit
-//- @Inky defines/binding Inky
-//- Inky.node/kind record
-//- Inky.subkind struct
+// - @Inky defines/binding Inky
+// - Inky.node/kind record
+// - Inky.subkind struct
type Inky struct {
//- @Pinky defines/binding Pinky
//- Pinky.node/kind variable
diff --git a/kythe/go/indexer/testdata/syntax.go b/kythe/go/indexer/testdata/syntax.go
index feee02ff0..c70b4d575 100644
--- a/kythe/go/indexer/testdata/syntax.go
+++ b/kythe/go/indexer/testdata/syntax.go
@@ -2,7 +2,6 @@
// handle correctly. This test "passes" if the indexer doesn't crash.
package syntax
-
type oldStruct struct {
n int
}
diff --git a/kythe/go/indexer/testdata/types.go b/kythe/go/indexer/testdata/types.go
index eb87b6026..439512d98 100644
--- a/kythe/go/indexer/testdata/types.go
+++ b/kythe/go/indexer/testdata/types.go
@@ -154,62 +154,62 @@ import "fmt"
//- EmptyTuple param.0 TupleBuiltin
//- EmptyTuple code TupleTAppCode
-//- @f0 defines/binding F0
-//- F0 typed NullFuncType
-//- NullFuncType.node/kind tapp
-//- NullFuncType param.0 FnBuiltin
-//- NullFuncType param.1 EmptyTuple
-//- NullFuncType param.2 EmptyTuple
-//- !{ NullFuncType param.3 _ }
-//- NullFuncType code VoidFnTAppCode
+// - @f0 defines/binding F0
+// - F0 typed NullFuncType
+// - NullFuncType.node/kind tapp
+// - NullFuncType param.0 FnBuiltin
+// - NullFuncType param.1 EmptyTuple
+// - NullFuncType param.2 EmptyTuple
+// - !{ NullFuncType param.3 _ }
+// - NullFuncType code VoidFnTAppCode
func f0() {}
-//- @f1 defines/binding F1
-//- F1 typed F1FuncType
-//- F1FuncType.node/kind tapp
-//- F1FuncType param.0 FnBuiltin
-//- F1FuncType param.1 EmptyTuple
-//- F1FuncType param.2 EmptyTuple
-//- F1FuncType param.3 IntBuiltin
-//- F1FuncType param.4 BoolBuiltin
-//- F1FuncType param.5 StringBuiltin
+// - @f1 defines/binding F1
+// - F1 typed F1FuncType
+// - F1FuncType.node/kind tapp
+// - F1FuncType param.0 FnBuiltin
+// - F1FuncType param.1 EmptyTuple
+// - F1FuncType param.2 EmptyTuple
+// - F1FuncType param.3 IntBuiltin
+// - F1FuncType param.4 BoolBuiltin
+// - F1FuncType param.5 StringBuiltin
func f1(a int, b bool, c string) {}
-//- @f2 defines/binding F2
-//- F2 typed F2FuncType
-//- F2FuncType.node/kind tapp
-//- F2FuncType param.0 FnBuiltin
-//- F2FuncType param.1 IntBuiltin
-//- F2FuncType param.2 EmptyTuple
-//- !{ NullFuncType param.3 _ }
-//- F2FuncType code FnTAppCode
+// - @f2 defines/binding F2
+// - F2 typed F2FuncType
+// - F2FuncType.node/kind tapp
+// - F2FuncType param.0 FnBuiltin
+// - F2FuncType param.1 IntBuiltin
+// - F2FuncType param.2 EmptyTuple
+// - !{ NullFuncType param.3 _ }
+// - F2FuncType code FnTAppCode
func f2() int { return 0 }
-//- @f3 defines/binding F3
-//- F3 typed F3FuncType
-//- F3FuncType.node/kind tapp
-//- F3FuncType param.0 FnBuiltin
-//- F3FuncType param.1 F3Return
-//- F3FuncType param.2 EmptyTuple
-//- F3Return.node/kind tapp
-//- F3Return param.0 TupleBuiltin
-//- F3Return param.1 IntBuiltin
-//- F3Return param.2 BoolBuiltin
-//- !{ NullFuncType param.3 _ }
+// - @f3 defines/binding F3
+// - F3 typed F3FuncType
+// - F3FuncType.node/kind tapp
+// - F3FuncType param.0 FnBuiltin
+// - F3FuncType param.1 F3Return
+// - F3FuncType param.2 EmptyTuple
+// - F3Return.node/kind tapp
+// - F3Return param.0 TupleBuiltin
+// - F3Return param.1 IntBuiltin
+// - F3Return param.2 BoolBuiltin
+// - !{ NullFuncType param.3 _ }
func f3() (int, bool) { return 0, false }
-//- @f4 defines/binding F4
-//- F4 typed F4FuncType
-//- F4FuncType.node/kind tapp
-//- F4FuncType param.0 FnBuiltin
-//- F4FuncType param.1 EmptyTuple
-//- F4FuncType param.2 EmptyTuple
-//- F4FuncType param.3 IntBuiltin
-//- F4FuncType param.4 VariadicInt
-//- VariadicInt.node/kind tapp
-//- VariadicInt param.0 VariadicBuiltin
-//- VariadicInt param.1 IntBuiltin
-//- VariadicInt code VariadicTAppCode
+// - @f4 defines/binding F4
+// - F4 typed F4FuncType
+// - F4FuncType.node/kind tapp
+// - F4FuncType param.0 FnBuiltin
+// - F4FuncType param.1 EmptyTuple
+// - F4FuncType param.2 EmptyTuple
+// - F4FuncType param.3 IntBuiltin
+// - F4FuncType param.4 VariadicInt
+// - VariadicInt.node/kind tapp
+// - VariadicInt param.0 VariadicBuiltin
+// - VariadicInt param.1 IntBuiltin
+// - VariadicInt code VariadicTAppCode
func f4(a int, b ...int) {}
func paramTypes(
@@ -231,12 +231,12 @@ func retTypes() (
return 0, nil
}
-//- @EmptyStruct defines/binding EmptyStruct
-//- EmptyStruct typed EmptyStruct
+// - @EmptyStruct defines/binding EmptyStruct
+// - EmptyStruct typed EmptyStruct
type EmptyStruct struct{}
-//- @S defines/binding S
-//- S.node/kind record
+// - @S defines/binding S
+// - S.node/kind record
type S struct {
//- @Float64Field defines/binding Float64Field
//- Float64Field.node/kind variable
@@ -310,34 +310,34 @@ type S struct {
SendIntChan chan<- int
}
-//- @sv defines/binding SVar
-//- SVar.node/kind variable
-//- SVar typed S
+// - @sv defines/binding SVar
+// - SVar.node/kind variable
+// - SVar typed S
var sv = S{}
-//- @Method defines/binding Method
-//- Method typed MethodType
-//- MethodType.node/kind tapp
-//- MethodType param.0 FnBuiltin
-//- MethodType param.1 IntBuiltin
-//- MethodType param.2 S
-//- MethodType code MethodTAppCode
+// - @Method defines/binding Method
+// - Method typed MethodType
+// - MethodType.node/kind tapp
+// - MethodType param.0 FnBuiltin
+// - MethodType param.1 IntBuiltin
+// - MethodType param.2 S
+// - MethodType code MethodTAppCode
func (s S) Method() int { return 0 }
-//- @PMethod defines/binding PMethod
-//- PMethod typed PMethodType
-//- PMethodType.node/kind tapp
-//- PMethodType param.0 FnBuiltin
-//- PMethodType param.1 EmptyTuple
-//- PMethodType param.2 SPointer
-//- SPointer.node/kind tapp
-//- SPointer param.0 PointerBuiltin
-//- SPointer param.1 S
-//- MethodType code VoidMethodTAppCode
+// - @PMethod defines/binding PMethod
+// - PMethod typed PMethodType
+// - PMethodType.node/kind tapp
+// - PMethodType param.0 FnBuiltin
+// - PMethodType param.1 EmptyTuple
+// - PMethodType param.2 SPointer
+// - SPointer.node/kind tapp
+// - SPointer param.0 PointerBuiltin
+// - SPointer param.1 S
+// - MethodType code VoidMethodTAppCode
func (s *S) PMethod() {}
-//- @Iter defines/binding Iter
-//- Iter.node/kind interface
+// - @Iter defines/binding Iter
+// - Iter.node/kind interface
type Iter interface {
//- @Method defines/binding IMethod
//- IMethod typed IMethodType
@@ -348,13 +348,13 @@ type Iter interface {
Method() int
}
-//- @iv defines/binding IVar
-//- IVar.node/kind variable
-//- IVar typed Iter
+// - @iv defines/binding IVar
+// - IVar.node/kind variable
+// - IVar typed Iter
var iv Iter
-//- @main defines/binding Main
-//- Main typed NullFuncType
+// - @main defines/binding Main
+// - Main typed NullFuncType
func main() {
//- @i defines/binding LocalAssign
//- LocalAssign.node/kind variable
@@ -397,7 +397,7 @@ func f(
}
// TODO(schroederc): taliases
-//- @StringAlias defines/binding StringAlias
-//- StringAlias.node/kind record
-//- StringAlias typed StringBuiltin
+// - @StringAlias defines/binding StringAlias
+// - StringAlias.node/kind record
+// - StringAlias typed StringBuiltin
type StringAlias = string
diff --git a/kythe/go/indexer/testdata/unsafe.go b/kythe/go/indexer/testdata/unsafe.go
index 2e48ec2d0..5015a892a 100644
--- a/kythe/go/indexer/testdata/unsafe.go
+++ b/kythe/go/indexer/testdata/unsafe.go
@@ -4,8 +4,8 @@ package magic
//- @"\"unsafe\"" ref/imports Unsafe=vname("package", "golang.org", _, "unsafe", "go")
import "unsafe"
-//- @foo defines/binding Foo
-//- Foo.node/kind variable
-//- @unsafe ref Unsafe
-//- @Pointer ref _UnsafePointer
+// - @foo defines/binding Foo
+// - Foo.node/kind variable
+// - @unsafe ref Unsafe
+// - @Pointer ref _UnsafePointer
var foo unsafe.Pointer
diff --git a/kythe/go/languageserver/languageserver.go b/kythe/go/languageserver/languageserver.go
index 2c8ce0342..55c277f7b 100644
--- a/kythe/go/languageserver/languageserver.go
+++ b/kythe/go/languageserver/languageserver.go
@@ -17,8 +17,9 @@
// Package languageserver provides an implementation of the Language Server
// Protocol v3.0 (https://github.com/Microsoft/language-server-protocol)
// This server implements the following capabilities:
-// textDocumentSync (full)
-// referenceProvider
+//
+// textDocumentSync (full)
+// referenceProvider
package languageserver // import "kythe.io/kythe/go/languageserver"
import (
diff --git a/kythe/go/languageserver/pathmap/mapper.go b/kythe/go/languageserver/pathmap/mapper.go
index 6b9287996..92a87124b 100644
--- a/kythe/go/languageserver/pathmap/mapper.go
+++ b/kythe/go/languageserver/pathmap/mapper.go
@@ -39,9 +39,10 @@ type Mapper struct {
// Patterns strings are paths that have named segments that are extracted during
// parsing and populated during generation.
// Example:
-// m := NewMapper("/dir/:segment/home/:rest*")
-// s, err := m.Parse("/dir/foo/home/hello/world") // {"segment": "foo", "rest": "hello/world"}, nil
-// p := m.Generate(s) // /dir/foo/home/hello/world
+//
+// m := NewMapper("/dir/:segment/home/:rest*")
+// s, err := m.Parse("/dir/foo/home/hello/world") // {"segment": "foo", "rest": "hello/world"}, nil
+// p := m.Generate(s) // /dir/foo/home/hello/world
func NewMapper(pat string) (*Mapper, error) {
// All handling below assumes unix-style '/' separated paths
pat = filepath.ToSlash(pat)
diff --git a/kythe/go/platform/analysis/driver/driver_test.go b/kythe/go/platform/analysis/driver/driver_test.go
index ae1302c4a..0f2463acc 100644
--- a/kythe/go/platform/analysis/driver/driver_test.go
+++ b/kythe/go/platform/analysis/driver/driver_test.go
@@ -144,7 +144,7 @@ func TestDriverEmpty(t *testing.T) {
Analyzer: m,
WriteOutput: m.out(),
}
- testutil.FatalOnErrT(t, "Driver error: %v", d.Run(context.Background(), m))
+ testutil.Fatalf(t, "Driver error: %v", d.Run(context.Background(), m))
if len(m.Requests) != 0 {
t.Fatalf("Unexpected AnalysisRequests: %v", m.Requests)
}
@@ -179,7 +179,7 @@ func TestDriver(t *testing.T) {
},
},
}
- testutil.FatalOnErrT(t, "Driver error: %v", d.Run(context.Background(), m))
+ testutil.Fatalf(t, "Driver error: %v", d.Run(context.Background(), m))
if len(m.Requests) != len(m.Compilations) {
t.Errorf("Expected %d AnalysisRequests; found %v", len(m.Compilations), m.Requests)
}
@@ -230,7 +230,7 @@ func TestDriverErrorHandler(t *testing.T) {
},
},
}
- testutil.FatalOnErrT(t, "Driver error: %v", d.Run(context.Background(), m))
+ testutil.Fatalf(t, "Driver error: %v", d.Run(context.Background(), m))
if len(m.Requests) != len(m.Compilations) {
t.Errorf("Expected %d AnalysisRequests; found %v", len(m.Compilations), m.Requests)
}
@@ -269,7 +269,7 @@ func TestDriverSetup(t *testing.T) {
},
},
}
- testutil.FatalOnErrT(t, "Driver error: %v", d.Run(context.Background(), m))
+ testutil.Fatalf(t, "Driver error: %v", d.Run(context.Background(), m))
if len(m.Requests) != len(m.Compilations) {
t.Errorf("Expected %d AnalysisRequests; found %v", len(m.Compilations), m.Requests)
}
@@ -295,7 +295,7 @@ func TestDriverTeardown(t *testing.T) {
},
},
}
- testutil.FatalOnErrT(t, "Driver error: %v", d.Run(context.Background(), m))
+ testutil.Fatalf(t, "Driver error: %v", d.Run(context.Background(), m))
if len(m.Requests) != len(m.Compilations) {
t.Errorf("Expected %d AnalysisRequests; found %v", len(m.Compilations), m.Requests)
}
diff --git a/kythe/go/platform/analysis/proxy/proxy.go b/kythe/go/platform/analysis/proxy/proxy.go
index 70e778082..d185a0dd1 100644
--- a/kythe/go/platform/analysis/proxy/proxy.go
+++ b/kythe/go/platform/analysis/proxy/proxy.go
@@ -28,53 +28,53 @@
//
// The protocol between indexer (X) and proxy (P) is:
//
-// X → P: {"req":"analysis"}<LF>
-// P → X: {"rsp":"ok","args":{"unit":<unit>,"rev":<revision>,"fds":<addr>}}<LF>
-// {"rsp":"error","args":<error>}<LF>
+// X → P: {"req":"analysis"}<LF>
+// P → X: {"rsp":"ok","args":{"unit":<unit>,"rev":<revision>,"fds":<addr>}}<LF>
+// {"rsp":"error","args":<error>}<LF>
//
-// X → P: {"req":"analysis_wire"}<LF>
-// P → X: {"rsp":"ok","args":{"unit":<unit_wire>,"rev":<revision>,"fds":<addr>}}<LF>
-// {"rsp":"error","args":<error>}<LF>
+// X → P: {"req":"analysis_wire"}<LF>
+// P → X: {"rsp":"ok","args":{"unit":<unit_wire>,"rev":<revision>,"fds":<addr>}}<LF>
+// {"rsp":"error","args":<error>}<LF>
//
-// X → P: {"req":"output","args":[<entry>...]}<LF>
-// P → X: {"rsp":"ok"}<LF>
-// {"rsp":"error","args":<error>}<LF>
+// X → P: {"req":"output","args":[<entry>...]}<LF>
+// P → X: {"rsp":"ok"}<LF>
+// {"rsp":"error","args":<error>}<LF>
//
-// X → P: {"req":"output_wire","args":[<entry_wire>...]}<LF>
-// P → X: {"rsp":"ok"}<LF>
-// {"rsp":"error","args":<error>}<LF>
+// X → P: {"req":"output_wire","args":[<entry_wire>...]}<LF>
+// P → X: {"rsp":"ok"}<LF>
+// {"rsp":"error","args":<error>}<LF>
//
-// X → P: {"req":"done","args":{"ok":true,"msg":<error>}}<LF>
-// P → X: {"rsp":"ok"}<LF>
-// {"rsp":"error","args":<error>}<LF>
+// X → P: {"req":"done","args":{"ok":true,"msg":<error>}}<LF>
+// P → X: {"rsp":"ok"}<LF>
+// {"rsp":"error","args":<error>}<LF>
//
-// X → P: {"req":"file","args":{"path":<path>,"digest":<digest>}}<LF>
-// P → X: {"rsp":"ok","args":{"path":<path>,"digest":<digest>,"content":<bytes>}}<LF>
-// {"rsp":"error","args":<error>}<LF>
+// X → P: {"req":"file","args":{"path":<path>,"digest":<digest>}}<LF>
+// P → X: {"rsp":"ok","args":{"path":<path>,"digest":<digest>,"content":<bytes>}}<LF>
+// {"rsp":"error","args":<error>}<LF>
//
// Where:
//
-// <addr> -- service address
-// <bytes> -- BASE-64 encoded bytes (string)
-// <digest> -- file content digest (string)
-// <entry> -- JSON encoded kythe.proto.Entry message
-// <entry_wire> -- BASE-64 encoded kythe.proto.Entry message in wire format (string)
-// <error> -- error diagnostic (string)
-// <path> -- file path (string)
-// <revision> -- revision marker (string)
-// <unit> -- JSON encoded kythe.proto.CompilationUnit message
-// <unit_wire> -- BASE-64 encoded kythe.proto.CompilationUnit message in wire format (string)
-// <LF> -- line feed character (decimal code 10)
+// <addr> -- service address
+// <bytes> -- BASE-64 encoded bytes (string)
+// <digest> -- file content digest (string)
+// <entry> -- JSON encoded kythe.proto.Entry message
+// <entry_wire> -- BASE-64 encoded kythe.proto.Entry message in wire format (string)
+// <error> -- error diagnostic (string)
+// <path> -- file path (string)
+// <revision> -- revision marker (string)
+// <unit> -- JSON encoded kythe.proto.CompilationUnit message
+// <unit_wire> -- BASE-64 encoded kythe.proto.CompilationUnit message in wire format (string)
+// <LF> -- line feed character (decimal code 10)
//
// When rsp="error" in a reply, the args are an error string. The ordinary flow
// for the indexer is:
//
-// {"req":"analysis"} -- to start a new analysis task
-// {"req":"output",...} -- to send outputs for the task
-// {"req":"file",...} -- to fetch required input files.
-// ... (as many times as needed) ...
-// {"req":"done",...} -- to mark the analysis as complete
-// and to report success/failure
+// {"req":"analysis"} -- to start a new analysis task
+// {"req":"output",...} -- to send outputs for the task
+// {"req":"file",...} -- to fetch required input files.
+// ... (as many times as needed) ...
+// {"req":"done",...} -- to mark the analysis as complete
+// and to report success/failure
//
// In case of an indexing error, the indexer is free to terminate the analysis
// early and report {"req":"done","args":{"ok":false}} to the driver.
@@ -84,7 +84,6 @@
// as if the indexer had called "done". Subsequent calls to "output" or "done"
// will behave as if no analysis is in progress. The indexer is free at that
// point to start a new analysis.
-//
package proxy // import "kythe.io/kythe/go/platform/analysis/proxy"
import (
diff --git a/kythe/go/platform/cache/cache.go b/kythe/go/platform/cache/cache.go
index 39958c202..037df0834 100644
--- a/kythe/go/platform/cache/cache.go
+++ b/kythe/go/platform/cache/cache.go
@@ -228,19 +228,22 @@ func (b *ByteSize) Set(s string) error {
// Returns -1 and an error in case of invalid format.
//
// The supported unit labels are:
-// B * 2^0 bytes
-// K * 2^10 bytes
-// M * 2^20 bytes
-// G * 2^30 bytes
-// T * 2^40 bytes
+//
+// B * 2^0 bytes
+// K * 2^10 bytes
+// M * 2^20 bytes
+// G * 2^30 bytes
+// T * 2^40 bytes
+//
// The labels are case-insensitive ("10g" is the same as "10G")
//
// Examples:
-// ParseByteSize("25") ==> 25
-// ParseByteSize("1k") ==> 1024
-// ParseByteSize("2.5G") ==> 2684354560
-// ParseByteSize("10.3k") ==> 10547
-// ParseByteSize("-45xx") ==> -1 [error]
+//
+// ParseByteSize("25") ==> 25
+// ParseByteSize("1k") ==> 1024
+// ParseByteSize("2.5G") ==> 2684354560
+// ParseByteSize("10.3k") ==> 10547
+// ParseByteSize("-45xx") ==> -1 [error]
func ParseByteSize(s string) (int, error) {
var value float64
var unit string
diff --git a/kythe/go/platform/delimited/delimited.go b/kythe/go/platform/delimited/delimited.go
index e053eda11..67e16d697 100644
--- a/kythe/go/platform/delimited/delimited.go
+++ b/kythe/go/platform/delimited/delimited.go
@@ -34,17 +34,17 @@ import (
// Reader consumes length-delimited records from a byte source.
//
// Usage:
-// rd := delimited.NewReader(r)
-// for {
-// rec, err := rd.Next()
-// if err == io.EOF {
-// break
-// } else if err != nil {
-// log.Fatal(err)
-// }
-// doStuffWith(rec)
-// }
//
+// rd := delimited.NewReader(r)
+// for {
+// rec, err := rd.Next()
+// if err == io.EOF {
+// break
+// } else if err != nil {
+// log.Fatal(err)
+// }
+// doStuffWith(rec)
+// }
type Reader struct {
buf *bufio.Reader
data []byte
@@ -90,13 +90,13 @@ func NewReader(r io.Reader) *Reader { return &Reader{buf: bufio.NewReader(r)} }
// A Writer outputs delimited records to an io.Writer.
//
// Basic usage:
-// wr := delimited.NewWriter(w)
-// for record := range records {
-// if err := wr.Put(record); err != nil {
-// log.Fatal(err)
-// }
-// }
//
+// wr := delimited.NewWriter(w)
+// for record := range records {
+// if err := wr.Put(record); err != nil {
+// log.Fatal(err)
+// }
+// }
type Writer struct {
w io.Writer
}
diff --git a/kythe/go/platform/kcd/kcd.go b/kythe/go/platform/kcd/kcd.go
index ceead5fd0..276119082 100644
--- a/kythe/go/platform/kcd/kcd.go
+++ b/kythe/go/platform/kcd/kcd.go
@@ -18,7 +18,6 @@
// implementation of a Kythe compilation database.
//
// Design documentation: kythe/docs/kythe-compilation-database.txt
-//
package kcd // import "kythe.io/kythe/go/platform/kcd"
import (
diff --git a/kythe/go/platform/kindex/kindex.go b/kythe/go/platform/kindex/kindex.go
index 7bbb2e301..4b55a30cb 100644
--- a/kythe/go/platform/kindex/kindex.go
+++ b/kythe/go/platform/kindex/kindex.go
@@ -18,14 +18,16 @@
// standalone CompilationUnits with all of their required inputs.
//
// Example: Reading an index file.
-// c, err := kindex.Open("path/to/unit.kindex")
-// if err != nil {
-// log.Fatal(err)
-// }
+//
+// c, err := kindex.Open("path/to/unit.kindex")
+// if err != nil {
+// log.Fatal(err)
+// }
//
// Example: Writing an index file.
-// var buf bytes.Buffer
-// c.WriteTo(&buf)
+//
+// var buf bytes.Buffer
+// c.WriteTo(&buf)
//
// On disk, a kindex file is a GZip compressed stream of varint-prefixed data
// blocks containing wire-format protobuf messages. The first message is a
diff --git a/kythe/go/platform/kzip/info/info.go b/kythe/go/platform/kzip/info/info.go
index cd0afa61e..c12c431ad 100644
--- a/kythe/go/platform/kzip/info/info.go
+++ b/kythe/go/platform/kzip/info/info.go
@@ -20,6 +20,7 @@ package info // import "kythe.io/kythe/go/platform/kzip/info"
import (
"fmt"
"log"
+ "path/filepath"
"strings"
"bitbucket.org/creachadair/stringset"
@@ -48,9 +49,10 @@ func KzipInfo(f kzip.File, fileSize int64, scanOpts ...kzip.ScanOption) (*apb.Kz
// Accumulator is used to build a summary of a collection of compilation units.
// Usage:
-// a := NewAccumulator(fileSize)
-// a.Accumulate(unit) // call for each compilation unit
-// info := a.Get() // get the resulting KzipInfo
+//
+// a := NewAccumulator(fileSize)
+// a.Accumulate(unit) // call for each compilation unit
+// info := a.Get() // get the resulting KzipInfo
type Accumulator struct {
*apb.KzipInfo
}
@@ -69,7 +71,12 @@ func NewAccumulator(fileSize int64) *Accumulator {
// Accumulate should be called for each unit in the kzip so its counts can be
// recorded.
func (a *Accumulator) Accumulate(u *kzip.Unit) {
- srcs := stringset.New(u.Proto.SourceFile...)
+ // Set of canonicalized source file paths in the kzip
+ srcs := stringset.New()
+ for _, p := range u.Proto.SourceFile {
+ srcs.Add(filepath.Clean(p))
+ }
+
cuLang := u.Proto.GetVName().GetLanguage()
if cuLang == "" {
msg := fmt.Sprintf("CU does not specify a language %v", u.Proto.GetVName())
@@ -78,10 +85,11 @@ func (a *Accumulator) Accumulate(u *kzip.Unit) {
}
var srcCorpora stringset.Set
+ var absPaths stringset.Set
srcsWithRI := stringset.New()
for _, ri := range u.Proto.RequiredInput {
if strings.HasPrefix(ri.GetVName().GetPath(), "/") && !strings.HasPrefix(ri.GetVName().GetPath(), "/kythe_builtins/") {
- a.KzipInfo.AbsolutePaths = append(a.KzipInfo.AbsolutePaths, ri.GetVName().GetPath())
+ absPaths.Add(ri.GetVName().GetPath())
}
riCorpus := requiredInputCorpus(u, ri)
@@ -92,10 +100,15 @@ func (a *Accumulator) Accumulate(u *kzip.Unit) {
return
}
requiredInputInfo(riCorpus, cuLang, a.KzipInfo).Count++
- if srcs.Contains(ri.Info.Path) {
+ // canonicalize required_input path before checking against source
+ // files. In some cases, required_input paths may be non-canonical due
+ // to compiler idiosyncrasies (ahem c++), but it's ok to canonicalize
+ // for the purposes of this validation check.
+ normalizedInputPath := filepath.Clean(ri.Info.Path)
+ if srcs.Contains(normalizedInputPath) {
sourceInfo(riCorpus, cuLang, a.KzipInfo).Count++
srcCorpora.Add(riCorpus)
- srcsWithRI.Add(ri.Info.Path)
+ srcsWithRI.Add(normalizedInputPath)
}
}
srcsWithoutRI := srcs.Diff(srcsWithRI)
@@ -107,6 +120,8 @@ func (a *Accumulator) Accumulate(u *kzip.Unit) {
// This is a warning for now, but may become an error.
log.Printf("Multiple corpora in unit. unit vname={%v}; src corpora=%v; srcs=%v", u.Proto.GetVName(), srcCorpora, u.Proto.SourceFile)
}
+
+ a.KzipInfo.AbsolutePaths = absPaths.Elements()
}
// Get returns the final KzipInfo after info from each unit in the kzip has been
@@ -172,7 +187,7 @@ func MergeKzipInfo(infos []*apb.KzipInfo) *apb.KzipInfo {
}
kzipInfo.CriticalKzipErrors = append(kzipInfo.GetCriticalKzipErrors(), i.GetCriticalKzipErrors()...)
kzipInfo.Size += i.Size
- kzipInfo.AbsolutePaths = append(kzipInfo.AbsolutePaths, i.AbsolutePaths...)
+ kzipInfo.AbsolutePaths = stringset.New(kzipInfo.AbsolutePaths...).Union(stringset.New(i.AbsolutePaths...)).Elements()
}
return kzipInfo
}
diff --git a/kythe/go/platform/kzip/info/info_test.go b/kythe/go/platform/kzip/info/info_test.go
index 20042e067..6a37fd355 100644
--- a/kythe/go/platform/kzip/info/info_test.go
+++ b/kythe/go/platform/kzip/info/info_test.go
@@ -215,6 +215,45 @@ var infoTests = []struct {
CriticalKzipErrors: []string{"unable to determine corpus for required_input \"file1.py\" in CU language:\"python\""},
},
},
+
+ // kzip info checks that each source file has a corresponding required_input
+ // entry. This test case checks that the required_input path is normalized
+ // before doing the check.
+ {
+ &apb.CompilationUnit{
+ VName: &spb.VName{Language: "c++"},
+ RequiredInput: []*apb.CompilationUnit_FileInput{
+ {
+ VName: &spb.VName{
+ Language: "c++",
+ Corpus: "kythe",
+ Path: "kythe/cxx/verifier/parser.yy.cc",
+ Root: "bazel-out/bin",
+ },
+ Info: &apb.FileInfo{
+ Path: "bazel-out/k8-fastbuild/bin/kythe/cxx/verifier/../../../../../../bazel-out/k8-fastbuild/bin/kythe/cxx/verifier/parser.yy.cc",
+ },
+ },
+ },
+ SourceFile: []string{"bazel-out/k8-fastbuild/bin/kythe/cxx/verifier/parser.yy.cc"},
+ },
+ &apb.KzipInfo{
+ Corpora: map[string]*apb.KzipInfo_CorpusInfo{
+ "kythe": {
+ LanguageRequiredInputs: map[string]*apb.KzipInfo_CorpusInfo_RequiredInputs{
+ "c++": {
+ Count: 1,
+ },
+ },
+ LanguageSources: map[string]*apb.KzipInfo_CorpusInfo_RequiredInputs{
+ "c++": {
+ Count: 1,
+ },
+ },
+ },
+ },
+ },
+ },
}
func TestInfo(t *testing.T) {
diff --git a/kythe/go/platform/kzip/kzip.go b/kythe/go/platform/kzip/kzip.go
index 62dea63d6..f5d15d0fd 100644
--- a/kythe/go/platform/kzip/kzip.go
+++ b/kythe/go/platform/kzip/kzip.go
@@ -22,43 +22,42 @@
//
// Reading an Archive:
//
-// r, err := kzip.NewReader(file, size)
-// ...
+// r, err := kzip.NewReader(file, size)
+// ...
//
-// // Look up a compilation record by its digest.
-// unit, err := r.Lookup(unitDigest)
-// ...
+// // Look up a compilation record by its digest.
+// unit, err := r.Lookup(unitDigest)
+// ...
//
-// // Scan all the compilation records stored.
-// err := r.Scan(func(unit *kzip.Unit) error {
-// if hasInterestingProperty(unit) {
-// doStuffWith(unit)
-// }
-// return nil
-// })
+// // Scan all the compilation records stored.
+// err := r.Scan(func(unit *kzip.Unit) error {
+// if hasInterestingProperty(unit) {
+// doStuffWith(unit)
+// }
+// return nil
+// })
//
-// // Open a reader for a stored file.
-// rc, err := r.Open(fileDigest)
-// ...
-// defer rc.Close()
+// // Open a reader for a stored file.
+// rc, err := r.Open(fileDigest)
+// ...
+// defer rc.Close()
//
-// // Read the complete contents of a stored file.
-// bits, err := r.ReadAll(fileDigest)
-// ...
+// // Read the complete contents of a stored file.
+// bits, err := r.ReadAll(fileDigest)
+// ...
//
// Writing an Archive:
//
-// w, err := kzip.NewWriter(file)
-// ...
+// w, err := kzip.NewWriter(file)
+// ...
//
-// // Add a compilation record and (optional) index data.
-// udigest, err := w.AddUnit(unit, nil)
-// ...
-//
-// // Add file contents.
-// fdigest, err := w.AddFile(file)
-// ...
+// // Add a compilation record and (optional) index data.
+// udigest, err := w.AddUnit(unit, nil)
+// ...
//
+// // Add file contents.
+// fdigest, err := w.AddFile(file)
+// ...
package kzip // import "kythe.io/kythe/go/platform/kzip"
import (
@@ -191,7 +190,7 @@ func NewReader(r io.ReaderAt, size int64) (*Reader, error) {
if len(archive.File) == 0 {
return nil, errors.New("archive is empty")
} else if fi := archive.File[0].FileInfo(); !fi.IsDir() {
- return nil, errors.New("archive root is not a directory")
+ return nil, fmt.Errorf("archive root directory missing: expected a directory but got %v - see https://kythe.io/docs/kythe-kzip.html#_directory_and_file_layout", archive.File[0].Name)
}
root := archive.File[0].Name
pref, err := unitPrefix(root, archive.File)
diff --git a/kythe/go/platform/tools/entrystream/entrystream.go b/kythe/go/platform/tools/entrystream/entrystream.go
index 7f3069674..f1bf98adc 100644
--- a/kythe/go/platform/tools/entrystream/entrystream.go
+++ b/kythe/go/platform/tools/entrystream/entrystream.go
@@ -18,15 +18,16 @@
// messages. By default, entrystream does nothing to the entry stream.
//
// Examples:
-// $ ... | entrystream # Passes through proto entry stream unchanged
-// $ ... | entrystream --sort # Sorts the entry stream into GraphStore order
-// $ ... | entrystream --write_format=json # Prints entry stream as JSON
-// $ ... | entrystream --entrysets # Prints combined entry sets as JSON
-// $ ... | entrystream --count # Prints the number of entries in the incoming stream
-// $ ... | entrystream --read_format=json # Reads entry stream as JSON and prints a proto stream
//
-// $ ... | entrystream --write_format=riegeli # Writes entry stream as a Riegeli file
-// $ ... | entrystream --read_format=riegeli # Reads the entry stream from a Riegeli file
+// $ ... | entrystream # Passes through proto entry stream unchanged
+// $ ... | entrystream --sort # Sorts the entry stream into GraphStore order
+// $ ... | entrystream --write_format=json # Prints entry stream as JSON
+// $ ... | entrystream --entrysets # Prints combined entry sets as JSON
+// $ ... | entrystream --count # Prints the number of entries in the incoming stream
+// $ ... | entrystream --read_format=json # Reads entry stream as JSON and prints a proto stream
+//
+// $ ... | entrystream --write_format=riegeli # Writes entry stream as a Riegeli file
+// $ ... | entrystream --read_format=riegeli # Reads the entry stream from a Riegeli file
package main
import (
diff --git a/kythe/go/platform/tools/extraction/extractrepo/extractrepo.go b/kythe/go/platform/tools/extraction/extractrepo/extractrepo.go
index 55dc5bb5a..180001832 100644
--- a/kythe/go/platform/tools/extraction/extractrepo/extractrepo.go
+++ b/kythe/go/platform/tools/extraction/extractrepo/extractrepo.go
@@ -19,7 +19,8 @@
// $PATH during execution.
//
// Usage:
-// extractrepo -remote <repo-url> -output <output-file-path> -config [config-file-path]
+//
+// extractrepo -remote <repo-url> -output <output-file-path> -config [config-file-path]
package main
import (
diff --git a/kythe/go/platform/tools/extraction/repotester/repotester.go b/kythe/go/platform/tools/extraction/repotester/repotester.go
index a0e0106c5..87a262f12 100644
--- a/kythe/go/platform/tools/extraction/repotester/repotester.go
+++ b/kythe/go/platform/tools/extraction/repotester/repotester.go
@@ -22,8 +22,9 @@
// format follows kythe.proto.ExtractionConfiguration.
//
// Usage:
-// repotester -repos <comma_delimited,repo_urls> [-config <config_file_path>]
-// repotester -repo_list_file <file> [-config <config_file_path>]
+//
+// repotester -repos <comma_delimited,repo_urls> [-config <config_file_path>]
+// repotester -repo_list_file <file> [-config <config_file_path>]
package main
import (
diff --git a/kythe/go/platform/tools/kzip/filtercmd/BUILD b/kythe/go/platform/tools/kzip/filtercmd/BUILD
index c8f086bf2..a86036b5e 100644
--- a/kythe/go/platform/tools/kzip/filtercmd/BUILD
+++ b/kythe/go/platform/tools/kzip/filtercmd/BUILD
@@ -10,6 +10,7 @@ go_library(
"//kythe/go/platform/tools/kzip/flags",
"//kythe/go/platform/vfs",
"//kythe/go/util/cmdutil",
+ "//kythe/go/util/flagutil",
"@com_github_google_subcommands//:go_default_library",
"@org_bitbucket_creachadair_stringset//:go_default_library",
],
diff --git a/kythe/go/platform/tools/kzip/filtercmd/filtercmd.go b/kythe/go/platform/tools/kzip/filtercmd/filtercmd.go
index 383fa473b..d3285fcac 100644
--- a/kythe/go/platform/tools/kzip/filtercmd/filtercmd.go
+++ b/kythe/go/platform/tools/kzip/filtercmd/filtercmd.go
@@ -29,6 +29,7 @@ import (
"kythe.io/kythe/go/platform/tools/kzip/flags"
"kythe.io/kythe/go/platform/vfs"
"kythe.io/kythe/go/util/cmdutil"
+ "kythe.io/kythe/go/util/flagutil"
"bitbucket.org/creachadair/stringset"
"github.com/google/subcommands"
@@ -37,9 +38,10 @@ import (
type filterCommand struct {
cmdutil.Info
- input string
- output string
- encoding flags.EncodingFlag
+ input string
+ output string
+ encoding flags.EncodingFlag
+ languages flagutil.StringSet
}
// New creates a new subcommand for merging kzip files.
@@ -56,6 +58,7 @@ func (c *filterCommand) SetFlags(fs *flag.FlagSet) {
fs.StringVar(&c.output, "output", "", "Path to output kzip file")
fs.StringVar(&c.input, "input", "", "Path to input kzip file")
fs.Var(&c.encoding, "encoding", "Encoding to use on output, one of JSON, PROTO, or ALL")
+ fs.Var(&c.languages, "languages", "When specified retains only compilation units for given language.")
}
// Execute implements the subcommands interface and filters the input file.
@@ -83,7 +86,20 @@ func (c *filterCommand) Execute(ctx context.Context, fs *flag.FlagSet, _ ...inte
return c.Fail("Error creating temp output: %v", err)
}
units := stringset.New(fs.Args()...)
- if err := filterArchive(ctx, tmpOut, c.input, units, opt); err != nil {
+ langs := stringset.Set(c.languages)
+ var filter func(*kzip.Unit) bool
+ if !units.Empty() && !langs.Empty() {
+ return c.Fail("Error filtering can be done only by either digests or languages but not both simultaneously.")
+ } else if !units.Empty() {
+ filter = func(u *kzip.Unit) bool {
+ return units.Contains(u.Digest)
+ }
+ } else if !langs.Empty() {
+ filter = func(u *kzip.Unit) bool {
+ return langs.Contains(u.Proto.VName.Language)
+ }
+ }
+ if err := filterArchive(ctx, tmpOut, c.input, filter, opt); err != nil {
return c.Fail("Error filtering archives: %v", err)
}
if err := vfs.Rename(ctx, tmpName, c.output); err != nil {
@@ -92,7 +108,7 @@ func (c *filterCommand) Execute(ctx context.Context, fs *flag.FlagSet, _ ...inte
return subcommands.ExitSuccess
}
-func filterArchive(ctx context.Context, out io.WriteCloser, input string, digests stringset.Set, opts ...kzip.WriterOption) error {
+func filterArchive(ctx context.Context, out io.WriteCloser, input string, filter func(*kzip.Unit) bool, opts ...kzip.WriterOption) error {
filesAdded := stringset.New()
f, err := vfs.Open(ctx, input)
@@ -123,7 +139,7 @@ func filterArchive(ctx context.Context, out io.WriteCloser, input string, digest
// scan the input, and for matching units, copy into output
err = rd.Scan(func(u *kzip.Unit) error {
- if !digests.Contains(u.Digest) {
+ if !filter(u) {
// non-matching unit, do not copy
return nil
}
diff --git a/kythe/go/platform/tools/kzip/kzip.go b/kythe/go/platform/tools/kzip/kzip.go
index 8aa45b42d..f6232a283 100644
--- a/kythe/go/platform/tools/kzip/kzip.go
+++ b/kythe/go/platform/tools/kzip/kzip.go
@@ -17,8 +17,9 @@
// Binary kzip provides tools to work with kzip archives.
//
// Examples:
-// # Merge 5 kzip archives into a single file.
-// kzip merge --output output.kzip in{0,1,2,3,4}.kzip
+//
+// # Merge 5 kzip archives into a single file.
+// kzip merge --output output.kzip in{0,1,2,3,4}.kzip
package main
import (
diff --git a/kythe/go/platform/tools/kzip/mergecmd/mergecmd.go b/kythe/go/platform/tools/kzip/mergecmd/mergecmd.go
index 4f63abbda..9f359efdc 100644
--- a/kythe/go/platform/tools/kzip/mergecmd/mergecmd.go
+++ b/kythe/go/platform/tools/kzip/mergecmd/mergecmd.go
@@ -39,11 +39,12 @@ import (
type mergeCommand struct {
cmdutil.Info
- output string
- append bool
- encoding flags.EncodingFlag
- recursive bool
- rules vnameRules
+ output string
+ append bool
+ encoding flags.EncodingFlag
+ recursive bool
+ ignoreDuplicateCUs bool
+ rules vnameRules
}
// New creates a new subcommand for merging kzip files.
@@ -62,6 +63,7 @@ func (c *mergeCommand) SetFlags(fs *flag.FlagSet) {
fs.Var(&c.encoding, "encoding", "Encoding to use on output, one of JSON, PROTO, or ALL")
fs.BoolVar(&c.recursive, "recursive", false, "Recurisvely merge .kzip files from directories")
fs.Var(&c.rules, "rules", "VName rules to apply while merging (optional)")
+ fs.BoolVar(&c.ignoreDuplicateCUs, "ignore_duplicate_cus", false, "Do not fail if we try to add the same CU twice")
}
// Execute implements the subcommands interface and merges the provided files.
@@ -173,6 +175,10 @@ func (c *mergeCommand) mergeInto(ctx context.Context, wr *kzip.Writer, path stri
}
// TODO(schroederc): duplicate compilations with different revisions
_, err = wr.AddUnit(u.Proto, u.Index)
+ if c.ignoreDuplicateCUs && err == kzip.ErrUnitExists {
+ log.Printf("Found duplicate CU: %v", u.Proto.GetDetails())
+ return nil
+ }
return err
})
}
diff --git a/kythe/go/platform/tools/shasum_tool/shasum_tool.go b/kythe/go/platform/tools/shasum_tool/shasum_tool.go
index 0f1597ee5..a315807f4 100644
--- a/kythe/go/platform/tools/shasum_tool/shasum_tool.go
+++ b/kythe/go/platform/tools/shasum_tool/shasum_tool.go
@@ -19,7 +19,8 @@
// This is useful in environments which don't have analogous GNU tools
// installed by default.
// Example:
-// shasum_tool <input_file>
+//
+// shasum_tool <input_file>
package main
import (
diff --git a/kythe/go/platform/vfs/vfs_test.go b/kythe/go/platform/vfs/vfs_test.go
index 43a4b91ee..c4fcf04b5 100644
--- a/kythe/go/platform/vfs/vfs_test.go
+++ b/kythe/go/platform/vfs/vfs_test.go
@@ -51,11 +51,11 @@ func populateFiles(t *testing.T) (string, func()) {
root := filepath.Join(tempDir(), testDataDir)
for _, file := range files {
path := filepath.Join(root, filepath.FromSlash(file))
- testutil.FatalOnErrT(t, "unable to create directory", os.MkdirAll(filepath.Dir(path), 0777))
- testutil.FatalOnErrT(t, "unable to write file", ioutil.WriteFile(path, nil, 0777))
+ testutil.Fatalf(t, "unable to create directory", os.MkdirAll(filepath.Dir(path), 0777))
+ testutil.Fatalf(t, "unable to write file", ioutil.WriteFile(path, nil, 0777))
}
return root, func() {
- testutil.FatalOnErrT(t, "failed to remove test data", os.RemoveAll(root))
+ testutil.Fatalf(t, "failed to remove test data", os.RemoveAll(root))
}
}
@@ -67,10 +67,10 @@ func TestGlobWalker(t *testing.T) {
if len(byglob) == 0 {
t.Fatal("no files found")
}
- testutil.FatalOnErrT(t, "unable to collect files from glob", err)
+ testutil.Fatalf(t, "unable to collect files from glob", err)
bylocal, err := collectFiles(LocalFS{}, root)
- testutil.FatalOnErrT(t, "unable to collect local files", err)
- testutil.FatalOnErrT(t, "local and glob walks differ", testutil.DeepEqual(bylocal, byglob))
+ testutil.Fatalf(t, "unable to collect local files", err)
+ testutil.Fatalf(t, "local and glob walks differ", testutil.DeepEqual(bylocal, byglob))
}
func collectFiles(walk Walker, root string) ([]walkResult, error) {
diff --git a/kythe/go/services/cli/command_decor.go b/kythe/go/services/cli/command_decor.go
index b07fa7c56..51d0e8f49 100644
--- a/kythe/go/services/cli/command_decor.go
+++ b/kythe/go/services/cli/command_decor.go
@@ -56,6 +56,8 @@ type baseDecorCommand struct {
decorSpan string
corpus, root, pathPrefix string
buildConfigs flagutil.StringSet
+
+ workspaceURI string
}
func (c *baseDecorCommand) SetFlags(flag *flag.FlagSet) {
@@ -65,6 +67,7 @@ func (c *baseDecorCommand) SetFlags(flag *flag.FlagSet) {
b\d+-b\d+ -- Byte-offsets
\d+(:\d+)?-\d+(:\d+)? -- Line offsets with optional column offsets
\d+(:\d+)? -- Full line span (with an optional starting column offset)`)
+ flag.StringVar(&c.workspaceURI, "workspace_uri", "", "Workspace URI to patch file decorations")
flag.StringVar(&c.corpus, "corpus", DefaultFileCorpus, "File corpus to use if given a raw path")
flag.StringVar(&c.root, "root", DefaultFileRoot, "File root to use if given a raw path")
flag.StringVar(&c.pathPrefix, "path_prefix", DefaultFilePathPrefix, "File path prefix to use if given a raw path (this is prepended directly to the raw path without any joining slashes)")
@@ -102,6 +105,10 @@ func (c baseDecorCommand) baseRequest(flag *flag.FlagSet) (*xpb.DecorationsReque
req.Location.Span = span
}
req.BuildConfig = c.buildConfigs.Elements()
+ if c.workspaceURI != "" {
+ req.Workspace = &xpb.Workspace{Uri: c.workspaceURI}
+ req.PatchAgainstWorkspace = true
+ }
return req, nil
}
diff --git a/kythe/go/services/cli/commands_xrefs.go b/kythe/go/services/cli/commands_xrefs.go
index 90e771eda..7c454c3ba 100644
--- a/kythe/go/services/cli/commands_xrefs.go
+++ b/kythe/go/services/cli/commands_xrefs.go
@@ -38,6 +38,8 @@ type xrefsCommand struct {
nodeFilters flagutil.StringList
buildConfigs flagutil.StringSet
+ workspaceURI string
+
pageToken string
pageSize int
@@ -49,6 +51,10 @@ type xrefsCommand struct {
relatedNodes bool
nodeDefinitions bool
anchorText bool
+
+ resolvedPathFilters flagutil.StringList
+
+ excludeGenerated bool
}
func (xrefsCommand) Name() string { return "xrefs" }
@@ -59,11 +65,14 @@ func (c *xrefsCommand) SetFlags(flag *flag.FlagSet) {
flag.StringVar(&c.declKind, "declarations", "all", "Kind of declarations to return (kinds: all or none)")
flag.StringVar(&c.refKind, "references", "noncall", "Kind of references to return (kinds: all, noncall, call, or none)")
flag.StringVar(&c.callerKind, "callers", "direct", "Kind of callers to return (kinds: direct, overrides, or none)")
+ flag.StringVar(&c.workspaceURI, "workspace_uri", "", "Workspace URI to patch cross-references")
flag.BoolVar(&c.relatedNodes, "related_nodes", true, "Whether to request related nodes")
flag.Var(&c.nodeFilters, "filters", "CSV list of additional fact filters to use when requesting related nodes")
+ flag.Var(&c.resolvedPathFilters, "resolved_path_filters", "CSV list of additional resolved path filters to use")
flag.Var(&c.buildConfigs, "build_config", "CSV set of build configs with which to filter file decorations")
flag.BoolVar(&c.nodeDefinitions, "node_definitions", false, "Whether to request definition locations for related nodes")
flag.BoolVar(&c.anchorText, "anchor_text", false, "Whether to request text for anchors")
+ flag.BoolVar(&c.excludeGenerated, "exclude_generated", false, "Whether to exclude anchors with non-empty roots")
flag.StringVar(&c.pageToken, "page_token", "", "CrossReferences page token")
flag.IntVar(&c.pageSize, "page_size", 0, "Maximum number of cross-references returned (0 lets the service use a sensible default)")
@@ -77,6 +86,24 @@ func (c xrefsCommand) Run(ctx context.Context, flag *flag.FlagSet, api API) erro
AnchorText: c.anchorText,
NodeDefinitions: c.nodeDefinitions,
+
+ CorpusPathFilters: &xpb.CorpusPathFilters{},
+ }
+ if c.workspaceURI != "" {
+ req.Workspace = &xpb.Workspace{Uri: c.workspaceURI}
+ req.PatchAgainstWorkspace = true
+ }
+ if c.excludeGenerated {
+ req.CorpusPathFilters.Filter = append(req.CorpusPathFilters.Filter, &xpb.CorpusPathFilter{
+ Type: xpb.CorpusPathFilter_EXCLUDE,
+ Root: ".+",
+ })
+ }
+ for _, f := range c.resolvedPathFilters {
+ req.CorpusPathFilters.Filter = append(req.CorpusPathFilters.Filter, &xpb.CorpusPathFilter{
+ Type: xpb.CorpusPathFilter_INCLUDE_ONLY,
+ ResolvedPath: f,
+ })
}
if c.relatedNodes {
req.Filter = []string{facts.NodeKind, facts.Subkind}
@@ -217,10 +244,10 @@ func displayRelatedAnchors(kind string, anchors []*xpb.CrossReferencesReply_Rela
return err
}
}
- if _, err := fmt.Fprintf(out, " [%d:%d-%d:%d)\n %q\n",
+ if _, err := fmt.Fprintf(out, " [%d:%d-%d:%d %s)\n %q\n",
a.Anchor.Span.Start.LineNumber, a.Anchor.Span.Start.ColumnOffset,
a.Anchor.Span.End.LineNumber, a.Anchor.Span.End.ColumnOffset,
- string(a.Anchor.Snippet)); err != nil {
+ a.Anchor.GetKind(), string(a.Anchor.Snippet)); err != nil {
return err
}
for _, site := range a.Site {
diff --git a/kythe/go/services/filetree/filetree.go b/kythe/go/services/filetree/filetree.go
index c8b5c431b..995454820 100644
--- a/kythe/go/services/filetree/filetree.go
+++ b/kythe/go/services/filetree/filetree.go
@@ -196,11 +196,11 @@ func WebClient(addr string) Service { return &webClient{addr} }
// RegisterHTTPHandlers registers JSON HTTP handlers with mux using the given
// filetree Service. The following methods with be exposed:
//
-// GET /corpusRoots
-// Response: JSON encoded filetree.CorpusRootsReply
-// GET /dir
-// Request: JSON encoded filetree.DirectoryRequest
-// Response: JSON encoded filetree.DirectoryReply
+// GET /corpusRoots
+// Response: JSON encoded filetree.CorpusRootsReply
+// GET /dir
+// Request: JSON encoded filetree.DirectoryRequest
+// Response: JSON encoded filetree.DirectoryReply
//
// Note: /corpusRoots and /dir will return their responses as serialized
// protobufs if the "proto" query parameter is set.
diff --git a/kythe/go/services/graph/graph.go b/kythe/go/services/graph/graph.go
index e85eb2095..c344520ec 100644
--- a/kythe/go/services/graph/graph.go
+++ b/kythe/go/services/graph/graph.go
@@ -147,12 +147,12 @@ func WebClient(addr string) Service {
// RegisterHTTPHandlers registers JSON HTTP handlers with mux using the given
// graph Service. The following methods with be exposed:
//
-// GET /nodes
-// Request: JSON encoded graph.NodesRequest
-// Response: JSON encoded graph.NodesReply
-// GET /edges
-// Request: JSON encoded graph.EdgesRequest
-// Response: JSON encoded graph.EdgesReply
+// GET /nodes
+// Request: JSON encoded graph.NodesRequest
+// Response: JSON encoded graph.NodesReply
+// GET /edges
+// Request: JSON encoded graph.EdgesRequest
+// Response: JSON encoded graph.EdgesReply
//
// Note: /nodes, and /edges will return their responses as serialized protobufs
// if the "proto" query parameter is set.
diff --git a/kythe/go/services/xrefs/xrefs.go b/kythe/go/services/xrefs/xrefs.go
index 647f8da99..cffe71928 100644
--- a/kythe/go/services/xrefs/xrefs.go
+++ b/kythe/go/services/xrefs/xrefs.go
@@ -286,15 +286,15 @@ func WebClient(addr string) Service {
// RegisterHTTPHandlers registers JSON HTTP handlers with mux using the given
// xrefs Service. The following methods with be exposed:
//
-// GET /decorations
-// Request: JSON encoded xrefs.DecorationsRequest
-// Response: JSON encoded xrefs.DecorationsReply
-// GET /xrefs
-// Request: JSON encoded xrefs.CrossReferencesRequest
-// Response: JSON encoded xrefs.CrossReferencesReply
-// GET /documentation
-// Request: JSON encoded xrefs.DocumentationRequest
-// Response: JSON encoded xrefs.DocumentationReply
+// GET /decorations
+// Request: JSON encoded xrefs.DecorationsRequest
+// Response: JSON encoded xrefs.DecorationsReply
+// GET /xrefs
+// Request: JSON encoded xrefs.CrossReferencesRequest
+// Response: JSON encoded xrefs.CrossReferencesReply
+// GET /documentation
+// Request: JSON encoded xrefs.DocumentationRequest
+// Response: JSON encoded xrefs.DocumentationReply
//
// Note: /nodes, /edges, /decorations, and /xrefs will return their responses as
// serialized protobufs if the "proto" query parameter is set.
diff --git a/kythe/go/serving/explore/explore.go b/kythe/go/serving/explore/explore.go
index 8afd26bdb..66ad5cd21 100644
--- a/kythe/go/serving/explore/explore.go
+++ b/kythe/go/serving/explore/explore.go
@@ -18,10 +18,11 @@
// ExploreService defined in kythe/proto/explore.proto.
//
// Table format:
-// <parent ticket> -> srvpb.Relatives (children)
-// <child ticket> -> srvpb.Relatives (parents)
-// <called ticket> -> srvpb.Callgraph (callers)
-// <calling ticket> -> srvpb.Callgraph (callees)
+//
+// <parent ticket> -> srvpb.Relatives (children)
+// <child ticket> -> srvpb.Relatives (parents)
+// <called ticket> -> srvpb.Callgraph (callers)
+// <calling ticket> -> srvpb.Callgraph (callees)
package explore // import "kythe.io/kythe/go/serving/explore"
import (
diff --git a/kythe/go/serving/explore/explore_test.go b/kythe/go/serving/explore/explore_test.go
index 58518c54e..18e0f3135 100644
--- a/kythe/go/serving/explore/explore_test.go
+++ b/kythe/go/serving/explore/explore_test.go
@@ -147,7 +147,7 @@ func TestChildren_noData(t *testing.T) {
reply, err := svc.Children(ctx, &epb.ChildrenRequest{
Tickets: []string{dne},
})
- testutil.FatalOnErrT(t, "Children error: %v", err)
+ testutil.Fatalf(t, "Children error: %v", err)
if len(reply.InputToChildren) != 0 {
t.Errorf("Expected empty response for missing key, got: %v", reply)
}
@@ -160,7 +160,7 @@ func TestChildren(t *testing.T) {
}
reply, err := svc.Children(ctx, request)
- testutil.FatalOnErrT(t, "Children error: %v", err)
+ testutil.Fatalf(t, "Children error: %v", err)
expectedInputToChildren := map[string]*epb.Tickets{
p1: {
@@ -198,7 +198,7 @@ func TestParents_noData(t *testing.T) {
reply, err := svc.Parents(ctx, &epb.ParentsRequest{
Tickets: []string{dne},
})
- testutil.FatalOnErrT(t, "Parents error: %v", err)
+ testutil.Fatalf(t, "Parents error: %v", err)
if len(reply.InputToParents) != 0 {
t.Errorf("Expected empty response for missing key, got: %v", reply)
}
@@ -211,7 +211,7 @@ func TestParents(t *testing.T) {
}
reply, err := svc.Parents(ctx, request)
- testutil.FatalOnErrT(t, "Parents error: %v", err)
+ testutil.Fatalf(t, "Parents error: %v", err)
expectedInputToParents := map[string]*epb.Tickets{
p1c1: {
@@ -250,7 +250,7 @@ func TestCallers_noData(t *testing.T) {
reply, err := svc.Callers(ctx, &epb.CallersRequest{
Tickets: []string{dne},
})
- testutil.FatalOnErrT(t, "CallersRequest error: %v", err)
+ testutil.Fatalf(t, "CallersRequest error: %v", err)
if len(reply.Graph.Nodes) != 0 {
t.Errorf("Expected empty response for missing key, got: %v", reply)
}
@@ -263,7 +263,7 @@ func TestCallers(t *testing.T) {
}
reply, err := svc.Callers(ctx, request)
- testutil.FatalOnErrT(t, "Callers error: %v", err)
+ testutil.Fatalf(t, "Callers error: %v", err)
expectedGraph := &epb.Graph{
Nodes: map[string]*epb.GraphNode{
@@ -289,7 +289,7 @@ func TestCallers_multipleInputs(t *testing.T) {
}
reply, err := svc.Callers(ctx, request)
- testutil.FatalOnErrT(t, "Callers error: %v", err)
+ testutil.Fatalf(t, "Callers error: %v", err)
// The edge f2->fr is not in the reply because we're asking for neither
// the callers of fr nor the callees of f2.
@@ -338,7 +338,7 @@ func TestCallees_noData(t *testing.T) {
reply, err := svc.Callees(ctx, &epb.CalleesRequest{
Tickets: []string{dne},
})
- testutil.FatalOnErrT(t, "CalleesRequest error: %v", err)
+ testutil.Fatalf(t, "CalleesRequest error: %v", err)
if len(reply.Graph.Nodes) != 0 {
t.Errorf("Expected empty response for missing key, got: %v", reply)
}
@@ -351,7 +351,7 @@ func TestCallees(t *testing.T) {
}
reply, err := svc.Callees(ctx, request)
- testutil.FatalOnErrT(t, "Callees error: %v", err)
+ testutil.Fatalf(t, "Callees error: %v", err)
expectedGraph := &epb.Graph{
Nodes: map[string]*epb.GraphNode{
@@ -380,7 +380,7 @@ func TestCallees_multipleInputs(t *testing.T) {
}
reply, err := svc.Callees(ctx, request)
- testutil.FatalOnErrT(t, "Callees error: %v", err)
+ testutil.Fatalf(t, "Callees error: %v", err)
// The following edges are present in the stored callgraph
// but intentionally not present in the response:
diff --git a/kythe/go/serving/filetree/filetree.go b/kythe/go/serving/filetree/filetree.go
index 8bfb16ff7..c3d9c9be7 100644
--- a/kythe/go/serving/filetree/filetree.go
+++ b/kythe/go/serving/filetree/filetree.go
@@ -17,8 +17,9 @@
// Package filetree implements a lookup table for files in a tree structure.
//
// Table format:
-// dirs:<corpus>\n<root>\n<path> -> srvpb.FileDirectory
-// dirs:corpusRoots -> srvpb.CorpusRoots
+//
+// dirs:<corpus>\n<root>\n<path> -> srvpb.FileDirectory
+// dirs:corpusRoots -> srvpb.CorpusRoots
package filetree // import "kythe.io/kythe/go/serving/filetree"
import (
diff --git a/kythe/go/serving/graph/graph.go b/kythe/go/serving/graph/graph.go
index 496910fe5..95c882b99 100644
--- a/kythe/go/serving/graph/graph.go
+++ b/kythe/go/serving/graph/graph.go
@@ -18,8 +18,9 @@
// graph.Service.
//
// Table format:
-// edgeSets:<ticket> -> srvpb.PagedEdgeSet
-// edgePages:<page_key> -> srvpb.EdgePage
+//
+// edgeSets:<ticket> -> srvpb.PagedEdgeSet
+// edgePages:<page_key> -> srvpb.EdgePage
package graph // import "kythe.io/kythe/go/serving/graph"
import (
diff --git a/kythe/go/serving/graph/graph_test.go b/kythe/go/serving/graph/graph_test.go
index 9949d390e..251f16827 100644
--- a/kythe/go/serving/graph/graph_test.go
+++ b/kythe/go/serving/graph/graph_test.go
@@ -271,7 +271,7 @@ func TestNodes(t *testing.T) {
reply, err := st.Nodes(ctx, &gpb.NodesRequest{
Ticket: []string{node.Ticket},
})
- testutil.FatalOnErrT(t, "NodesRequest error: %v", err)
+ testutil.Fatalf(t, "NodesRequest error: %v", err)
if len(reply.Nodes) != 1 {
t.Fatalf("Expected 1 node for %q; found %d: {%v}", node.Ticket, len(reply.Nodes), reply)
@@ -287,7 +287,7 @@ func TestNodes(t *testing.T) {
expected[n.Ticket] = nodeInfo(n)
}
reply, err := st.Nodes(ctx, &gpb.NodesRequest{Ticket: tickets})
- testutil.FatalOnErrT(t, "NodesRequest error: %v", err)
+ testutil.Fatalf(t, "NodesRequest error: %v", err)
if err := testutil.DeepEqual(expected, reply.Nodes); err != nil {
t.Fatal(err)
@@ -299,7 +299,7 @@ func TestNodesMissing(t *testing.T) {
reply, err := st.Nodes(ctx, &gpb.NodesRequest{
Ticket: []string{"kythe:#someMissingTicket"},
})
- testutil.FatalOnErrT(t, "NodesRequest error: %v", err)
+ testutil.Fatalf(t, "NodesRequest error: %v", err)
if len(reply.Nodes) > 0 {
t.Fatalf("Received unexpected reply for missing node: {%v}", reply)
@@ -328,7 +328,7 @@ func TestEdgesSinglePage(t *testing.T) {
Ticket: []string{test.Ticket},
Kind: test.Kinds,
})
- testutil.FatalOnErrT(t, "EdgesRequest error: %v", err)
+ testutil.Fatalf(t, "EdgesRequest error: %v", err)
if len(reply.Nodes) > 0 {
t.Errorf("Received unexpected nodes in EdgesReply: {%v}", reply)
@@ -371,7 +371,7 @@ func TestEdgesLastPage(t *testing.T) {
Ticket: []string{ticket},
Kind: kinds,
})
- testutil.FatalOnErrT(t, "EdgesRequest error: %v", err)
+ testutil.Fatalf(t, "EdgesRequest error: %v", err)
if len(reply.Nodes) > 0 {
t.Errorf("Received unexpected nodes in EdgesReply: {%v}", reply)
@@ -410,7 +410,7 @@ func TestEdgesMultiPage(t *testing.T) {
Ticket: []string{test.Ticket},
Kind: test.Kinds,
})
- testutil.FatalOnErrT(t, "EdgesRequest error: %v", err)
+ testutil.Fatalf(t, "EdgesRequest error: %v", err)
if len(reply.Nodes) > 0 {
t.Errorf("Received unexpected nodes in EdgesReply: {%v}", reply)
@@ -442,7 +442,7 @@ func TestEdgesMissing(t *testing.T) {
reply, err := st.Edges(ctx, &gpb.EdgesRequest{
Ticket: []string{"kythe:#someMissingTicket"},
})
- testutil.FatalOnErrT(t, "EdgesRequest error: %v", err)
+ testutil.Fatalf(t, "EdgesRequest error: %v", err)
if len(reply.EdgeSets) > 0 || len(reply.Nodes) > 0 || reply.NextPageToken != "" {
t.Fatalf("Received unexpected reply for missing edges: {%v}", reply)
@@ -507,17 +507,17 @@ func (tbl *testTable) Construct(t *testing.T) *Table {
}
for _, es := range tbl.EdgeSets {
tickets.Discard(es.Source.Ticket)
- testutil.FatalOnErrT(t, "Error writing edge set: %v", p.Put(ctx, EdgeSetKey(mustFix(t, es.Source.Ticket)), es))
+ testutil.Fatalf(t, "Error writing edge set: %v", p.Put(ctx, EdgeSetKey(mustFix(t, es.Source.Ticket)), es))
}
// Fill in EdgeSets for zero-degree nodes
for ticket := range tickets {
es := &srvpb.PagedEdgeSet{
Source: getNode(ticket),
}
- testutil.FatalOnErrT(t, "Error writing edge set: %v", p.Put(ctx, EdgeSetKey(mustFix(t, es.Source.Ticket)), es))
+ testutil.Fatalf(t, "Error writing edge set: %v", p.Put(ctx, EdgeSetKey(mustFix(t, es.Source.Ticket)), es))
}
for _, ep := range tbl.EdgePages {
- testutil.FatalOnErrT(t, "Error writing edge page: %v", p.Put(ctx, EdgePageKey(ep.PageKey), ep))
+ testutil.Fatalf(t, "Error writing edge page: %v", p.Put(ctx, EdgePageKey(ep.PageKey), ep))
}
return NewCombinedTable(p)
}
diff --git a/kythe/go/serving/identifiers/identifiers.go b/kythe/go/serving/identifiers/identifiers.go
index 3fffd22b1..ffb343d15 100644
--- a/kythe/go/serving/identifiers/identifiers.go
+++ b/kythe/go/serving/identifiers/identifiers.go
@@ -17,7 +17,8 @@
// Package identifiers provides a high-performance table-based implementation of the
// identifiers.Service.
// The table is structured as:
-// qualifed_name -> IdentifierMatch
+//
+// qualifed_name -> IdentifierMatch
package identifiers // import "kythe.io/kythe/go/serving/identifiers"
import (
@@ -108,9 +109,9 @@ func contains(haystack []string, needle string) bool {
// RegisterHTTPHandlers registers a JSON HTTP handler with mux using the given
// identifiers Service. The following method with be exposed:
//
-// GET /find_identifier
-// Request: JSON encoded identifier.FindRequest
-// Response: JSON encoded identifier.FindReply
+// GET /find_identifier
+// Request: JSON encoded identifier.FindRequest
+// Response: JSON encoded identifier.FindReply
//
// Note: /find_identifier will return its response as a serialized protobuf if
// the "proto" query parameter is set.
diff --git a/kythe/go/serving/pipeline/nodes/nodes.go b/kythe/go/serving/pipeline/nodes/nodes.go
index 6a1492c7c..22a6084b2 100644
--- a/kythe/go/serving/pipeline/nodes/nodes.go
+++ b/kythe/go/serving/pipeline/nodes/nodes.go
@@ -213,30 +213,30 @@ func embedSourceKey(src *spb.VName, n *scpb.Node) *scpb.Node {
//
// Examples:
//
-// Emit only "record" nodes with the "class" subkind with all their facts/edges:
-// &Filter {
-// FilterByKind: []string{"record"},
-// FilterBySubkind: []string{"class"},
-// }
+// Emit only "record" nodes with the "class" subkind with all their facts/edges:
+// &Filter {
+// FilterByKind: []string{"record"},
+// FilterBySubkind: []string{"class"},
+// }
//
-// Emit only "anchor" nodes (any subkind) with all their facts/edges:
-// &Filter {FilterByKind: []string{"anchor"}}
+// Emit only "anchor" nodes (any subkind) with all their facts/edges:
+// &Filter {FilterByKind: []string{"anchor"}}
//
-// Emit only "anchor" nodes with only the loc/{start,end} facts and no edges:
-// &Filter {
-// FilterByKind: []string{"anchor"},
-// IncludeFacts: []string{"/kythe/loc/start", "/kythe/loc/end"},
-// IncludeEdges: []string{},
-// }
+// Emit only "anchor" nodes with only the loc/{start,end} facts and no edges:
+// &Filter {
+// FilterByKind: []string{"anchor"},
+// IncludeFacts: []string{"/kythe/loc/start", "/kythe/loc/end"},
+// IncludeEdges: []string{},
+// }
//
-// Emit only "anchor" nodes with their "childof" edges (but all their facts):
-// &Filter {
-// FilterByKind: []string{"anchor"},
-// IncludeEdges: []string{"/kythe/edge/childof"},
-// }
+// Emit only "anchor" nodes with their "childof" edges (but all their facts):
+// &Filter {
+// FilterByKind: []string{"anchor"},
+// IncludeEdges: []string{"/kythe/edge/childof"},
+// }
//
-// Emit all nodes without any of their edges (but all their facts):
-// &Filter {IncludeEdges: []string{}}
+// Emit all nodes without any of their edges (but all their facts):
+// &Filter {IncludeEdges: []string{}}
type Filter struct {
// FilterByKind, if non-nil, configures the filter to only pass through nodes
// that match one of the given kinds.
diff --git a/kythe/go/serving/tools/kwazthis/kwazthis.go b/kythe/go/serving/tools/kwazthis/kwazthis.go
index 1115c8fbe..08521ee73 100644
--- a/kythe/go/serving/tools/kwazthis/kwazthis.go
+++ b/kythe/go/serving/tools/kwazthis/kwazthis.go
@@ -26,9 +26,10 @@
// behavior.
//
// Usage:
-// kwazthis --path kythe/cxx/tools/kindex_tool_main.cc --offset 2660
-// kwazthis --path kythe/cxx/common/CommandLineUtils.cc --line 81 --column 27
-// kwazthis --path kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java --offset 2815
+//
+// kwazthis --path kythe/cxx/tools/kindex_tool_main.cc --offset 2660
+// kwazthis --path kythe/cxx/common/CommandLineUtils.cc --line 81 --column 27
+// kwazthis --path kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java --offset 2815
package main
import (
diff --git a/kythe/go/serving/tools/kythe/kythe.go b/kythe/go/serving/tools/kythe/kythe.go
index 5a4806dd7..d45546b38 100644
--- a/kythe/go/serving/tools/kythe/kythe.go
+++ b/kythe/go/serving/tools/kythe/kythe.go
@@ -18,29 +18,30 @@
// services backed by a combined serving table.
//
// Examples:
-// # Show complete command listing
-// kythe
//
-// # List all corpus root uris
-// kythe --api /path/to/table ls --uris
+// # Show complete command listing
+// kythe
//
-// # List root directory contents for corpus named 'somecorpus'
-// kythe --api /path/to/table ls kythe://somecorpus
+// # List all corpus root uris
+// kythe --api /path/to/table ls --uris
//
-// # List Kythe's kythe/cxx/common directory (as URIs)
-// kythe --api /path/to/table ls --uris kythe://kythe?path=kythe/cxx/common
+// # List root directory contents for corpus named 'somecorpus'
+// kythe --api /path/to/table ls kythe://somecorpus
//
-// # Display all file anchor decorations for kythe/cxx/common/CommandLineUtils.cc
-// kythe --api /path/to/table decor kythe://kythe?lang=c%2B%2B?path=kythe/cxx/common/CommandLineUtils.cc
+// # List Kythe's kythe/cxx/common directory (as URIs)
+// kythe --api /path/to/table ls --uris kythe://kythe?path=kythe/cxx/common
//
-// # Show all outward edges for a particular node
-// kythe --api /path/to/table edges kythe:?lang=java#java.util.List
+// # Display all file anchor decorations for kythe/cxx/common/CommandLineUtils.cc
+// kythe --api /path/to/table decor kythe://kythe?lang=c%2B%2B?path=kythe/cxx/common/CommandLineUtils.cc
//
-// # Show reverse /kythe/edge/defines edges for a node
-// kythe --api /path/to/table edges --kinds '%/kythe/edge/defines' kythe://kythe?lang=java?path=kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java#1887f665ee4c77287d1022c151000a489e17147215309818cf4150c601442cc5
+// # Show all outward edges for a particular node
+// kythe --api /path/to/table edges kythe:?lang=java#java.util.List
//
-// # Show all facts (except /kythe/text) for a node
-// kythe --api /path/to/table node kythe:?lang=c%2B%2B#StripPrefix%3Acommon%3Akythe%23n%23D%40kythe%2Fcxx%2Fcommon%2FCommandLineUtils.cc%3A167%3A1
+// # Show reverse /kythe/edge/defines edges for a node
+// kythe --api /path/to/table edges --kinds '%/kythe/edge/defines' kythe://kythe?lang=java?path=kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java#1887f665ee4c77287d1022c151000a489e17147215309818cf4150c601442cc5
+//
+// # Show all facts (except /kythe/text) for a node
+// kythe --api /path/to/table node kythe:?lang=c%2B%2B#StripPrefix%3Acommon%3Akythe%23n%23D%40kythe%2Fcxx%2Fcommon%2FCommandLineUtils.cc%3A167%3A1
package main
import (
diff --git a/kythe/go/serving/tools/kythefs/kythefs.go b/kythe/go/serving/tools/kythefs/kythefs.go
index c3263141b..ca98c0ddf 100644
--- a/kythe/go/serving/tools/kythefs/kythefs.go
+++ b/kythe/go/serving/tools/kythefs/kythefs.go
@@ -18,13 +18,12 @@
//
// Example usage:
//
-// bazel build kythe/go/serving/tools/kythefs
-// # Blocks until unmounted:
-// ./bazel-bin/kythe/go/serving/tools/kythefs/kythefs --mountpoint vfs_dir
-//
-// # To unmount:
-// fusermount -u vfs_dir
+// bazel build kythe/go/serving/tools/kythefs
+// # Blocks until unmounted:
+// ./bazel-bin/kythe/go/serving/tools/kythefs/kythefs --mountpoint vfs_dir
//
+// # To unmount:
+// fusermount -u vfs_dir
package main
import (
@@ -117,11 +116,10 @@ func hasDirComponent(rs []FilepathResolution) bool {
// ResolveFilepath returns alternative resolutions of a given vfs path.
// The multiple resolutions are due to ambiguity, which occurs due to:
//
-// a) The queried path pointing into a prefix of some corpus+root vfs path.
-//
-// b) Overlapping corpus+root+path vfs paths. If happens, you likely need to
-// adjust the extractor's vname mapping config.
+// a) The queried path pointing into a prefix of some corpus+root vfs path.
//
+// b) Overlapping corpus+root+path vfs paths. If happens, you likely need to
+// adjust the extractor's vname mapping config.
func (me *kytheFS) ResolveFilepath(path string) ([]FilepathResolution, error) {
var req ftpb.CorpusRootsRequest
cr, err := me.API.CorpusRoots(me.Context, &req)
diff --git a/kythe/go/serving/tools/testdata/kwazthis_test.sh b/kythe/go/serving/tools/testdata/kwazthis_test.sh
index 61a2b3354..fbc396ea0 100755
--- a/kythe/go/serving/tools/testdata/kwazthis_test.sh
+++ b/kythe/go/serving/tools/testdata/kwazthis_test.sh
@@ -25,7 +25,7 @@ kwazthis() { "$KWAZTHIS" --local_repo=NONE --api "http://$LISTEN_AT" "$@" | tee
FILE_PATH=kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Generics.java
-JSON=$(kwazthis --corpus kythe --path $FILE_PATH --offset 993)
+JSON=$(kwazthis --corpus kythe --path $FILE_PATH --offset 870)
jq --slurp 'length == 4'
# .[0] is Generics class def
# .[1] is f method def
diff --git a/kythe/go/serving/xrefs/BUILD b/kythe/go/serving/xrefs/BUILD
index e3c8482e1..fab8adede 100644
--- a/kythe/go/serving/xrefs/BUILD
+++ b/kythe/go/serving/xrefs/BUILD
@@ -7,6 +7,7 @@ go_library(
srcs = [
"columnar.go",
"xrefs.go",
+ "xrefs_filter.go",
],
deps = [
"//kythe/go/services/xrefs",
@@ -34,6 +35,7 @@ go_library(
"@org_golang_google_grpc//status:go_default_library",
"@org_golang_google_protobuf//proto:go_default_library",
"@org_golang_x_net//trace:go_default_library",
+ "@org_golang_x_sync//errgroup:go_default_library",
],
)
@@ -46,6 +48,7 @@ go_test(
deps = [
"//kythe/go/test/testutil",
"//kythe/go/util/compare",
+ "@org_golang_google_protobuf//encoding/prototext:go_default_library",
"@org_golang_x_text//encoding:go_default_library",
"@org_golang_x_text//encoding/unicode:go_default_library",
"@org_golang_x_text//transform:go_default_library",
diff --git a/kythe/go/serving/xrefs/assemble/assemble_test.go b/kythe/go/serving/xrefs/assemble/assemble_test.go
index 537340a66..659c77db4 100644
--- a/kythe/go/serving/xrefs/assemble/assemble_test.go
+++ b/kythe/go/serving/xrefs/assemble/assemble_test.go
@@ -344,13 +344,13 @@ func TestEdgeSetBuilder(t *testing.T) {
var edgeSets, edgePages int
for _, test := range tests {
if test.src != nil {
- testutil.FatalOnErrT(t, "Failure to StartEdgeSet: %v",
+ testutil.Fatalf(t, "Failure to StartEdgeSet: %v",
tESB.StartEdgeSet(ctx, test.src))
} else if test.grp != nil {
- testutil.FatalOnErrT(t, "Failure to AddGroup: %v",
+ testutil.Fatalf(t, "Failure to AddGroup: %v",
tESB.AddGroup(ctx, test.grp))
} else {
- testutil.FatalOnErrT(t, "Failure to Flush: %v",
+ testutil.Fatalf(t, "Failure to Flush: %v",
tESB.Flush(ctx))
}
diff --git a/kythe/go/serving/xrefs/columnar.go b/kythe/go/serving/xrefs/columnar.go
index c150e0552..d66c9b613 100644
--- a/kythe/go/serving/xrefs/columnar.go
+++ b/kythe/go/serving/xrefs/columnar.go
@@ -42,6 +42,7 @@ import (
cpb "kythe.io/kythe/proto/common_go_proto"
scpb "kythe.io/kythe/proto/schema_go_proto"
spb "kythe.io/kythe/proto/serving_go_proto"
+ srvpb "kythe.io/kythe/proto/serving_go_proto"
xpb "kythe.io/kythe/proto/xref_go_proto"
xspb "kythe.io/kythe/proto/xref_serving_go_proto"
)
@@ -515,3 +516,8 @@ func filterNode(patterns []*regexp.Regexp, n *scpb.Node) *cpb.NodeInfo {
}
return c
}
+
+func a2a(a *srvpb.ExpandedAnchor, fileInfos map[string]*srvpb.FileInfo, anchorText bool) *xpb.CrossReferencesReply_RelatedAnchor {
+ c := &anchorConverter{fileInfos: fileInfos, anchorText: anchorText}
+ return c.Convert(a)
+}
diff --git a/kythe/go/serving/xrefs/xrefs.go b/kythe/go/serving/xrefs/xrefs.go
index 3bad2b41b..0687e0d40 100644
--- a/kythe/go/serving/xrefs/xrefs.go
+++ b/kythe/go/serving/xrefs/xrefs.go
@@ -18,18 +18,21 @@
// xrefs.Service.
//
// Table format:
-// decor:<ticket> -> srvpb.FileDecorations
-// docs:<ticket> -> srvpb.Document
-// xrefs:<ticket> -> srvpb.PagedCrossReferences
-// xrefPages:<page_key> -> srvpb.PagedCrossReferences_Page
+//
+// decor:<ticket> -> srvpb.FileDecorations
+// docs:<ticket> -> srvpb.Document
+// xrefs:<ticket> -> srvpb.PagedCrossReferences
+// xrefPages:<page_key> -> srvpb.PagedCrossReferences_Page
package xrefs // import "kythe.io/kythe/go/serving/xrefs"
import (
"context"
"encoding/base64"
+ "errors"
"flag"
"fmt"
"log"
+ "path/filepath"
"regexp"
"strings"
@@ -45,6 +48,7 @@ import (
"bitbucket.org/creachadair/stringset"
"github.com/golang/snappy"
"golang.org/x/net/trace"
+ "golang.org/x/sync/errgroup"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/proto"
@@ -93,22 +97,67 @@ type SplitTable struct {
// Documentation is a table of srvpb.Documents keyed by their node ticket.
Documentation table.Proto
+
+ // RewriteEdgeLabel is an optional callback to rewrite edge labels.
+ // It will be called once per request; the function it returns will then be
+ // called once per edge.
+ RewriteEdgeLabel func(context.Context) func(string) string
+}
+
+func (s *SplitTable) rewriteFileDecorations(ctx context.Context, fd *srvpb.FileDecorations, err error) (*srvpb.FileDecorations, error) {
+ if fd == nil || err != nil || s.RewriteEdgeLabel == nil || fd.Decoration == nil {
+ return fd, err
+ }
+ f := s.RewriteEdgeLabel(ctx)
+ if f == nil {
+ return fd, err
+ }
+ for _, d := range fd.Decoration {
+ d.Kind = f(d.Kind)
+ }
+ return fd, err
+}
+
+func rewriteCrossReferencesGroup(g *srvpb.PagedCrossReferences_Group, f func(string) string) {
+ if f != nil && g != nil {
+ g.Kind = f(g.Kind)
+ }
+}
+
+func (s *SplitTable) rewriteCrossReferences(ctx context.Context, cr *srvpb.PagedCrossReferences, err error) (*srvpb.PagedCrossReferences, error) {
+ if cr == nil || err != nil || s.RewriteEdgeLabel == nil || cr.Group == nil {
+ return cr, err
+ }
+ f := s.RewriteEdgeLabel(ctx)
+ for _, g := range cr.Group {
+ rewriteCrossReferencesGroup(g, f)
+ }
+ return cr, err
+}
+
+func (s *SplitTable) rewriteCrossReferencesPage(ctx context.Context, cr *srvpb.PagedCrossReferences_Page, err error) (*srvpb.PagedCrossReferences_Page, error) {
+ if cr == nil || err != nil || s.RewriteEdgeLabel == nil || cr.Group == nil {
+ return cr, err
+ }
+ f := s.RewriteEdgeLabel(ctx)
+ rewriteCrossReferencesGroup(cr.Group, f)
+ return cr, err
}
func (s *SplitTable) fileDecorations(ctx context.Context, ticket string) (*srvpb.FileDecorations, error) {
tracePrintf(ctx, "Reading FileDecorations: %s", ticket)
var fd srvpb.FileDecorations
- return &fd, s.Decorations.Lookup(ctx, []byte(ticket), &fd)
+ return s.rewriteFileDecorations(ctx, &fd, s.Decorations.Lookup(ctx, []byte(ticket), &fd))
}
func (s *SplitTable) crossReferences(ctx context.Context, ticket string) (*srvpb.PagedCrossReferences, error) {
tracePrintf(ctx, "Reading PagedCrossReferences: %s", ticket)
var cr srvpb.PagedCrossReferences
- return &cr, s.CrossReferences.Lookup(ctx, []byte(ticket), &cr)
+ return s.rewriteCrossReferences(ctx, &cr, s.CrossReferences.Lookup(ctx, []byte(ticket), &cr))
}
func (s *SplitTable) crossReferencesPage(ctx context.Context, key string) (*srvpb.PagedCrossReferences_Page, error) {
tracePrintf(ctx, "Reading PagedCrossReferences.Page: %s", key)
var p srvpb.PagedCrossReferences_Page
- return &p, s.CrossReferencePages.Lookup(ctx, []byte(key), &p)
+ return s.rewriteCrossReferencesPage(ctx, &p, s.CrossReferencePages.Lookup(ctx, []byte(key), &p))
}
func (s *SplitTable) documentation(ctx context.Context, ticket string) (*srvpb.Document, error) {
tracePrintf(ctx, "Reading Document: %s", ticket)
@@ -145,11 +194,11 @@ func (c *combinedTable) documentation(ctx context.Context, ticket string) (*srvp
// NewSplitTable returns a table based on the given serving tables for each API
// component.
-func NewSplitTable(c *SplitTable) *Table { return &Table{c} }
+func NewSplitTable(c *SplitTable) *Table { return &Table{staticLookupTables: c} }
// NewCombinedTable returns a table for the given combined xrefs lookup table.
// The table's keys are expected to be constructed using only the *Key functions.
-func NewCombinedTable(t table.Proto) *Table { return &Table{&combinedTable{t}} }
+func NewCombinedTable(t table.Proto) *Table { return &Table{staticLookupTables: &combinedTable{t}} }
// DecorationsKey returns the decorations CombinedTable key for the given source
// location ticket.
@@ -176,17 +225,66 @@ func DocumentationKey(ticket string) []byte {
}
// Table implements the xrefs Service interface using static lookup tables.
-type Table struct{ staticLookupTables }
+type Table struct {
+ staticLookupTables
+
+ // MakePatcher returns a patching client that targets a Workspace.
+ MakePatcher func(context.Context, *xpb.Workspace) (MultiFilePatcher, error)
+
+ // ResolvePath is used to resolve CorpusPaths for filtering. If unset,
+ // DefaultResolvePath will be used.
+ ResolvePath PathResolver
+}
+
+// A PathResolver resolves a CorpusPath into a single filepath.
+type PathResolver func(*cpb.CorpusPath) string
+
+// DefaultResolvePath returns the default resolved path for the CorpusPath by
+// joining its corpus, root, and path into a single filepath.
+func DefaultResolvePath(cp *cpb.CorpusPath) string {
+ return filepath.Join(cp.GetCorpus(), cp.GetRoot(), cp.GetPath())
+}
+
+// A MultiFilePatcher provides an interface to patch sets of xref anchors to an
+// underlying baseline, usually a Workspace.
+//
+// After creation, the client is required to call AddFile for each possible file
+// referenced by any anchors that will be patched. After the files are added, a
+// set of anchors may be passed to PatchAnchors.
+type MultiFilePatcher interface {
+ // AddFile adds a file to current set of files to patch against.
+ AddFile(context.Context, *srvpb.FileInfo) error
+
+ // PatchAnchors updates the set of anchors given to match their referenced
+ // files' state as known by the MultiLinePatcher, usually based on a
+ // Workspace. If an anchor no longer exists, it will be ellided from the
+ // returned set. Otherwise, the ordering of the anchors will be retained.
+ PatchAnchors(context.Context, []*xpb.Anchor) ([]*xpb.Anchor, error)
+
+ // PatchRelatedAnchors updates the set of related anchors given to match their
+ // referenced files' state as known by the MultiLinePatcher, usually based on
+ // a Workspace. If an anchor no longer exists, it will be ellided from the
+ // returned set. Otherwise, the ordering of the anchors will be retained.
+ PatchRelatedAnchors(context.Context, []*xpb.CrossReferencesReply_RelatedAnchor) ([]*xpb.CrossReferencesReply_RelatedAnchor, error)
+
+ // Close releases any resources used the patcher. Further calls to the
+ // patcher will become invalid.
+ Close() error
+}
const (
defaultPageSize = 2048
maxPageSize = 10000
)
-func nodeToInfo(patterns []*regexp.Regexp, n *srvpb.Node) *cpb.NodeInfo {
+type nodeConverter struct {
+ factPatterns []*regexp.Regexp
+}
+
+func (c *nodeConverter) ToInfo(n *srvpb.Node) *cpb.NodeInfo {
ni := &cpb.NodeInfo{Facts: make(map[string][]byte, len(n.Fact))}
for _, f := range n.Fact {
- if xrefs.MatchesAny(f.Name, patterns) {
+ if xrefs.MatchesAny(f.Name, c.factPatterns) {
ni.Facts[f.Name] = f.Value
}
}
@@ -209,6 +307,20 @@ func (t *Table) Decorations(ctx context.Context, req *xpb.DecorationsRequest) (*
return nil, status.Errorf(codes.InvalidArgument, "invalid ticket %q: %v", req.GetLocation().Ticket, err)
}
+ var multiPatcher MultiFilePatcher
+ if t.MakePatcher != nil && req.GetWorkspace() != nil && req.GetPatchAgainstWorkspace() {
+ multiPatcher, err = t.MakePatcher(ctx, req.GetWorkspace())
+ if err != nil {
+ return nil, status.Errorf(codes.InvalidArgument, "invalid workspace: %v", err)
+ }
+ defer func() {
+ if err := multiPatcher.Close(); isNonContextError(err) {
+ // No need to fail the request; just log the error.
+ log.Printf("ERROR: closing patcher: %v", err)
+ }
+ }()
+ }
+
decor, err := t.fileDecorations(ctx, ticket)
if err == table.ErrNoSuchKey {
return nil, xrefs.ErrDecorationsNotFound
@@ -279,6 +391,9 @@ func (t *Table) Decorations(ctx context.Context, req *xpb.DecorationsRequest) (*
var patcher *span.Patcher
if len(req.DirtyBuffer) > 0 {
+ if multiPatcher != nil {
+ return nil, status.Errorf(codes.Unimplemented, "cannot patch decorations against Workspace with a dirty_buffer")
+ }
patcher, err = span.NewPatcher(decor.File.Text, req.DirtyBuffer)
if err != nil {
return nil, status.Errorf(codes.Internal, "error patching decorations for %s: %v", req.Location.Ticket, err)
@@ -301,6 +416,9 @@ func (t *Table) Decorations(ctx context.Context, req *xpb.DecorationsRequest) (*
patterns := xrefs.ConvertFilters(req.Filter)
buildConfigs := stringset.New(req.BuildConfig...)
+ ac := &anchorConverter{fileInfos: fileInfos}
+ nc := &nodeConverter{patterns}
+
reply.Reference = make([]*xpb.DecorationsReply_Reference, 0, len(decor.Decoration))
reply.Nodes = make(map[string]*cpb.NodeInfo, len(decor.Target))
@@ -308,7 +426,7 @@ func (t *Table) Decorations(ctx context.Context, req *xpb.DecorationsRequest) (*
nodes := make(map[string]*cpb.NodeInfo, len(decor.Target))
if len(patterns) > 0 {
for _, n := range decor.Target {
- if info := nodeToInfo(patterns, n); info != nil {
+ if info := nc.ToInfo(n); info != nil {
nodes[n.Ticket] = info
}
}
@@ -318,7 +436,20 @@ func (t *Table) Decorations(ctx context.Context, req *xpb.DecorationsRequest) (*
// All known definition locations (Anchor.Ticket -> Anchor)
defs := make(map[string]*xpb.Anchor, len(decor.TargetDefinitions))
for _, def := range decor.TargetDefinitions {
- defs[def.Ticket] = a2a(def, fileInfos, false).Anchor
+ a := ac.Convert(def).Anchor
+ defs[def.Ticket] = a
+ if multiPatcher != nil {
+ fileInfo := def.GetFileInfo()
+ if fileInfo == nil {
+ fileInfo = fileInfos[a.GetParent()]
+ }
+ if fileInfo != nil {
+ if err := multiPatcher.AddFile(ctx, fileInfo); err != nil {
+ // Attempt to continue with the request, just log the error.
+ log.Printf("ERROR: adding file: %v", err)
+ }
+ }
+ }
}
if req.TargetDefinitions {
reply.DefinitionLocations = make(map[string]*xpb.Anchor, len(decor.TargetDefinitions))
@@ -436,9 +567,38 @@ func (t *Table) Decorations(ctx context.Context, req *xpb.DecorationsRequest) (*
}
}
+ if multiPatcher != nil {
+ defs, err := patchDefLocations(ctx, multiPatcher, reply.GetDefinitionLocations())
+ if err != nil {
+ log.Printf("ERROR: patching definition locations: %v", err)
+ } else {
+ reply.DefinitionLocations = defs
+ }
+ }
+
return reply, nil
}
+func patchDefLocations(ctx context.Context, patcher MultiFilePatcher, defLocs map[string]*xpb.Anchor) (map[string]*xpb.Anchor, error) {
+ if len(defLocs) == 0 {
+ return nil, nil
+ }
+ defs := make([]*xpb.Anchor, 0, len(defLocs))
+ for _, def := range defLocs {
+ defs = append(defs, def)
+ }
+ defs, err := patcher.PatchAnchors(ctx, defs)
+ if err != nil {
+ return defLocs, err
+ }
+ res := make(map[string]*xpb.Anchor, len(defs))
+ for _, def := range defs {
+ res[def.GetTicket()] = def
+ }
+ tracePrintf(ctx, "Patched DefinitionLocations: %d", len(defs))
+ return res, nil
+}
+
func makeFileInfoMap(infos []*srvpb.FileInfo) map[string]*srvpb.FileInfo {
fileInfos := make(map[string]*srvpb.FileInfo, len(infos))
for _, info := range infos {
@@ -466,8 +626,25 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
return nil, err
}
+ filter, err := compileCorpusPathFilters(req.GetCorpusPathFilters(), t.ResolvePath)
+ if err != nil {
+ return nil, status.Errorf(codes.InvalidArgument, "invalid corpus_path_filters %s: %v", strings.ReplaceAll(req.GetCorpusPathFilters().String(), "\n", " "), err)
+ }
+
+ getFilteredPage := func(ctx context.Context, pageKey string) (*srvpb.PagedCrossReferences_Page, int, error) {
+ p, err := t.crossReferencesPage(ctx, pageKey)
+ if err != nil {
+ return nil, 0, err
+ }
+ return p, filter.FilterGroup(p.GetGroup()), nil
+ }
+
stats := refStats{
max: int(req.PageSize),
+
+ refOptions: refOptions{
+ anchorText: req.AnchorText,
+ },
}
if stats.max < 0 {
return nil, status.Errorf(codes.InvalidArgument, "invalid page_size: %d", req.PageSize)
@@ -511,9 +688,11 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
if req.NodeDefinitions {
reply.DefinitionLocations = make(map[string]*xpb.Anchor)
}
+ stats.reply = reply
buildConfigs := stringset.New(req.BuildConfig...)
patterns := xrefs.ConvertFilters(req.Filter)
+ stats.nodeConverter = nodeConverter{patterns}
nextPageToken := &ipb.PageToken{
SubTokens: make(map[string]string),
@@ -538,6 +717,30 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
totalsQuality = xpb.CrossReferencesRequest_TotalsQuality(xpb.CrossReferencesRequest_TotalsQuality_value[strings.ToUpper(*defaultTotalsQuality)])
}
+ var patcher MultiFilePatcher
+ if t.MakePatcher != nil && req.GetWorkspace() != nil && req.GetPatchAgainstWorkspace() {
+ patcher, err = t.MakePatcher(ctx, req.GetWorkspace())
+ if err != nil {
+ return nil, status.Errorf(codes.InvalidArgument, "invalid workspace: %v", err)
+ }
+ defer func() {
+ if err := patcher.Close(); isNonContextError(err) {
+ // No need to fail the request; just log the error.
+ log.Printf("ERROR: closing patcher: %v", err)
+ }
+ }()
+
+ stats.refOptions.patcherFunc = func(f *srvpb.FileInfo) {
+ if err := patcher.AddFile(ctx, f); err != nil {
+ // Attempt to continue with the request, just log the error.
+ log.Printf("ERROR: adding file: %v", err)
+ }
+ }
+ }
+
+ // Set of xref page keys to read for further indirection nodes.
+ var indirectionPages []string
+
var foundCrossRefs bool
for i := 0; i < len(tickets); i++ {
if totalsQuality == xpb.CrossReferencesRequest_APPROXIMATE_TOTALS && stats.done() {
@@ -567,7 +770,7 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
// If visiting a non-merge node and facts are requested, add them to the result.
if ticket == cr.SourceTicket && len(patterns) > 0 && cr.SourceNode != nil {
if _, ok := reply.Nodes[ticket]; !ok {
- if info := nodeToInfo(patterns, cr.SourceNode); info != nil {
+ if info := stats.ToInfo(cr.SourceNode); info != nil {
reply.Nodes[ticket] = info
}
}
@@ -595,21 +798,22 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
continue
}
+ filter.FilterGroup(grp)
switch {
case xrefs.IsDefKind(req.DefinitionKind, grp.Kind, cr.Incomplete):
reply.Total.Definitions += int64(len(grp.Anchor))
if wantMoreCrossRefs {
- stats.addAnchors(&crs.Definition, grp, req.AnchorText)
+ stats.addAnchors(&crs.Definition, grp)
}
case xrefs.IsDeclKind(req.DeclarationKind, grp.Kind, cr.Incomplete):
reply.Total.Declarations += int64(len(grp.Anchor))
if wantMoreCrossRefs {
- stats.addAnchors(&crs.Declaration, grp, req.AnchorText)
+ stats.addAnchors(&crs.Declaration, grp)
}
case xrefs.IsRefKind(req.ReferenceKind, grp.Kind):
reply.Total.References += int64(len(grp.Anchor))
if wantMoreCrossRefs {
- stats.addAnchors(&crs.Reference, grp, req.AnchorText)
+ stats.addAnchors(&crs.Reference, grp)
}
case len(grp.RelatedNode) > 0:
// If requested, add related nodes to merge node set.
@@ -622,7 +826,7 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
if len(req.Filter) > 0 && xrefs.IsRelatedNodeKind(relatedKinds, grp.Kind) {
reply.Total.RelatedNodesByRelation[grp.Kind] += int64(len(grp.RelatedNode))
if wantMoreCrossRefs {
- stats.addRelatedNodes(reply, crs, grp, patterns)
+ stats.addRelatedNodes(crs, grp)
}
}
case xrefs.IsCallerKind(req.CallerKind, grp.Kind):
@@ -643,64 +847,71 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
case xrefs.IsDefKind(req.DefinitionKind, idx.Kind, cr.Incomplete):
reply.Total.Definitions += int64(idx.Count)
if wantMoreCrossRefs && !stats.skipPage(idx) {
- p, err := t.crossReferencesPage(ctx, idx.PageKey)
+ p, filtered, err := getFilteredPage(ctx, idx.PageKey)
if err != nil {
return nil, fmt.Errorf("internal error: error retrieving cross-references page %v: %v", idx.PageKey, err)
}
- stats.addAnchors(&crs.Definition, p.Group, req.AnchorText)
+ reply.Total.Definitions -= int64(filtered) // update counts to reflect filtering
+ stats.addAnchors(&crs.Definition, p.Group)
}
case xrefs.IsDeclKind(req.DeclarationKind, idx.Kind, cr.Incomplete):
reply.Total.Declarations += int64(idx.Count)
if wantMoreCrossRefs && !stats.skipPage(idx) {
- p, err := t.crossReferencesPage(ctx, idx.PageKey)
+ p, filtered, err := getFilteredPage(ctx, idx.PageKey)
if err != nil {
return nil, fmt.Errorf("internal error: error retrieving cross-references page %v: %v", idx.PageKey, err)
}
- stats.addAnchors(&crs.Declaration, p.Group, req.AnchorText)
+ reply.Total.Declarations -= int64(filtered) // update counts to reflect filtering
+ stats.addAnchors(&crs.Declaration, p.Group)
}
case xrefs.IsRefKind(req.ReferenceKind, idx.Kind):
reply.Total.References += int64(idx.Count)
if wantMoreCrossRefs && !stats.skipPage(idx) {
- p, err := t.crossReferencesPage(ctx, idx.PageKey)
+ p, filtered, err := getFilteredPage(ctx, idx.PageKey)
if err != nil {
return nil, fmt.Errorf("internal error: error retrieving cross-references page %v: %v", idx.PageKey, err)
}
- stats.addAnchors(&crs.Reference, p.Group, req.AnchorText)
+ reply.Total.References -= int64(filtered) // update counts to reflect filtering
+ stats.addAnchors(&crs.Reference, p.Group)
}
case xrefs.IsRelatedNodeKind(nil, idx.Kind):
var p *srvpb.PagedCrossReferences_Page
- // If requested, add related nodes to merge node set.
- if indirections.Contains(idx.Kind) {
- p, err = t.crossReferencesPage(ctx, idx.PageKey)
- if err != nil {
- return nil, fmt.Errorf("internal error: error retrieving cross-references page: %v", idx.PageKey)
- }
-
- for _, rn := range p.Group.RelatedNode {
- tickets = addMergeNode(mergeInto, tickets, ticket, rn.Node.GetTicket())
- }
- }
-
if len(req.Filter) > 0 && xrefs.IsRelatedNodeKind(relatedKinds, idx.Kind) {
reply.Total.RelatedNodesByRelation[idx.Kind] += int64(idx.Count)
if wantMoreCrossRefs && !stats.skipPage(idx) {
- if p == nil {
- p, err = t.crossReferencesPage(ctx, idx.PageKey)
- if err != nil {
- return nil, fmt.Errorf("internal error: error retrieving cross-references page: %v", idx.PageKey)
- }
+ var filtered int
+ p, filtered, err = getFilteredPage(ctx, idx.PageKey)
+ if err != nil {
+ return nil, fmt.Errorf("internal error: error retrieving cross-references page: %v", idx.PageKey)
+ }
+ reply.Total.RelatedNodesByRelation[idx.Kind] -= int64(filtered) // update counts to reflect filtering
+ stats.addRelatedNodes(crs, p.Group)
+ }
+ }
+
+ // If requested, add related nodes to merge node set.
+ if indirections.Contains(idx.Kind) {
+ if p == nil {
+ // We haven't needed to read the page yet; save it until we need
+ // more tickets.
+ indirectionPages = append(indirectionPages, idx.PageKey)
+ } else {
+ // We've already read the page, immediately populate the indirect
+ // nodes.
+ for _, rn := range p.Group.RelatedNode {
+ tickets = addMergeNode(mergeInto, tickets, ticket, rn.Node.GetTicket())
}
- stats.addRelatedNodes(reply, crs, p.Group, patterns)
}
}
case xrefs.IsCallerKind(req.CallerKind, idx.Kind):
reply.Total.Callers += int64(idx.Count)
if wantMoreCrossRefs && !stats.skipPage(idx) {
- p, err := t.crossReferencesPage(ctx, idx.PageKey)
+ p, filtered, err := getFilteredPage(ctx, idx.PageKey)
if err != nil {
return nil, fmt.Errorf("internal error: error retrieving cross-references page: %v", idx.PageKey)
}
+ reply.Total.Callers -= int64(filtered) // update counts to reflect filtering
stats.addCallers(crs, p.Group)
}
}
@@ -710,6 +921,21 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
reply.CrossReferences[crs.Ticket] = crs
tracePrintf(ctx, "CrossReferenceSet: %s", crs.Ticket)
}
+
+ for i == len(tickets)-1 && len(indirectionPages) > 0 {
+ // We've hit the end of known tickets to pull for xrefs; read an
+ // indirection page until we've found another ticket or we've exhausted
+ // all indirection pages.
+ pageKey := indirectionPages[len(indirectionPages)-1]
+ indirectionPages = indirectionPages[:len(indirectionPages)-1]
+ p, err := t.crossReferencesPage(ctx, pageKey)
+ if err != nil {
+ return nil, fmt.Errorf("internal error: error retrieving cross-references page: %v", pageKey)
+ }
+ for _, rn := range p.Group.RelatedNode {
+ tickets = addMergeNode(mergeInto, tickets, ticket, rn.Node.GetTicket())
+ }
+ }
}
if !foundCrossRefs {
// Short-circuit return; skip any slow requests.
@@ -748,6 +974,65 @@ func (t *Table) CrossReferences(ctx context.Context, req *xpb.CrossReferencesReq
}
}
+ if patcher != nil {
+ tracePrintf(ctx, "Patching anchors")
+ // Patch each set of anchors in parallel. Files were added as they were
+ // seen when populating the xref sets.
+ g, gCtx := errgroup.WithContext(ctx)
+ g.Go(func() error {
+ defs, err := patchDefLocations(gCtx, patcher, reply.GetDefinitionLocations())
+ if err != nil {
+ return err
+ }
+ reply.DefinitionLocations = defs
+ return nil
+ })
+ for _, set := range reply.GetCrossReferences() {
+ g.Go(func() error {
+ as, err := patcher.PatchRelatedAnchors(gCtx, set.GetDefinition())
+ if err != nil {
+ return err
+ }
+ set.Definition = as
+ tracePrintf(ctx, "Patched Definitions: %d", len(as))
+ return nil
+ })
+
+ g.Go(func() error {
+ as, err := patcher.PatchRelatedAnchors(gCtx, set.GetDeclaration())
+ if err != nil {
+ return err
+ }
+ set.Declaration = as
+ tracePrintf(ctx, "Patched Declarations: %d", len(as))
+ return nil
+ })
+
+ g.Go(func() error {
+ as, err := patcher.PatchRelatedAnchors(gCtx, set.GetReference())
+ if err != nil {
+ return err
+ }
+ set.Reference = as
+ tracePrintf(ctx, "Patched References: %d", len(as))
+ return nil
+ })
+
+ g.Go(func() error {
+ as, err := patcher.PatchRelatedAnchors(gCtx, set.GetCaller())
+ if err != nil {
+ return err
+ }
+ set.Caller = as
+ tracePrintf(ctx, "Patched Callers: %d", len(as))
+ return nil
+ })
+ }
+ if err := g.Wait(); err != nil {
+ return nil, err
+ }
+ }
+
return reply, nil
}
@@ -780,12 +1065,21 @@ func sumTotalCrossRefs(ts *xpb.CrossReferencesReply_Total) int {
return int(ts.Callers) + int(ts.Definitions) + int(ts.Declarations) + int(ts.References) + int(ts.Documentation) + relatedNodes
}
+type refOptions struct {
+ patcherFunc patcherFunc
+ anchorText bool
+}
+
type refStats struct {
// number of refs:
// to skip (returned on previous pages)
// max to return (the page size)
// total (count of refs so far read for current page)
skip, total, max int
+
+ reply *xpb.CrossReferencesReply
+ refOptions
+ nodeConverter
}
func (s *refStats) done() bool { return s.total == s.max }
@@ -800,7 +1094,10 @@ func (s *refStats) skipPage(idx *srvpb.PagedCrossReferences_PageIndex) bool {
func (s *refStats) addCallers(crs *xpb.CrossReferencesReply_CrossReferenceSet, grp *srvpb.PagedCrossReferences_Group) bool {
cs := grp.Caller
- fileInfos := makeFileInfoMap(grp.FileInfo)
+ converter := &anchorConverter{
+ fileInfos: makeFileInfoMap(grp.FileInfo),
+ patcherFunc: s.patcherFunc,
+ }
if s.done() {
// We've already hit our cap; return true that we're done.
@@ -821,24 +1118,27 @@ func (s *refStats) addCallers(crs *xpb.CrossReferencesReply_CrossReferenceSet, g
s.total += len(cs)
for _, c := range cs {
ra := &xpb.CrossReferencesReply_RelatedAnchor{
- Anchor: a2a(c.Caller, fileInfos, false).Anchor,
+ Anchor: converter.Convert(c.Caller).Anchor,
Ticket: c.SemanticCaller,
Site: make([]*xpb.Anchor, 0, len(c.Callsite)),
}
ra.MarkedSource = c.MarkedSource
for _, site := range c.Callsite {
- ra.Site = append(ra.Site, a2a(site, fileInfos, false).Anchor)
+ ra.Site = append(ra.Site, converter.Convert(site).Anchor)
}
crs.Caller = append(crs.Caller, ra)
}
return s.done() // return whether we've hit our cap
}
-func (s *refStats) addRelatedNodes(reply *xpb.CrossReferencesReply, crs *xpb.CrossReferencesReply_CrossReferenceSet, grp *srvpb.PagedCrossReferences_Group, patterns []*regexp.Regexp) bool {
+func (s *refStats) addRelatedNodes(crs *xpb.CrossReferencesReply_CrossReferenceSet, grp *srvpb.PagedCrossReferences_Group) bool {
ns := grp.RelatedNode
- nodes := reply.Nodes
- defs := reply.DefinitionLocations
- fileInfos := makeFileInfoMap(grp.FileInfo)
+ nodes := s.reply.Nodes
+ defs := s.reply.DefinitionLocations
+ ac := &anchorConverter{
+ fileInfos: makeFileInfoMap(grp.FileInfo),
+ patcherFunc: s.patcherFunc,
+ }
if s.total == s.max {
// We've already hit our cap; return true that we're done.
@@ -859,11 +1159,11 @@ func (s *refStats) addRelatedNodes(reply *xpb.CrossReferencesReply, crs *xpb.Cro
s.total += len(ns)
for _, rn := range ns {
if _, ok := nodes[rn.Node.Ticket]; !ok {
- if info := nodeToInfo(patterns, rn.Node); info != nil {
+ if info := s.ToInfo(rn.Node); info != nil {
nodes[rn.Node.Ticket] = info
if defs != nil && rn.Node.DefinitionLocation != nil {
nodes[rn.Node.Ticket].Definition = rn.Node.DefinitionLocation.Ticket
- defs[rn.Node.DefinitionLocation.Ticket] = a2a(rn.Node.DefinitionLocation, fileInfos, false).Anchor
+ defs[rn.Node.DefinitionLocation.Ticket] = ac.Convert(rn.Node.DefinitionLocation).Anchor
}
}
}
@@ -876,7 +1176,7 @@ func (s *refStats) addRelatedNodes(reply *xpb.CrossReferencesReply, crs *xpb.Cro
return s.total == s.max // return whether we've hit our cap
}
-func (s *refStats) addAnchors(to *[]*xpb.CrossReferencesReply_RelatedAnchor, grp *srvpb.PagedCrossReferences_Group, anchorText bool) bool {
+func (s *refStats) addAnchors(to *[]*xpb.CrossReferencesReply_RelatedAnchor, grp *srvpb.PagedCrossReferences_Group) bool {
kind := edges.Canonical(grp.Kind)
as := grp.Anchor
fileInfos := makeFileInfoMap(grp.FileInfo)
@@ -895,26 +1195,38 @@ func (s *refStats) addAnchors(to *[]*xpb.CrossReferencesReply_RelatedAnchor, grp
as = as[:(s.max - s.total)]
}
s.total += len(as)
+ c := &anchorConverter{fileInfos: fileInfos, anchorText: s.anchorText, patcherFunc: s.patcherFunc}
for _, a := range as {
- ra := a2a(a, fileInfos, anchorText)
+ ra := c.Convert(a)
ra.Anchor.Kind = kind
*to = append(*to, ra)
}
return s.total == s.max
}
-func a2a(a *srvpb.ExpandedAnchor, fileInfos map[string]*srvpb.FileInfo, anchorText bool) *xpb.CrossReferencesReply_RelatedAnchor {
+type patcherFunc func(f *srvpb.FileInfo)
+
+type anchorConverter struct {
+ fileInfos map[string]*srvpb.FileInfo
+ anchorText bool
+ patcherFunc patcherFunc
+}
+
+func (c *anchorConverter) Convert(a *srvpb.ExpandedAnchor) *xpb.CrossReferencesReply_RelatedAnchor {
var text string
- if anchorText {
+ if c.anchorText {
text = a.Text
}
parent, err := tickets.AnchorFile(a.Ticket)
if err != nil {
log.Printf("Error parsing anchor ticket: %v", err)
}
- revision := a.GetFileInfo().GetRevision()
- if revision == "" {
- revision = fileInfos[parent].GetRevision()
+ fileInfo := a.GetFileInfo()
+ if fileInfo == nil {
+ fileInfo = c.fileInfos[parent]
+ }
+ if c.patcherFunc != nil {
+ c.patcherFunc(fileInfo)
}
return &xpb.CrossReferencesReply_RelatedAnchor{Anchor: &xpb.Anchor{
Ticket: a.Ticket,
@@ -925,17 +1237,25 @@ func a2a(a *srvpb.ExpandedAnchor, fileInfos map[string]*srvpb.FileInfo, anchorTe
Snippet: a.Snippet,
SnippetSpan: a.SnippetSpan,
BuildConfig: a.BuildConfiguration,
- Revision: revision,
+ Revision: fileInfo.GetRevision(),
}}
}
-func d2d(d *srvpb.Document, patterns []*regexp.Regexp, nodes map[string]*cpb.NodeInfo, defs map[string]*xpb.Anchor, fileInfos map[string]*srvpb.FileInfo) *xpb.DocumentationReply_Document {
+type documentConverter struct {
+ anchorConverter
+ nodeConverter
+
+ nodes map[string]*cpb.NodeInfo
+ defs map[string]*xpb.Anchor
+}
+
+func (c *documentConverter) Convert(d *srvpb.Document) *xpb.DocumentationReply_Document {
for _, node := range d.Node {
- if _, ok := nodes[node.Ticket]; ok {
+ if _, ok := c.nodes[node.Ticket]; ok {
continue
}
- n := nodeToInfo(patterns, node)
+ n := c.ToInfo(node)
if def := node.DefinitionLocation; def != nil {
if n == nil {
// Add an empty NodeInfo to attach definition location even if no facts
@@ -944,13 +1264,13 @@ func d2d(d *srvpb.Document, patterns []*regexp.Regexp, nodes map[string]*cpb.Nod
}
n.Definition = def.Ticket
- if _, ok := defs[def.Ticket]; !ok {
- defs[def.Ticket] = a2a(def, fileInfos, false).Anchor
+ if _, ok := c.defs[def.Ticket]; !ok {
+ c.defs[def.Ticket] = c.anchorConverter.Convert(def).Anchor
}
}
if n != nil {
- nodes[node.Ticket] = n
+ c.nodes[node.Ticket] = n
}
}
@@ -1012,6 +1332,34 @@ func (t *Table) Documentation(ctx context.Context, req *xpb.DocumentationRequest
}
fileInfos := make(map[string]*srvpb.FileInfo)
+ dc := &documentConverter{
+ anchorConverter: anchorConverter{fileInfos: fileInfos},
+ nodeConverter: nodeConverter{patterns},
+ nodes: reply.Nodes,
+ defs: reply.DefinitionLocations,
+ }
+
+ var patcher MultiFilePatcher
+ if t.MakePatcher != nil && req.GetWorkspace() != nil && req.GetPatchAgainstWorkspace() {
+ patcher, err = t.MakePatcher(ctx, req.GetWorkspace())
+ if err != nil {
+ return nil, status.Errorf(codes.InvalidArgument, "invalid workspace: %v", err)
+ }
+ defer func() {
+ if err := patcher.Close(); isNonContextError(err) {
+ // No need to fail the request; just log the error.
+ log.Printf("ERROR: closing patcher: %v", err)
+ }
+ }()
+
+ dc.anchorConverter.patcherFunc = func(f *srvpb.FileInfo) {
+ if err := patcher.AddFile(ctx, f); err != nil {
+ // Attempt to continue with the request, just log the error.
+ log.Printf("ERROR: adding file: %v", err)
+ }
+ }
+ }
+
for _, ticket := range tickets {
d, err := t.lookupDocument(ctx, ticket)
if err == table.ErrNoSuchKey {
@@ -1020,7 +1368,7 @@ func (t *Table) Documentation(ctx context.Context, req *xpb.DocumentationRequest
return nil, canonicalError(err, "documentation", ticket)
}
- doc := d2d(d, patterns, reply.Nodes, reply.DefinitionLocations, fileInfos)
+ doc := dc.Convert(d)
if req.IncludeChildren {
for _, child := range d.ChildTicket {
// TODO(schroederc): store children with root of documentation tree
@@ -1031,7 +1379,7 @@ func (t *Table) Documentation(ctx context.Context, req *xpb.DocumentationRequest
return nil, canonicalError(err, "documentation child", ticket)
}
- doc.Children = append(doc.Children, d2d(cd, patterns, reply.Nodes, reply.DefinitionLocations, fileInfos))
+ doc.Children = append(doc.Children, dc.Convert(cd))
}
tracePrintf(ctx, "Children: %d", len(d.ChildTicket))
}
@@ -1040,6 +1388,15 @@ func (t *Table) Documentation(ctx context.Context, req *xpb.DocumentationRequest
}
tracePrintf(ctx, "Documents: %d (nodes: %d) (defs: %d", len(reply.Document), len(reply.Nodes), len(reply.DefinitionLocations))
+ if patcher != nil {
+ defs, err := patchDefLocations(ctx, patcher, reply.GetDefinitionLocations())
+ if err != nil {
+ log.Printf("ERROR: patching definition locations: %v", err)
+ } else {
+ reply.DefinitionLocations = defs
+ }
+ }
+
return reply, nil
}
@@ -1083,3 +1440,7 @@ func canonicalError(err error, caller string, ticket string) error {
return status.Error(code, st)
}
}
+
+func isNonContextError(err error) bool {
+ return err != nil && !errors.Is(err, context.Canceled) && !errors.Is(err, context.DeadlineExceeded)
+}
diff --git a/kythe/go/serving/xrefs/xrefs_filter.go b/kythe/go/serving/xrefs/xrefs_filter.go
new file mode 100644
index 000000000..c3319fedc
--- /dev/null
+++ b/kythe/go/serving/xrefs/xrefs_filter.go
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2022 The Kythe Authors. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package xrefs
+
+import (
+ "regexp"
+
+ "kythe.io/kythe/go/util/kytheuri"
+
+ cpb "kythe.io/kythe/proto/common_go_proto"
+ srvpb "kythe.io/kythe/proto/serving_go_proto"
+ xpb "kythe.io/kythe/proto/xref_go_proto"
+)
+
+func compileCorpusPathFilters(fs *xpb.CorpusPathFilters, pr PathResolver) (*corpusPathFilter, error) {
+ if len(fs.GetFilter()) == 0 {
+ return nil, nil
+ }
+ if pr == nil {
+ pr = DefaultResolvePath
+ }
+ f := &corpusPathFilter{}
+ for _, filter := range fs.GetFilter() {
+ p, err := compileCorpusPathFilter(filter, pr)
+ if err != nil {
+ return nil, err
+ }
+ f.pattern = append(f.pattern, p)
+ }
+ return f, nil
+}
+
+func compileCorpusPathFilter(f *xpb.CorpusPathFilter, pr PathResolver) (*corpusPathPattern, error) {
+ p := &corpusPathPattern{pathResolver: pr}
+ if f.GetType() == xpb.CorpusPathFilter_EXCLUDE {
+ p.inverse = true
+ }
+ var err error
+ if corpus := f.GetCorpus(); corpus != "" {
+ p.corpus, err = regexp.Compile(corpus)
+ if err != nil {
+ return nil, err
+ }
+ }
+ if root := f.GetRoot(); root != "" {
+ p.root, err = regexp.Compile(root)
+ if err != nil {
+ return nil, err
+ }
+ }
+ if path := f.GetPath(); path != "" {
+ p.path, err = regexp.Compile(path)
+ if err != nil {
+ return nil, err
+ }
+ }
+ if resolvedPath := f.GetResolvedPath(); resolvedPath != "" {
+ p.resolvedPath, err = regexp.Compile(resolvedPath)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return p, nil
+}
+
+type corpusPathPattern struct {
+ corpus, root, path *regexp.Regexp
+
+ pathResolver PathResolver
+ resolvedPath *regexp.Regexp
+
+ inverse bool
+}
+
+func (p *corpusPathPattern) Allow(c *cpb.CorpusPath) bool {
+ return p.inverse != ((p.corpus == nil || p.corpus.MatchString(c.GetCorpus())) &&
+ (p.root == nil || p.root.MatchString(c.GetRoot())) &&
+ (p.path == nil || p.path.MatchString(c.GetPath())) &&
+ (p.resolvedPath == nil || p.resolvedPath.MatchString(p.pathResolver(c))))
+}
+
+type corpusPathFilter struct {
+ pattern []*corpusPathPattern
+}
+
+func (f *corpusPathFilter) Allow(c *cpb.CorpusPath) bool {
+ if f == nil || c == nil {
+ return true
+ }
+
+ for _, p := range f.pattern {
+ if !p.Allow(c) {
+ return false
+ }
+ }
+ return true
+}
+
+func (f *corpusPathFilter) AllowExpandedAnchor(a *srvpb.ExpandedAnchor) bool {
+ if f == nil || a == nil {
+ return true
+ }
+ return f.AllowTicket(a.GetTicket())
+}
+
+func (f *corpusPathFilter) AllowTicket(ticket string) bool {
+ if f == nil || ticket == "" {
+ return true
+ }
+ cp, _ := kytheuri.ParseCorpusPath(ticket)
+ return f.Allow(cp)
+}
+
+func (f *corpusPathFilter) FilterGroup(grp *srvpb.PagedCrossReferences_Group) (filtered int) {
+ if f == nil {
+ return 0
+ }
+
+ var n int
+ grp.Anchor, n = f.filterAnchors(grp.GetAnchor())
+ filtered += n
+ grp.RelatedNode, n = f.filterRelatedNodes(grp.GetRelatedNode())
+ filtered += n
+ grp.Caller, n = f.filterCallers(grp.GetCaller())
+ filtered += n
+ return
+}
+
+func (f *corpusPathFilter) filterAnchors(as []*srvpb.ExpandedAnchor) ([]*srvpb.ExpandedAnchor, int) {
+ var j int
+ for i, a := range as {
+ if !f.AllowExpandedAnchor(a) {
+ continue
+ }
+ as[j] = as[i]
+ j++
+ }
+ return as[:j], len(as) - j
+}
+
+func (f *corpusPathFilter) filterCallers(cs []*srvpb.PagedCrossReferences_Caller) ([]*srvpb.PagedCrossReferences_Caller, int) {
+ var j int
+ for i, c := range cs {
+ if !f.AllowExpandedAnchor(c.GetCaller()) {
+ continue
+ }
+ cs[j] = cs[i]
+ j++
+ }
+ return cs[:j], len(cs) - j
+}
+
+func (f *corpusPathFilter) filterRelatedNodes(rs []*srvpb.PagedCrossReferences_RelatedNode) ([]*srvpb.PagedCrossReferences_RelatedNode, int) {
+ var j int
+ for i, r := range rs {
+ if def := r.GetNode().GetDefinitionLocation().GetTicket(); (def != "" && !f.AllowTicket(def)) || (def == "" && !f.AllowTicket(r.GetNode().GetTicket())) {
+ continue
+ }
+ rs[j] = rs[i]
+ j++
+ }
+ return rs[:j], len(rs) - j
+}
diff --git a/kythe/go/serving/xrefs/xrefs_test.go b/kythe/go/serving/xrefs/xrefs_test.go
index 4f8b0cf65..6a65f76f7 100644
--- a/kythe/go/serving/xrefs/xrefs_test.go
+++ b/kythe/go/serving/xrefs/xrefs_test.go
@@ -20,6 +20,7 @@ import (
"bytes"
"context"
"sort"
+ "strconv"
"testing"
"kythe.io/kythe/go/services/xrefs"
@@ -32,6 +33,7 @@ import (
"golang.org/x/text/encoding"
"golang.org/x/text/encoding/unicode"
"golang.org/x/text/transform"
+ "google.golang.org/protobuf/encoding/prototext"
"google.golang.org/protobuf/proto"
cpb "kythe.io/kythe/proto/common_go_proto"
@@ -136,7 +138,21 @@ var (
Fact: makeFactList(
"/kythe/node/kind", "record",
),
- DefinitionLocation: &srvpb.ExpandedAnchor{Ticket: "kythe:?path=def/location#defDoc"},
+ DefinitionLocation: &srvpb.ExpandedAnchor{
+ Ticket: "kythe:?path=def/location#defDoc",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 1,
+ LineNumber: 1,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 4,
+ LineNumber: 1,
+ ColumnOffset: 4,
+ },
+ },
+ },
}, {
Ticket: "kythe:#documentedBy",
Fact: makeFactList(
@@ -662,7 +678,7 @@ func TestDecorationsRefs(t *testing.T) {
References: true,
Filter: []string{"**"},
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
if len(reply.SourceText) != 0 {
t.Errorf("Unexpected source text: %q", string(reply.SourceText))
@@ -694,7 +710,7 @@ func TestDecorationsRefScopes(t *testing.T) {
References: true,
SemanticScopes: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := refs(span.NewNormalizer(d.File.Text), d.Decoration, d.FileInfo)
if err := testutil.DeepEqual(expected, reply.Reference); err != nil {
@@ -713,7 +729,7 @@ func TestDecorationsExtendsOverrides(t *testing.T) {
SemanticScopes: true,
TargetDefinitions: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expectedOverrides := map[string]*xpb.DecorationsReply_Overrides{
"kythe://c?lang=otpl?path=/a/path#map": &xpb.DecorationsReply_Overrides{
@@ -777,7 +793,7 @@ func TestDecorationsBuildConfig(t *testing.T) {
ExtendsOverrides: true,
TargetDefinitions: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
if err := testutil.DeepEqual([]*xpb.DecorationsReply_Reference{}, reply.Reference); err != nil {
t.Fatal(err)
@@ -792,7 +808,7 @@ func TestDecorationsBuildConfig(t *testing.T) {
ExtendsOverrides: true,
TargetDefinitions: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := refs(span.NewNormalizer(d.File.Text), d.Decoration[:1], d.FileInfo)
if err := testutil.DeepEqual(expected, reply.Reference); err != nil {
@@ -849,7 +865,7 @@ func TestDecorationsDirtyBuffer(t *testing.T) {
References: true,
Filter: []string{"**"},
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
if len(reply.SourceText) != 0 {
t.Errorf("Unexpected source text: %q", string(reply.SourceText))
@@ -933,7 +949,7 @@ func TestDecorationsEmpty(t *testing.T) {
},
References: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
if len(reply.Reference) > 0 {
t.Fatalf("Unexpected DecorationsReply: {%v}", reply)
@@ -948,7 +964,7 @@ func TestDecorationsSourceText(t *testing.T) {
Location: &xpb.Location{Ticket: expected.File.Ticket},
SourceText: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
if !bytes.Equal(reply.SourceText, expected.File.Text) {
t.Errorf("Expected source text %q; found %q", string(expected.File.Text), string(reply.SourceText))
@@ -966,7 +982,7 @@ func TestDecorationsGeneratedBy(t *testing.T) {
reply, err := st.Decorations(ctx, &xpb.DecorationsRequest{
Location: &xpb.Location{Ticket: "kythe://corpus?path=/some/proto.proto?root=generated"},
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := &xpb.DecorationsReply{
Location: &xpb.Location{Ticket: "kythe://corpus?path=/some/proto.proto?root=generated"},
@@ -990,7 +1006,7 @@ func TestDecorationsRevisions(t *testing.T) {
reply, err := st.Decorations(ctx, &xpb.DecorationsRequest{
Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := &xpb.DecorationsReply{
Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
@@ -1014,7 +1030,7 @@ func TestDecorationsRevisions(t *testing.T) {
Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
References: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := &xpb.DecorationsReply{
Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
@@ -1071,7 +1087,7 @@ func TestDecorationsRevisions(t *testing.T) {
References: true,
TargetDefinitions: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := &xpb.DecorationsReply{
Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
@@ -1143,7 +1159,7 @@ func TestDecorationsDiagnostics(t *testing.T) {
Location: &xpb.Location{Ticket: d.File.Ticket},
Diagnostics: true,
})
- testutil.FatalOnErrT(t, "DecorationsRequest error: %v", err)
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
expected := tbl.Decorations[1].Diagnostic
if err := testutil.DeepEqual(expected, reply.Diagnostic); err != nil {
@@ -1158,7 +1174,7 @@ func TestCrossReferencesNone(t *testing.T) {
DefinitionKind: xpb.CrossReferencesRequest_ALL_DEFINITIONS,
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
if len(reply.CrossReferences) > 0 || len(reply.Nodes) > 0 {
t.Fatalf("Expected empty CrossReferencesReply; found %v", reply)
@@ -1175,7 +1191,7 @@ func TestCrossReferences(t *testing.T) {
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
Snippets: xpb.SnippetsKind_DEFAULT,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1285,6 +1301,363 @@ func TestCrossReferences(t *testing.T) {
}
}
+type mockPatcher struct {
+ files []*srvpb.FileInfo
+}
+
+func (p *mockPatcher) Close() error { return nil }
+func (p *mockPatcher) AddFile(ctx context.Context, f *srvpb.FileInfo) error {
+ if f != nil {
+ p.files = append(p.files, f)
+ }
+ return nil
+}
+func (p *mockPatcher) patchSpan(span *cpb.Span) {
+ if span == nil {
+ return
+ }
+ // Just move everything over by 1-ish
+ span.Start.ByteOffset++
+ span.Start.LineNumber++
+ span.Start.ColumnOffset++
+ span.End.ByteOffset++
+ span.End.LineNumber++
+ span.End.ColumnOffset++
+}
+func (p *mockPatcher) patchAnchor(a *xpb.Anchor) {
+ p.patchSpan(a.Span)
+ p.patchSpan(a.SnippetSpan)
+}
+
+func (p *mockPatcher) PatchAnchors(ctx context.Context, as []*xpb.Anchor) ([]*xpb.Anchor, error) {
+ for _, a := range as {
+ p.patchAnchor(a)
+ }
+ return as, nil
+}
+func (p *mockPatcher) PatchRelatedAnchors(ctx context.Context, as []*xpb.CrossReferencesReply_RelatedAnchor) ([]*xpb.CrossReferencesReply_RelatedAnchor, error) {
+ for _, a := range as {
+ p.patchAnchor(a.Anchor)
+ for _, site := range a.Site {
+ p.patchAnchor(site)
+ }
+ }
+ return as, nil
+}
+
+func TestDecorationsPatching(t *testing.T) {
+ st := tbl.Construct(t)
+
+ patcher := &mockPatcher{}
+ st.MakePatcher = func(ctx context.Context, ws *xpb.Workspace) (MultiFilePatcher, error) {
+ return patcher, nil
+ }
+
+ reply, err := st.Decorations(ctx, &xpb.DecorationsRequest{
+ Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
+ References: true,
+ TargetDefinitions: true,
+
+ Workspace: &xpb.Workspace{Uri: "test:"},
+ PatchAgainstWorkspace: true,
+ })
+ testutil.Fatalf(t, "DecorationsRequest error: %v", err)
+
+ expected := &xpb.DecorationsReply{
+ Location: &xpb.Location{Ticket: "kythe://corpus?path=file/infos"},
+ Revision: "overallFileRev",
+ GeneratedByFile: []*xpb.File{{
+ CorpusPath: &cpb.CorpusPath{
+ Corpus: "corpus",
+ Path: "some/proto.proto",
+ },
+ Revision: "generatedRev",
+ }},
+ Reference: []*xpb.DecorationsReply_Reference{{
+ TargetTicket: "kythe://corpus?path=another/file",
+ Kind: "/kythe/edge/includes/ref",
+ TargetRevision: "anotherFileRev",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 0,
+ LineNumber: 1,
+ ColumnOffset: 0,
+ },
+ End: &cpb.Point{
+ ByteOffset: 4,
+ LineNumber: 1,
+ ColumnOffset: 4,
+ },
+ },
+ }, {
+ TargetTicket: "kythe://corpus?path=def/file#node",
+ TargetDefinition: "kythe://corpus?path=def/file#anchor",
+ Kind: "/kythe/edge/ref",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 5,
+ LineNumber: 1,
+ ColumnOffset: 5,
+ },
+ End: &cpb.Point{
+ ByteOffset: 9,
+ LineNumber: 1,
+ ColumnOffset: 9,
+ },
+ },
+ }},
+ DefinitionLocations: map[string]*xpb.Anchor{
+ "kythe://corpus?path=def/file#anchor": &xpb.Anchor{
+ Ticket: "kythe://corpus?path=def/file#anchor",
+ Parent: "kythe://corpus?path=def/file",
+ Revision: "defFileRev",
+ Span: &cpb.Span{
+ Start: &cpb.Point{ByteOffset: 1, LineNumber: 2, ColumnOffset: 1},
+ End: &cpb.Point{ByteOffset: 5, LineNumber: 2, ColumnOffset: 5},
+ },
+ },
+ },
+ }
+
+ if diff := compare.ProtoDiff(expected, reply); diff != "" {
+ t.Fatalf("Unexpected diff (- expected; + found):\n%s", diff)
+ }
+}
+
+func TestCrossReferencesPatching(t *testing.T) {
+ ticket := "kythe://someCorpus?lang=otpl#signature"
+
+ st := tbl.Construct(t)
+ patcher := &mockPatcher{}
+ st.MakePatcher = func(ctx context.Context, ws *xpb.Workspace) (MultiFilePatcher, error) {
+ return patcher, nil
+ }
+ reply, err := st.CrossReferences(ctx, &xpb.CrossReferencesRequest{
+ Ticket: []string{ticket},
+ DefinitionKind: xpb.CrossReferencesRequest_BINDING_DEFINITIONS,
+ ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
+ Snippets: xpb.SnippetsKind_DEFAULT,
+
+ Workspace: &xpb.Workspace{Uri: "test:"},
+ PatchAgainstWorkspace: true,
+ })
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
+
+ expected := &xpb.CrossReferencesReply_CrossReferenceSet{
+ Ticket: ticket,
+
+ Reference: []*xpb.CrossReferencesReply_RelatedAnchor{{Anchor: &xpb.Anchor{
+ Ticket: "kythe:?path=some/utf16/file#0-4",
+ Kind: "/kythe/edge/ref",
+ Parent: "kythe:?path=some/utf16/file",
+
+ Span: &cpb.Span{
+ Start: &cpb.Point{ByteOffset: 1, LineNumber: 2, ColumnOffset: 1},
+ End: &cpb.Point{ByteOffset: 5, LineNumber: 2, ColumnOffset: 5},
+ },
+
+ SnippetSpan: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 1,
+ LineNumber: 2,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 29,
+ LineNumber: 2,
+ ColumnOffset: 29,
+ },
+ },
+ Snippet: "これはいくつかのテキストです",
+ }}, {Anchor: &xpb.Anchor{
+ Ticket: "kythe://c?lang=otpl?path=/a/path#51-55",
+ Kind: "/kythe/edge/ref",
+ Parent: "kythe://c?path=/a/path",
+
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 52,
+ LineNumber: 5,
+ ColumnOffset: 16,
+ },
+ End: &cpb.Point{
+ ByteOffset: 56,
+ LineNumber: 6,
+ ColumnOffset: 3,
+ },
+ },
+
+ SnippetSpan: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 37,
+ LineNumber: 5,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 53,
+ LineNumber: 5,
+ ColumnOffset: 17,
+ },
+ },
+ Snippet: "some random text",
+ }}},
+
+ Definition: []*xpb.CrossReferencesReply_RelatedAnchor{{Anchor: &xpb.Anchor{
+ Ticket: "kythe://c?lang=otpl?path=/a/path#27-33",
+ Kind: "/kythe/edge/defines/binding",
+ Parent: "kythe://c?path=/a/path",
+ BuildConfig: "testConfig",
+
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 28,
+ LineNumber: 3,
+ ColumnOffset: 11,
+ },
+ End: &cpb.Point{
+ ByteOffset: 34,
+ LineNumber: 4,
+ ColumnOffset: 6,
+ },
+ },
+
+ SnippetSpan: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 18,
+ LineNumber: 3,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 28,
+ LineNumber: 3,
+ ColumnOffset: 11,
+ },
+ },
+ Snippet: "here and ",
+ }}},
+ }
+ expectedInfos := []*srvpb.FileInfo{}
+
+ xr := reply.CrossReferences[ticket]
+ if xr == nil {
+ t.Fatalf("Missing expected CrossReferences; found: %#v", reply)
+ }
+ sort.Sort(byOffset(xr.Reference))
+
+ if err := testutil.DeepEqual(expected, xr); err != nil {
+ t.Fatal(err)
+ }
+ if err := testutil.DeepEqual(expectedInfos, patcher.files); err != nil {
+ t.Fatal(err)
+ }
+}
+
+func TestCrossReferencesFiltering(t *testing.T) {
+ ticket := "kythe://someCorpus?lang=otpl#signature"
+
+ st := tbl.Construct(t)
+ reply, err := st.CrossReferences(ctx, &xpb.CrossReferencesRequest{
+ Ticket: []string{ticket},
+ DefinitionKind: xpb.CrossReferencesRequest_BINDING_DEFINITIONS,
+ ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
+ Snippets: xpb.SnippetsKind_DEFAULT,
+
+ CorpusPathFilters: mustParseFilters(`
+filter: {
+ type: INCLUDE_ONLY
+ corpus: "^c$"
+}
+ `),
+ })
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
+
+ expected := &xpb.CrossReferencesReply_CrossReferenceSet{
+ Ticket: ticket,
+
+ Reference: []*xpb.CrossReferencesReply_RelatedAnchor{{Anchor: &xpb.Anchor{
+ Ticket: "kythe://c?lang=otpl?path=/a/path#51-55",
+ Kind: "/kythe/edge/ref",
+ Parent: "kythe://c?path=/a/path",
+
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 51,
+ LineNumber: 4,
+ ColumnOffset: 15,
+ },
+ End: &cpb.Point{
+ ByteOffset: 55,
+ LineNumber: 5,
+ ColumnOffset: 2,
+ },
+ },
+
+ SnippetSpan: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 36,
+ LineNumber: 4,
+ },
+ End: &cpb.Point{
+ ByteOffset: 52,
+ LineNumber: 4,
+ ColumnOffset: 16,
+ },
+ },
+ Snippet: "some random text",
+ }}},
+
+ Definition: []*xpb.CrossReferencesReply_RelatedAnchor{{Anchor: &xpb.Anchor{
+ Ticket: "kythe://c?lang=otpl?path=/a/path#27-33",
+ Kind: "/kythe/edge/defines/binding",
+ Parent: "kythe://c?path=/a/path",
+ BuildConfig: "testConfig",
+
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 27,
+ LineNumber: 2,
+ ColumnOffset: 10,
+ },
+ End: &cpb.Point{
+ ByteOffset: 33,
+ LineNumber: 3,
+ ColumnOffset: 5,
+ },
+ },
+
+ SnippetSpan: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 17,
+ LineNumber: 2,
+ },
+ End: &cpb.Point{
+ ByteOffset: 27,
+ LineNumber: 2,
+ ColumnOffset: 10,
+ },
+ },
+ Snippet: "here and ",
+ }}},
+ }
+
+ if err := testutil.DeepEqual(&xpb.CrossReferencesReply_Total{
+ Definitions: 1,
+ References: 1,
+ }, reply.Total); err != nil {
+ t.Error(err)
+ }
+
+ xr := reply.CrossReferences[ticket]
+ if xr == nil {
+ t.Fatalf("Missing expected CrossReferences; found: %s", reply)
+ }
+ sort.Sort(byOffset(xr.Reference))
+
+ if diff := compare.ProtoDiff(expected, xr); diff != "" {
+ t.Fatalf("(-expected; +found):\n%s", diff)
+ }
+}
+
func TestCrossReferences_BuildConfigRefs(t *testing.T) {
ticket := "kythe://someCorpus?lang=otpl#signature"
@@ -1296,7 +1669,7 @@ func TestCrossReferences_BuildConfigRefs(t *testing.T) {
Snippets: xpb.SnippetsKind_DEFAULT,
BuildConfig: []string{"testConfig"},
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1360,7 +1733,7 @@ func TestCrossReferencesRelatedNodes(t *testing.T) {
Ticket: []string{ticket},
Filter: []string{"**"},
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1415,7 +1788,7 @@ func TestCrossReferencesMarkedSource(t *testing.T) {
Ticket: []string{ticket},
Filter: []string{"**"},
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1464,7 +1837,7 @@ func TestCrossReferencesMerge(t *testing.T) {
CallerKind: xpb.CrossReferencesRequest_DIRECT_CALLERS,
Filter: []string{"**"},
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1532,7 +1905,7 @@ func TestCrossReferencesIndirection(t *testing.T) {
Ticket: []string{ticket},
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1572,7 +1945,7 @@ func TestCrossReferencesIndirection(t *testing.T) {
Ticket: []string{ticket},
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1641,7 +2014,7 @@ func TestCrossReferencesIndirection(t *testing.T) {
Ticket: []string{ticket},
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1710,7 +2083,7 @@ func TestCrossReferencesIndirection(t *testing.T) {
Ticket: []string{ticket},
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1762,7 +2135,7 @@ func TestCrossReferencesIndirection(t *testing.T) {
Ticket: []string{ticket},
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1840,7 +2213,7 @@ func TestCrossReferencesDirectCallers(t *testing.T) {
Ticket: []string{ticket},
CallerKind: xpb.CrossReferencesRequest_DIRECT_CALLERS,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1885,7 +2258,7 @@ func TestCrossReferencesOverrideCallers(t *testing.T) {
Ticket: []string{ticket},
CallerKind: xpb.CrossReferencesRequest_OVERRIDE_CALLERS,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply_CrossReferenceSet{
Ticket: ticket,
@@ -1953,7 +2326,7 @@ func TestCrossReferencesRevisions(t *testing.T) {
ReferenceKind: xpb.CrossReferencesRequest_ALL_REFERENCES,
Snippets: xpb.SnippetsKind_NONE,
})
- testutil.FatalOnErrT(t, "CrossReferencesRequest error: %v", err)
+ testutil.Fatalf(t, "CrossReferencesRequest error: %v", err)
expected := &xpb.CrossReferencesReply{
Total: &xpb.CrossReferencesReply_Total{
@@ -2042,6 +2415,18 @@ func TestDocumentation(t *testing.T) {
"kythe:?path=def/location#defDoc": &xpb.Anchor{
Ticket: "kythe:?path=def/location#defDoc",
Parent: "kythe:?path=def/location",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 1,
+ LineNumber: 1,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 4,
+ LineNumber: 1,
+ ColumnOffset: 4,
+ },
+ },
},
},
}
@@ -2093,6 +2478,90 @@ func TestDocumentationChildren(t *testing.T) {
"kythe:?path=def/location#defDoc": &xpb.Anchor{
Ticket: "kythe:?path=def/location#defDoc",
Parent: "kythe:?path=def/location",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 1,
+ LineNumber: 1,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 4,
+ LineNumber: 1,
+ ColumnOffset: 4,
+ },
+ },
+ },
+ },
+ }
+
+ if reply == nil || err != nil {
+ t.Fatalf("Documentation call failed: (reply: %v; error: %v)", reply, err)
+ } else if diff := compare.ProtoDiff(expected, reply); diff != "" {
+ t.Fatalf("(-expected; +found):\n%s", diff)
+ }
+}
+
+func TestDocumentationPatching(t *testing.T) {
+ st := tbl.Construct(t)
+
+ patcher := &mockPatcher{}
+ st.MakePatcher = func(ctx context.Context, ws *xpb.Workspace) (MultiFilePatcher, error) {
+ return patcher, nil
+ }
+
+ reply, err := st.Documentation(ctx, &xpb.DocumentationRequest{
+ Ticket: []string{"kythe:#documented"},
+
+ IncludeChildren: true,
+
+ Workspace: &xpb.Workspace{Uri: "test:"},
+ PatchAgainstWorkspace: true,
+ })
+
+ expected := &xpb.DocumentationReply{
+ Document: []*xpb.DocumentationReply_Document{{
+ Ticket: "kythe:#documented",
+ Text: &xpb.Printable{
+ RawText: "some documentation text",
+ },
+ MarkedSource: &cpb.MarkedSource{
+ Kind: cpb.MarkedSource_IDENTIFIER,
+ PreText: "DocumentBuilderFactory",
+ },
+ Children: []*xpb.DocumentationReply_Document{{
+ Ticket: "kythe:#childDoc",
+ Text: &xpb.Printable{
+ RawText: "child document text",
+ },
+ }, {
+ Ticket: "kythe:#childDocBy",
+ Text: &xpb.Printable{
+ RawText: "second child document text",
+ },
+ }},
+ }},
+ Nodes: nodeInfos(getNodes(
+ "kythe:#childDoc",
+ "kythe:#childDocBy",
+ "kythe:#documented",
+ "kythe:#secondChildDoc",
+ )),
+ DefinitionLocations: map[string]*xpb.Anchor{
+ "kythe:?path=def/location#defDoc": &xpb.Anchor{
+ Ticket: "kythe:?path=def/location#defDoc",
+ Parent: "kythe:?path=def/location",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 2,
+ LineNumber: 2,
+ ColumnOffset: 2,
+ },
+ End: &cpb.Point{
+ ByteOffset: 5,
+ LineNumber: 2,
+ ColumnOffset: 5,
+ },
+ },
},
},
}
@@ -2126,6 +2595,18 @@ func TestDocumentationIndirection(t *testing.T) {
"kythe:?path=def/location#defDoc": &xpb.Anchor{
Ticket: "kythe:?path=def/location#defDoc",
Parent: "kythe:?path=def/location",
+ Span: &cpb.Span{
+ Start: &cpb.Point{
+ ByteOffset: 1,
+ LineNumber: 1,
+ ColumnOffset: 1,
+ },
+ End: &cpb.Point{
+ ByteOffset: 4,
+ LineNumber: 1,
+ ColumnOffset: 4,
+ },
+ },
},
},
}
@@ -2137,6 +2618,64 @@ func TestDocumentationIndirection(t *testing.T) {
}
}
+func TestCorpusPathFilters(t *testing.T) {
+ tests := []struct {
+ filters *xpb.CorpusPathFilters
+
+ includes, excludes []string
+ }{
+ {mustParseFilters(`filter: { type: INCLUDE_ONLY corpus: "^kythe3" }`),
+ []string{cps("kythe3", "", ""), cps("kythe3//branch", "", "")},
+ []string{cps("other", "", ""), cps("other", "kythe3", "kythe3")}},
+ {mustParseFilters(`filter: { type: EXCLUDE root: ".+" }`),
+ []string{cps("kythe3", "", ""), cps("kythe3//branch", "", ""), cps("oss", "", "any/path")},
+ []string{cps("kythe3", "genfiles", ""), cps("other", "bin", "some/path")}},
+ {mustParseFilters(`filter: { type: INCLUDE_ONLY corpus: "^kythe3" root: "genfiles" }`),
+ []string{cps("kythe3", "genfiles", ""), cps("kythe3//branch", "genfiles", "")},
+ []string{cps("kythe2", "genfiles", ""), cps("kythe3", "bin", "path"), cps("other", "bin", "some/path")}},
+ {mustParseFilters(`filter: { type: INCLUDE_ONLY corpus: "kythe" } filter: { type: INCLUDE_ONLY corpus: "2|3" }`),
+ []string{cps("kythe3", "genfiles", "path"), cps("kythe2", "", "blah")},
+ []string{cps("kythe4", "", ""), cps("kythe", "kythe2", "kythe3")}},
+ {mustParseFilters(`filter: { type: EXCLUDE root: ".+" } filter: { type: INCLUDE_ONLY corpus: "^kythe3"}`),
+ []string{cps("kythe3", "", "any/path"), cps("kythe3//branch", "", "some/path")},
+ []string{cps("kythe3", "genfiles", "any/path"), cps("kythe3//branch", "bin", "some/path")}},
+ {mustParseFilters(`filter: { type: INCLUDE_ONLY resolved_path: "^kythe3/branch/genfiles/"}`),
+ []string{cps("kythe3//branch", "genfiles", "any/path"), cps("kythe3//branch", "genfiles/more", "any/path")},
+ []string{cps("kythe3", "bin", "any/path"), cps("kythe3", "genfiles", "some/path")}},
+ }
+
+ for i, test := range tests {
+ t.Run(strconv.Itoa(i), func(t *testing.T) {
+ f, err := compileCorpusPathFilters(test.filters, nil)
+ testutil.Fatalf(t, "Error: %v", err)
+
+ for _, include := range test.includes {
+ if !f.AllowTicket(include) {
+ t.Errorf("Expected %q to be included but it wasn't", include)
+ }
+ }
+ for _, exclude := range test.excludes {
+ if f.AllowTicket(exclude) {
+ t.Errorf("Expected %q to be excluded but it wasn't", exclude)
+ }
+ }
+ })
+ }
+}
+
+func cps(corpus, root, path string) string {
+ u := &kytheuri.URI{Corpus: corpus, Root: root, Path: path}
+ return u.String()
+}
+
+func mustParseFilters(msg string) *xpb.CorpusPathFilters {
+ var f xpb.CorpusPathFilters
+ if err := prototext.Unmarshal([]byte(msg), &f); err != nil {
+ panic(err)
+ }
+ return &f
+}
+
// byOffset implements the sort.Interface for *xpb.CrossReferencesReply_RelatedAnchors.
type byOffset []*xpb.CrossReferencesReply_RelatedAnchor
@@ -2196,16 +2735,16 @@ type testTable struct {
func (tbl *testTable) Construct(t *testing.T) *Table {
p := make(testProtoTable)
for _, d := range tbl.Decorations {
- testutil.FatalOnErrT(t, "Error writing file decorations: %v", p.Put(ctx, DecorationsKey(mustFix(t, d.File.Ticket)), d))
+ testutil.Fatalf(t, "Error writing file decorations: %v", p.Put(ctx, DecorationsKey(mustFix(t, d.File.Ticket)), d))
}
for _, cr := range tbl.RefSets {
- testutil.FatalOnErrT(t, "Error writing cross-references: %v", p.Put(ctx, CrossReferencesKey(mustFix(t, cr.SourceTicket)), cr))
+ testutil.Fatalf(t, "Error writing cross-references: %v", p.Put(ctx, CrossReferencesKey(mustFix(t, cr.SourceTicket)), cr))
}
for _, crp := range tbl.RefPages {
- testutil.FatalOnErrT(t, "Error writing cross-references: %v", p.Put(ctx, CrossReferencesPageKey(crp.PageKey), crp))
+ testutil.Fatalf(t, "Error writing cross-references: %v", p.Put(ctx, CrossReferencesPageKey(crp.PageKey), crp))
}
for _, doc := range tbl.Documents {
- testutil.FatalOnErrT(t, "Error writing documents: %v", p.Put(ctx, DocumentationKey(doc.Ticket), doc))
+ testutil.Fatalf(t, "Error writing documents: %v", p.Put(ctx, DocumentationKey(doc.Ticket), doc))
}
return NewCombinedTable(p)
}
diff --git a/kythe/go/storage/entryset/entryset.go b/kythe/go/storage/entryset/entryset.go
index fd3efb49a..71b2f8a93 100644
--- a/kythe/go/storage/entryset/entryset.go
+++ b/kythe/go/storage/entryset/entryset.go
@@ -19,20 +19,20 @@
//
// Call New to construct an empty set, and use the Add method to add entries:
//
-// set := entryset.New(nil)
-// for entry := range readEntries() {
-// if err := set.Add(entry); err != nil {
-// log.Exitf("Invalid entry: %v", err)
-// }
-// }
+// set := entryset.New(nil)
+// for entry := range readEntries() {
+// if err := set.Add(entry); err != nil {
+// log.Exitf("Invalid entry: %v", err)
+// }
+// }
//
// Entries are automatically deduplicated. You can traverse the contents of an
// entry set with the Visit method, which takes a callback:
//
-// set.Visit(func(e *storagepb.Entry) bool {
-// process(e)
-// return wantMore
-// })
+// set.Visit(func(e *storagepb.Entry) bool {
+// process(e)
+// return wantMore
+// })
//
// An entry set may or may not be "canonical": A canonical entry set has the
// property that calling its Visit method will deliver all the entries in the
@@ -40,19 +40,19 @@
// newly-created entry set is canonical; a call to Add may invalidate this
// status. Call the Canonicalize method to canonicalize an entryset.
//
-// set := entryset.New(nil) // set is canonical
-// set.Add(e) // set is no longer canonical
-// set.Canonicalize() // set is (once again) canonical
+// set := entryset.New(nil) // set is canonical
+// set.Add(e) // set is no longer canonical
+// set.Canonicalize() // set is (once again) canonical
//
// An entryset can be converted into a kythe.storage.EntrySet protobuf message
// using the Encode method. This message is defined in entryset.proto. You can
// construct a Set from an EntrySet message using Decode:
//
-// pb := old.Encode()
-// new, err := entryset.Decode(pb)
-// if err != nil {
-// log.Exitf("Invalid entryset message: %v", err)
-// }
+// pb := old.Encode()
+// new, err := entryset.Decode(pb)
+// if err != nil {
+// log.Exitf("Invalid entryset message: %v", err)
+// }
//
// When rendered in wire format, the protobuf encoding is considerably more
// compact than a naive entry stream.
diff --git a/kythe/go/storage/tools/directory_indexer/directory_indexer.go b/kythe/go/storage/tools/directory_indexer/directory_indexer.go
index 575609ba7..af4dd1e61 100644
--- a/kythe/go/storage/tools/directory_indexer/directory_indexer.go
+++ b/kythe/go/storage/tools/directory_indexer/directory_indexer.go
@@ -18,32 +18,34 @@
// files in the given directories.
//
// For instance, a file 'kythe/javatests/com/google/devtools/kythe/util/BUILD' would produce two entries:
-// {
-// "fact_name": "/kythe/node/kind",
-// "fact_value": "file",
-// "source": {
-// "signature": "c2b0d93b83c1b0e22fd564278be1b0373b1dcb67ff3bb77c2f29df7c393fe580",
-// "corpus": "kythe",
-// "root": "",
-// "path": "kythe/javatests/com/google/devtools/kythe/util/BUILD",
-// "language": ""
-// }
-// }
-// {
-// "fact_name": "/kythe/text",
-// "fact_value": "...",
-// "source": {
-// "signature": "c2b0d93b83c1b0e22fd564278be1b0373b1dcb67ff3bb77c2f29df7c393fe580",
-// "corpus": "kythe",
-// "root": "",
-// "path": "kythe/javatests/com/google/devtools/kythe/util/BUILD",
-// "language": ""
-// }
-// }
+//
+// {
+// "fact_name": "/kythe/node/kind",
+// "fact_value": "file",
+// "source": {
+// "signature": "c2b0d93b83c1b0e22fd564278be1b0373b1dcb67ff3bb77c2f29df7c393fe580",
+// "corpus": "kythe",
+// "root": "",
+// "path": "kythe/javatests/com/google/devtools/kythe/util/BUILD",
+// "language": ""
+// }
+// }
+// {
+// "fact_name": "/kythe/text",
+// "fact_value": "...",
+// "source": {
+// "signature": "c2b0d93b83c1b0e22fd564278be1b0373b1dcb67ff3bb77c2f29df7c393fe580",
+// "corpus": "kythe",
+// "root": "",
+// "path": "kythe/javatests/com/google/devtools/kythe/util/BUILD",
+// "language": ""
+// }
+// }
//
// Usage:
-// directory_indexer --corpus kythe --root kythe ~/repo/kythe/ \
-// --exclude '^buildtools,^bazel-,^third_party,~$,#$,(^|/)\.'
+//
+// directory_indexer --corpus kythe --root kythe ~/repo/kythe/ \
+// --exclude '^buildtools,^bazel-,^third_party,~$,#$,(^|/)\.'
package main
import (
diff --git a/kythe/go/storage/tools/triples/triples.go b/kythe/go/storage/tools/triples/triples.go
index d193a122c..a0f59d7fe 100644
--- a/kythe/go/storage/tools/triples/triples.go
+++ b/kythe/go/storage/tools/triples/triples.go
@@ -17,10 +17,11 @@
// Binary triples implements a converter from an Entry stream to a stream of triples.
//
// Examples:
-// triples < entries > triples.nq
-// triples entries > triples.nq.gz
-// triples --graphstore path/to/gs > triples.nq.gz
-// triples entries triples.nq
+//
+// triples < entries > triples.nq
+// triples entries > triples.nq.gz
+// triples --graphstore path/to/gs > triples.nq.gz
+// triples entries triples.nq
//
// Reference: http://en.wikipedia.org/wiki/N-Triples
package main
diff --git a/kythe/go/storage/tools/write_entries/write_entries.go b/kythe/go/storage/tools/write_entries/write_entries.go
index 2fc0a60d3..427c71a6a 100644
--- a/kythe/go/storage/tools/write_entries/write_entries.go
+++ b/kythe/go/storage/tools/write_entries/write_entries.go
@@ -18,16 +18,19 @@
// writes each to a graphstore server.
//
// Usage:
-// entry_emitter ... | write_entries --graphstore addr
+//
+// entry_emitter ... | write_entries --graphstore addr
//
// Example:
-// java_indexer_server --port 8181 &
-// graphstore --port 9999 &
-// analysis_driver --analyzer localhost:8181 /tmp/compilation.kindex | \
-// write_entries --workers 10 --graphstore localhost:9999
+//
+// java_indexer_server --port 8181 &
+// graphstore --port 9999 &
+// analysis_driver --analyzer localhost:8181 /tmp/compilation.kindex | \
+// write_entries --workers 10 --graphstore localhost:9999
//
// Example:
-// zcat entries.gz | write_entries --graphstore gs/leveldb
+//
+// zcat entries.gz | write_entries --graphstore gs/leveldb
package main
import (
diff --git a/kythe/go/test/services/graphstore/graphstore.go b/kythe/go/test/services/graphstore/graphstore.go
index b0f730e1e..6e4eaac5c 100644
--- a/kythe/go/test/services/graphstore/graphstore.go
+++ b/kythe/go/test/services/graphstore/graphstore.go
@@ -54,10 +54,10 @@ var ctx = context.Background()
func BatchWriteBenchmark(b *testing.B, create CreateFunc, batchSize int) {
b.StopTimer()
gs, destroy, err := create()
- testutil.FatalOnErr(b, "CreateFunc error: %v", err)
+ testutil.Fatalf(b, "CreateFunc error: %v", err)
defer func() {
- testutil.FatalOnErr(b, "gs close error: %v", gs.Close(ctx))
- testutil.FatalOnErr(b, "DestroyFunc error: %v", destroy())
+ testutil.Fatalf(b, "gs close error: %v", gs.Close(ctx))
+ testutil.Fatalf(b, "DestroyFunc error: %v", destroy())
}()
updates := make([]spb.WriteRequest_Update, batchSize)
@@ -73,7 +73,7 @@ func BatchWriteBenchmark(b *testing.B, create CreateFunc, batchSize int) {
req.Update[j] = &updates[j]
}
- testutil.FatalOnErr(b, "write error: %v", gs.Write(ctx, req))
+ testutil.Fatalf(b, "write error: %v", gs.Write(ctx, req))
}
}
@@ -81,10 +81,10 @@ func BatchWriteBenchmark(b *testing.B, create CreateFunc, batchSize int) {
// CreateFunc created graphstore.Service.
func OrderTest(t *testing.T, create CreateFunc, batchSize int) {
gs, destroy, err := create()
- testutil.FatalOnErrT(t, "CreateFunc error: %v", err)
+ testutil.Fatalf(t, "CreateFunc error: %v", err)
defer func() {
- testutil.FatalOnErrT(t, "gs close error: %v", gs.Close(ctx))
- testutil.FatalOnErrT(t, "DestroyFunc error: %v", destroy())
+ testutil.Fatalf(t, "gs close error: %v", gs.Close(ctx))
+ testutil.Fatalf(t, "DestroyFunc error: %v", destroy())
}()
updates := make([]spb.WriteRequest_Update, batchSize)
@@ -100,11 +100,11 @@ func OrderTest(t *testing.T, create CreateFunc, batchSize int) {
req.Update[j] = &updates[j]
}
- testutil.FatalOnErrT(t, "write error: %v", gs.Write(ctx, req))
+ testutil.Fatalf(t, "write error: %v", gs.Write(ctx, req))
}
var lastEntry *spb.Entry
- testutil.FatalOnErrT(t, "entryLess error: %v",
+ testutil.Fatalf(t, "entryLess error: %v",
gs.Scan(ctx, new(spb.ScanRequest), func(entry *spb.Entry) error {
if compare.Entries(lastEntry, entry) != compare.LT {
return fmt.Errorf("expected {%v} < {%v}", lastEntry, entry)
diff --git a/kythe/go/test/storage/keyvalue/keyvalue.go b/kythe/go/test/storage/keyvalue/keyvalue.go
index 26e01e3d3..90670c2e3 100644
--- a/kythe/go/test/storage/keyvalue/keyvalue.go
+++ b/kythe/go/test/storage/keyvalue/keyvalue.go
@@ -53,23 +53,23 @@ var ctx = context.Background()
// The number of updates per write is configured with batchSize.
func BatchWriteBenchmark(b *testing.B, create CreateFunc, batchSize int) {
db, destroy, err := create()
- testutil.FatalOnErr(b, "CreateFunc error: %v", err)
+ testutil.Fatalf(b, "CreateFunc error: %v", err)
defer func() {
- testutil.FatalOnErr(b, "db close error: %v", db.Close(ctx))
- testutil.FatalOnErr(b, "DestroyFunc error: %v", destroy())
+ testutil.Fatalf(b, "db close error: %v", db.Close(ctx))
+ testutil.Fatalf(b, "DestroyFunc error: %v", destroy())
}()
keyBuf := make([]byte, keySize)
valBuf := make([]byte, valSize)
for i := 0; i < b.N; i++ {
wr, err := db.Writer(ctx)
- testutil.FatalOnErr(b, "writer error: %v", err)
+ testutil.Fatalf(b, "writer error: %v", err)
for j := 0; j < batchSize; j++ {
testutil.RandBytes(keyBuf)
testutil.RandBytes(valBuf)
- testutil.FatalOnErr(b, "write error: %v", wr.Write(keyBuf, valBuf))
+ testutil.Fatalf(b, "write error: %v", wr.Write(keyBuf, valBuf))
}
- testutil.FatalOnErr(b, "writer close error: %v", wr.Close())
+ testutil.Fatalf(b, "writer close error: %v", wr.Close())
}
}
@@ -78,10 +78,10 @@ func BatchWriteBenchmark(b *testing.B, create CreateFunc, batchSize int) {
// batchSize.
func BatchWriteParallelBenchmark(b *testing.B, create CreateFunc, batchSize int) {
db, destroy, err := create()
- testutil.FatalOnErr(b, "CreateFunc error: %v", err)
+ testutil.Fatalf(b, "CreateFunc error: %v", err)
defer func() {
- testutil.FatalOnErr(b, "db close error: %v", db.Close(ctx))
- testutil.FatalOnErr(b, "DestroyFunc error: %v", destroy())
+ testutil.Fatalf(b, "db close error: %v", db.Close(ctx))
+ testutil.Fatalf(b, "DestroyFunc error: %v", destroy())
}()
b.RunParallel(func(pb *testing.PB) {
@@ -89,13 +89,13 @@ func BatchWriteParallelBenchmark(b *testing.B, create CreateFunc, batchSize int)
valBuf := make([]byte, valSize)
for pb.Next() {
wr, err := db.Writer(ctx)
- testutil.FatalOnErr(b, "writer error: %v", err)
+ testutil.Fatalf(b, "writer error: %v", err)
for j := 0; j < batchSize; j++ {
testutil.RandBytes(keyBuf)
testutil.RandBytes(valBuf)
- testutil.FatalOnErr(b, "write error: %v", wr.Write(keyBuf, valBuf))
+ testutil.Fatalf(b, "write error: %v", wr.Write(keyBuf, valBuf))
}
- testutil.FatalOnErr(b, "writer close error: %v", wr.Close())
+ testutil.Fatalf(b, "writer close error: %v", wr.Close())
}
})
}
diff --git a/kythe/go/test/testutil/BUILD b/kythe/go/test/testutil/BUILD
index 2df50bc23..fceb6d853 100644
--- a/kythe/go/test/testutil/BUILD
+++ b/kythe/go/test/testutil/BUILD
@@ -6,6 +6,7 @@ go_library(
name = "testutil",
srcs = ["testutil.go"],
deps = [
+ "//kythe/go/util/compare",
"@com_github_google_go_cmp//cmp:go_default_library",
"@io_k8s_sigs_yaml//:go_default_library",
"@org_golang_google_protobuf//proto:go_default_library",
diff --git a/kythe/go/test/testutil/testutil.go b/kythe/go/test/testutil/testutil.go
index 888e69698..95305061c 100644
--- a/kythe/go/test/testutil/testutil.go
+++ b/kythe/go/test/testutil/testutil.go
@@ -29,6 +29,8 @@ import (
"strings"
"testing"
+ "kythe.io/kythe/go/util/compare"
+
"github.com/google/go-cmp/cmp"
"google.golang.org/protobuf/proto"
"sigs.k8s.io/yaml"
@@ -48,6 +50,7 @@ func DeepEqual(expected, got interface{}) error {
if proto.Equal(epb, gpb) {
return nil
}
+ return fmt.Errorf("(-expected; +found)\n%s", compare.ProtoDiff(expected, got))
}
}
@@ -202,27 +205,19 @@ func caller(up int) (file string, line int) {
return filepath.Base(file), line
}
-// FatalOnErr calls b.Fatalf(msg, err, args...) if err != nil
-func FatalOnErr(b *testing.B, msg string, err error, args ...interface{}) {
- if err != nil {
- file, line := caller(0)
- b.Fatalf("%s:%d: "+msg, append([]interface{}{file, line, err}, args...)...)
- }
-}
-
-// FatalOnErrT calls t.Fatalf(msg, err, args...) if err != nil
-func FatalOnErrT(t *testing.T, msg string, err error, args ...interface{}) {
+// Errorf is equivalent to t.Errorf(msg, err, args...) if err != nil.
+func Errorf(t testing.TB, msg string, err error, args ...interface{}) {
if err != nil {
- file, line := caller(0)
- t.Fatalf("%s:%d: "+msg, append([]interface{}{file, line, err}, args...)...)
+ t.Helper()
+ t.Errorf(msg, append([]interface{}{err}, args...)...)
}
}
-// Errorf calls t.Errorf(msg, err, args...) if err != nil
-func Errorf(t *testing.T, msg string, err error, args ...interface{}) {
+// Fatalf is equivalent to t.Fatalf(msg, err, args...) if err != nil.
+func Fatalf(t testing.TB, msg string, err error, args ...interface{}) {
if err != nil {
- file, line := caller(0)
- t.Errorf("%s:%d: "+msg, append([]interface{}{file, line, err}, args...)...)
+ t.Helper()
+ t.Fatalf(msg, append([]interface{}{err}, args...)...)
}
}
diff --git a/kythe/go/test/tools/empty_corpus_checker/empty_corpus_checker.go b/kythe/go/test/tools/empty_corpus_checker/empty_corpus_checker.go
index 13175b9fd..802c5b661 100644
--- a/kythe/go/test/tools/empty_corpus_checker/empty_corpus_checker.go
+++ b/kythe/go/test/tools/empty_corpus_checker/empty_corpus_checker.go
@@ -68,6 +68,12 @@ func main() {
log.Fatalf("Error parsing ticket: %q, %v", src.GetTicket(), err)
}
+ // usr nodes are defined to have an empty corpus, ignore them for the
+ // purposes of this test
+ if r.URI.Language == "usr" {
+ return true
+ }
+
allCorpora.Add(r.URI.Corpus)
if r.URI.Corpus == "" {
diff --git a/kythe/go/test/tools/xrefs_atomizer/xrefs_atomizer.go b/kythe/go/test/tools/xrefs_atomizer/xrefs_atomizer.go
index 01ae9f24f..8f08774a1 100644
--- a/kythe/go/test/tools/xrefs_atomizer/xrefs_atomizer.go
+++ b/kythe/go/test/tools/xrefs_atomizer/xrefs_atomizer.go
@@ -26,7 +26,8 @@
// See kythe.io/kythe/go/test/xrefs package for details.
//
// Example:
-// xrefs_atomizer --api http://localhost:8080 kythe://kythe?path=kythe/go/util/kytheuri/uri.go
+//
+// xrefs_atomizer --api http://localhost:8080 kythe://kythe?path=kythe/go/util/kytheuri/uri.go
package main
import (
diff --git a/kythe/go/util/archive/reader.go b/kythe/go/util/archive/reader.go
index 14b1dcb82..c953e07b5 100644
--- a/kythe/go/util/archive/reader.go
+++ b/kythe/go/util/archive/reader.go
@@ -59,10 +59,10 @@ type ScanFunc func(filename string, err error, r io.Reader) error
//
// The supported archive formats are:
//
-// .zip -- ZIP archive (also .ZIP, .jar)
-// .tar -- uncompressed tar
-// .tar.gz -- gzip-compressed tar (also .tgz)
-// .tar.bz2 -- bzip2-compressed tar
+// .zip -- ZIP archive (also .ZIP, .jar)
+// .tar -- uncompressed tar
+// .tar.gz -- gzip-compressed tar (also .tgz)
+// .tar.bz2 -- bzip2-compressed tar
//
// Scan only invokes f for file entries; directories are not included.
func Scan(file File, path string, f ScanFunc) error {
diff --git a/kythe/go/util/compare/BUILD b/kythe/go/util/compare/BUILD
index ecc013e72..ce6edadc7 100644
--- a/kythe/go/util/compare/BUILD
+++ b/kythe/go/util/compare/BUILD
@@ -8,7 +8,7 @@ go_library(
deps = [
"//kythe/proto:storage_go_proto",
"@com_github_google_go_cmp//cmp:go_default_library",
- "@org_golang_google_protobuf//proto:go_default_library",
+ "@org_golang_google_protobuf//testing/protocmp:go_default_library",
],
)
diff --git a/kythe/go/util/compare/compare.go b/kythe/go/util/compare/compare.go
index 40fe3e0a1..d5310c4ef 100644
--- a/kythe/go/util/compare/compare.go
+++ b/kythe/go/util/compare/compare.go
@@ -23,7 +23,7 @@ import (
"strings"
"github.com/google/go-cmp/cmp"
- "google.golang.org/protobuf/proto"
+ "google.golang.org/protobuf/testing/protocmp"
spb "kythe.io/kythe/proto/storage_go_proto"
)
@@ -62,7 +62,8 @@ func (By) isOption() {}
// Compare returns the Order between two arbitrary values of the same type.
//
// Only the following types are currently supported:
-// {string, int, int32, []byte, bool}.
+//
+// {string, int, int32, []byte, bool}.
//
// Options may be provided to change the semantics of the comparison. Other
// types may be compared if an appropriate By Option transforms the values into
@@ -121,9 +122,10 @@ func Compare(a, b interface{}, opts ...Option) (o Order) {
// determined and returned. AndThen can be used to chain comparisons.
//
// Examples:
-// Compare(a, b, By(someField)).AndThen(a, b, By(someOtherField))
//
-// Entries(e1, e2).AndThen(e1.FactValue, e2.FactValue)
+// Compare(a, b, By(someField)).AndThen(a, b, By(someOtherField))
+//
+// Entries(e1, e2).AndThen(e1.FactValue, e2.FactValue)
func (o Order) AndThen(a, b interface{}, opts ...Option) Order {
if o != EQ {
return o
@@ -298,18 +300,6 @@ func ProtoDiff(x, y interface{}, opts ...cmp.Option) string {
func makeProtoOpts(opts []cmp.Option) []cmp.Option {
protoOpts := append([]cmp.Option{}, opts...)
- protoOpts = append(protoOpts,
- cmp.Comparer(proto.Equal),
- ignoreProtoXXXFields,
- )
+ protoOpts = append(protoOpts, protocmp.Transform())
return protoOpts
}
-
-var ignoreProtoXXXFields = cmp.FilterPath(func(p cmp.Path) bool {
- for _, s := range p {
- if strings.HasPrefix(s.String(), ".XXX_") {
- return true
- }
- }
- return false
-}, cmp.Ignore())
diff --git a/kythe/go/util/datasize/datasize.go b/kythe/go/util/datasize/datasize.go
index bcea182d1..9398920d6 100644
--- a/kythe/go/util/datasize/datasize.go
+++ b/kythe/go/util/datasize/datasize.go
@@ -123,6 +123,20 @@ func suffixSize(suffix string) (Size, error) {
}
}
+// From highest to lowest excluding Byte.
+var allUnits = []Size{
+ Pebibyte,
+ Petabyte,
+ Tebibyte,
+ Terabyte,
+ Gibibyte,
+ Gigabyte,
+ Mebibyte,
+ Megabyte,
+ Kibibyte,
+ Kilobyte,
+}
+
// Common decimal data sizes
const (
Kilobyte Size = 1000 * Byte
@@ -142,6 +156,53 @@ const (
Pebibyte = 1024 * Tebibyte
)
+func unitSuffix(unit Size) string {
+ switch unit {
+ default:
+ return "B"
+ case Petabyte:
+ return "PB"
+ case Pebibyte:
+ return "PiB"
+ case Terabyte:
+ return "TB"
+ case Tebibyte:
+ return "TiB"
+ case Gigabyte:
+ return "GB"
+ case Gibibyte:
+ return "GiB"
+ case Megabyte:
+ return "MB"
+ case Mebibyte:
+ return "MiB"
+ case Kilobyte:
+ return "kB"
+ case Kibibyte:
+ return "KiB"
+ }
+}
+
+// Floor returns a Size nearest to a whole unit less than or equal to itself.
+func (s Size) Floor() Size {
+ for _, unit := range allUnits {
+ if s >= unit {
+ return (s / unit) * unit
+ }
+ }
+ return s
+}
+
+// Round returns a Size nearest to a whole unit.
+func (s Size) Round() Size {
+ for _, unit := range allUnits {
+ if s >= unit {
+ return Size(math.Round(float64(s)/float64(unit))) * unit
+ }
+ }
+ return s
+}
+
// String implements the Stringer interface.
func (s Size) String() string {
switch {
diff --git a/kythe/go/util/datasize/datasize_test.go b/kythe/go/util/datasize/datasize_test.go
index 7d2798e9e..01563d4e1 100644
--- a/kythe/go/util/datasize/datasize_test.go
+++ b/kythe/go/util/datasize/datasize_test.go
@@ -17,6 +17,7 @@
package datasize
import (
+ "strings"
"testing"
"kythe.io/kythe/go/test/testutil"
@@ -48,7 +49,7 @@ func TestParse(t *testing.T) {
for _, test := range tests {
found, err := Parse(test.str)
- testutil.FatalOnErrT(t, "Unexpected error: %v", err)
+ testutil.Fatalf(t, "Unexpected error: %v", err)
if found != test.sz {
t.Errorf("Parse(%q): expected: %s; found: %s", test.str, test.sz, found)
}
@@ -85,3 +86,113 @@ func TestString(t *testing.T) {
}
}
}
+
+func mustParse(s string) Size {
+ sz, err := Parse(s)
+ if err != nil {
+ panic(err)
+ }
+ return sz
+}
+
+func TestRoundtrip(t *testing.T) {
+ // Roundtripping through String() works for values when at most 2 decimal
+ // place precision is needed.
+ tests := []Size{
+ 0,
+ 1023,
+ mustParse("1.02KiB"),
+ mustParse("1.12MiB"),
+ }
+
+ for _, unit := range allUnits {
+ tests = append(tests, unit)
+ }
+
+ for _, size := range tests {
+ str := size.String()
+ if found, err := Parse(str); err != nil {
+ t.Errorf("Parse(%q.String()): error: %v", size, err)
+ } else if found != size {
+ t.Errorf("Parse(Size(%d).String()): expected: %d; found: %d", size, size, found)
+ }
+ }
+}
+
+func TestUnits(t *testing.T) {
+ for i := 0; i < len(allUnits); i++ {
+ if expected := unitSuffix(allUnits[i]); !strings.HasSuffix(allUnits[i].String(), expected) {
+ t.Errorf("expected suffix: %s; found: %s", expected, allUnits[i])
+ }
+ if i != len(allUnits)-1 && allUnits[i] <= allUnits[i+1] {
+ t.Errorf("%s >= %s", allUnits[i], allUnits[i+1])
+ }
+ }
+}
+
+func TestFloor(t *testing.T) {
+ type test struct {
+ sz Size
+ expected Size
+ }
+ tests := []test{
+ {0, 0},
+ {10, 10},
+
+ {mustParse("1.02KiB"), Kibibyte},
+ {mustParse("1.45MiB"), Mebibyte},
+ {mustParse("1.32GiB"), Gibibyte},
+ {mustParse("1.6PiB"), Pebibyte},
+
+ {mustParse("1.02KB"), Kilobyte},
+ {mustParse("1.02MB"), Megabyte},
+ {mustParse("1.02GB"), Gigabyte},
+ {mustParse("1.02PB"), Petabyte},
+ }
+
+ for _, unit := range allUnits {
+ tests = append(tests, test{unit, unit})
+ }
+
+ for _, test := range tests {
+ found := test.sz.Floor()
+ if found != test.expected {
+ t.Errorf("%d.Floor(): expected: %s; found: %s", test.sz, test.expected, found)
+ }
+ if strings.Contains(found.String(), ".") {
+ t.Errorf("%d.Floor() == %s: contains decimal", test.sz, found)
+ }
+ }
+}
+
+func TestRound(t *testing.T) {
+ type test struct {
+ sz Size
+ expected Size
+ }
+ tests := []test{
+ {0, 0},
+ {mustParse("1.02KiB"), Kibibyte},
+ {mustParse("1.9KiB"), 2 * Kibibyte},
+ {mustParse("1.45MiB"), Mebibyte},
+ {mustParse("4.32GiB"), 4 * Gibibyte},
+ {mustParse("4.72GiB"), 5 * Gibibyte},
+ {mustParse("2.62GiB"), 3 * Gibibyte},
+ {mustParse("1.4PiB"), Pebibyte},
+ {mustParse("1.6PiB"), 2 * Pebibyte},
+ }
+
+ for _, unit := range allUnits {
+ tests = append(tests, test{unit, unit})
+ }
+
+ for _, test := range tests {
+ found := test.sz.Round()
+ if found != test.expected {
+ t.Errorf("%d.Round(): expected: %s; found: %s", test.sz, test.expected, found)
+ }
+ if strings.Contains(found.String(), ".") {
+ t.Errorf("%d.Round() == %s: contains decimal", test.sz, found)
+ }
+ }
+}
diff --git a/kythe/go/util/dedup/dedup_test.go b/kythe/go/util/dedup/dedup_test.go
index 8c8f7e1d1..579299aab 100644
--- a/kythe/go/util/dedup/dedup_test.go
+++ b/kythe/go/util/dedup/dedup_test.go
@@ -33,7 +33,7 @@ func TestNewErrors(t *testing.T) {
func TestIsUnique(t *testing.T) {
d, err := New(HashSize * 2)
- testutil.FatalOnErrT(t, "Error creating Deduper: %v", err)
+ testutil.Fatalf(t, "Error creating Deduper: %v", err)
tests := []struct {
val string
diff --git a/kythe/go/util/flagutil/flagutil.go b/kythe/go/util/flagutil/flagutil.go
index 0e9fc3a60..cf1008a60 100644
--- a/kythe/go/util/flagutil/flagutil.go
+++ b/kythe/go/util/flagutil/flagutil.go
@@ -35,13 +35,13 @@ import (
// SimpleUsage returns a basic flag.Usage function that prints the given
// description and list of arguments in the following format:
//
-// Usage: binary <arg0> <arg1> ... <argN>
-// <description>
+// Usage: binary <arg0> <arg1> ... <argN>
+// <description>
//
-// <build.VersionLine()>
+// <build.VersionLine()>
//
-// Flags:
-// <flag.PrintDefaults()>
+// Flags:
+// <flag.PrintDefaults()>
func SimpleUsage(description string, args ...string) func() {
return func() {
prefix := fmt.Sprintf("Usage: %s ", filepath.Base(os.Args[0]))
diff --git a/kythe/go/util/html/html.go b/kythe/go/util/html/html.go
index 575d845d4..7f3d52ed9 100644
--- a/kythe/go/util/html/html.go
+++ b/kythe/go/util/html/html.go
@@ -217,11 +217,12 @@ func copyNode(n *html.Node) *html.Node {
// Zip returns the Node at the end of the specified path where path contains
// only the following characters:
-// 'u' Parent
-// 'f' FirstChild
-// 'l' LastChild
-// 'n' NextSibling
-// 'p' PrevSibling
+//
+// 'u' Parent
+// 'f' FirstChild
+// 'l' LastChild
+// 'n' NextSibling
+// 'p' PrevSibling
func Zip(n *html.Node, path string) (*html.Node, error) {
for i, step := range path {
if n == nil {
diff --git a/kythe/go/util/keys/keys.go b/kythe/go/util/keys/keys.go
index f839aefe6..2b3553ab9 100644
--- a/kythe/go/util/keys/keys.go
+++ b/kythe/go/util/keys/keys.go
@@ -30,9 +30,9 @@ import (
// In addition to the types supported by the orderedcode library, the following
// Kythe types can be handled:
//
-// - *spb.VName
-// - int32/int
-// - bool
+// - *spb.VName
+// - int32/int
+// - bool
//
// More detail at: https://godoc.org/github.com/google/orderedcode#Append
func Append(key []byte, items ...interface{}) ([]byte, error) {
@@ -70,9 +70,9 @@ func Append(key []byte, items ...interface{}) ([]byte, error) {
// In addition to the types supported by the orderedcode library, the following
// Kythe types can be handled:
//
-// - *spb.VName
-// - int32/int
-// - bool
+// - *spb.VName
+// - int32/int
+// - bool
//
// More detail at: https://godoc.org/github.com/google/orderedcode#Parse
func Parse(key string, items ...interface{}) (remaining string, err error) {
diff --git a/kythe/go/util/kytheuri/uri.go b/kythe/go/util/kytheuri/uri.go
index 15870b832..012f639b9 100644
--- a/kythe/go/util/kytheuri/uri.go
+++ b/kythe/go/util/kytheuri/uri.go
@@ -56,6 +56,18 @@ func (u *URI) VName() *spb.VName {
}
}
+// CorpusPath returns the CorpusPath components of the URI.
+func (u *URI) CorpusPath() *cpb.CorpusPath {
+ if u == nil {
+ return new(cpb.CorpusPath)
+ }
+ return &cpb.CorpusPath{
+ Corpus: u.Corpus,
+ Root: u.Root,
+ Path: cleanPath(u.Path),
+ }
+}
+
// String renders the Kythe URI into the standard URI string format.
//
// The resulting string is in canonical ordering, so if the URI was created by
@@ -155,7 +167,7 @@ func FromVName(v *spb.VName) *URI {
}
}
-// FromCorpusPath returns a Kythe URI for the given Kythe VName protobuf message.
+// FromCorpusPath returns a Kythe URI for the given Kythe CorpusPath protobuf message.
func FromCorpusPath(cp *cpb.CorpusPath) *URI {
if cp == nil {
return &URI{}
@@ -270,6 +282,15 @@ func Parse(s string) (*URI, error) {
return decode(&r.URI, make([]byte, len(s)))
}
+// ParseCorpusPath parses a Kythe URI and returns its CorpusPath components.
+func ParseCorpusPath(s string) (*cpb.CorpusPath, error) {
+ u, err := Parse(s)
+ if err != nil {
+ return nil, err
+ }
+ return u.CorpusPath(), nil
+}
+
// decode decodes u in-place using buf as an intermediate buffer. The caller
// must ensure len(buf) is sufficient to hold the longest field. Preallocation
// reduces allocation for unescaping and saves ~200 ns/op in benchmarks.
diff --git a/kythe/go/util/markedsource/markedsource_test.go b/kythe/go/util/markedsource/markedsource_test.go
index e50aab56e..4ca5258b5 100644
--- a/kythe/go/util/markedsource/markedsource_test.go
+++ b/kythe/go/util/markedsource/markedsource_test.go
@@ -42,10 +42,11 @@ type oracleResults struct {
// output is then parsed and returned.
//
// Example utility output:
-// RenderSimpleIdentifier: "hello world"
-// RenderSimpleParams: "param"
-// RenderSimpleQualifiedName-ID: ""
-// RenderSimpleQualifiedName+ID: "hello world"
+//
+// RenderSimpleIdentifier: "hello world"
+// RenderSimpleParams: "param"
+// RenderSimpleQualifiedName-ID: ""
+// RenderSimpleQualifiedName+ID: "hello world"
func runOracle(t *testing.T, ms *cpb.MarkedSource) *oracleResults {
cmd := exec.Command(docPath, "--common_signatures")
// The doc utility expects its stdin to be a single text-format MarkedSource
diff --git a/kythe/go/util/pager/pager_test.go b/kythe/go/util/pager/pager_test.go
index 88509313b..3ac2c5f20 100644
--- a/kythe/go/util/pager/pager_test.go
+++ b/kythe/go/util/pager/pager_test.go
@@ -91,12 +91,12 @@ func TestPager(t *testing.T) {
}
ctx := context.Background()
- testutil.FatalOnErrT(t, "StartSet error: %v", p.StartSet(ctx, "head key"))
- testutil.FatalOnErrT(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
+ testutil.Fatalf(t, "StartSet error: %v", p.StartSet(ctx, "head key"))
+ testutil.Fatalf(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
Key: "key1",
Vals: []int{11, 12, 13},
}))
- testutil.FatalOnErrT(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
+ testutil.Fatalf(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
Key: "key1",
Vals: []int{14, 15, 16},
}))
@@ -115,11 +115,11 @@ func TestPager(t *testing.T) {
t.Fatalf("error checking Pages: %v", err)
}
- testutil.FatalOnErrT(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
+ testutil.Fatalf(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
Key: "key2",
Vals: []int{21},
}))
- testutil.FatalOnErrT(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
+ testutil.Fatalf(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
Key: "key2",
Vals: []int{22, 23},
}))
@@ -138,7 +138,7 @@ func TestPager(t *testing.T) {
t.Fatalf("error checking Pages: %v", err)
}
- testutil.FatalOnErrT(t, "StartSet error: %v", p.StartSet(ctx, "next set"))
+ testutil.Fatalf(t, "StartSet error: %v", p.StartSet(ctx, "next set"))
expectedSets = append(expectedSets, &testSet{
Head: "head key",
Total: 9,
@@ -156,7 +156,7 @@ func TestPager(t *testing.T) {
t.Fatalf("error checking Pages: %v", err)
}
- testutil.FatalOnErrT(t, "StartSet error: %v", p.StartSet(ctx, "final set"))
+ testutil.Fatalf(t, "StartSet error: %v", p.StartSet(ctx, "final set"))
expectedSets = append(expectedSets, &testSet{
Head: "next set",
})
@@ -168,7 +168,7 @@ func TestPager(t *testing.T) {
t.Fatalf("error checking Pages: %v", err)
}
- testutil.FatalOnErrT(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
+ testutil.Fatalf(t, "AddGroup error: %v", p.AddGroup(ctx, &testGroup{
Key: "key0",
Vals: []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
}))
@@ -194,7 +194,7 @@ func TestPager(t *testing.T) {
t.Fatalf("error checking Pages: %v", err)
}
- testutil.FatalOnErrT(t, "Flush error: %v", p.Flush(ctx))
+ testutil.Fatalf(t, "Flush error: %v", p.Flush(ctx))
expectedSets = append(expectedSets, &testSet{
Head: "final set",
Total: 12,
diff --git a/kythe/go/util/process/process_test.go b/kythe/go/util/process/process_test.go
index a7f7c5f28..5e4a06a98 100644
--- a/kythe/go/util/process/process_test.go
+++ b/kythe/go/util/process/process_test.go
@@ -71,7 +71,7 @@ func TestAsyncSuccess(t *testing.T) {
t.Errorf("Process exited with unknown error: %v (%v)", err, state)
},
})
- testutil.FatalOnErrT(t, "Error starting async: %v", err)
+ testutil.Fatalf(t, "Error starting async: %v", err)
timeout := time.After(5 * time.Second)
for i := 0; i < 3; i++ {
@@ -111,7 +111,7 @@ func TestAsyncError(t *testing.T) {
done <- struct{}{}
},
})
- testutil.FatalOnErrT(t, "Error starting async: %v", err)
+ testutil.Fatalf(t, "Error starting async: %v", err)
timeout := time.After(5 * time.Second)
for i := 0; i < 3; i++ {
@@ -131,21 +131,21 @@ func TestAsyncNilCallbacks(t *testing.T) {
done <- struct{}{}
},
})
- testutil.FatalOnErrT(t, "Error starting async: %v", err)
+ testutil.Fatalf(t, "Error starting async: %v", err)
err = StartAsync(exec.Command(find(t, "false")), &Callbacks{
OnExit: func(state *os.ProcessState, err error) {
done <- struct{}{}
},
})
- testutil.FatalOnErrT(t, "Error starting async: %v", err)
+ testutil.Fatalf(t, "Error starting async: %v", err)
err = StartAsync(exec.Command(find(t, "true")), &Callbacks{
OnSuccess: func(state *os.ProcessState) {
done <- struct{}{}
},
})
- testutil.FatalOnErrT(t, "Error starting async: %v", err)
+ testutil.Fatalf(t, "Error starting async: %v", err)
timeout := time.After(5 * time.Second)
for i := 0; i < 3; i++ {
diff --git a/kythe/go/util/riegeli/riegeli.go b/kythe/go/util/riegeli/riegeli.go
index 4597f4068..3901ecd06 100644
--- a/kythe/go/util/riegeli/riegeli.go
+++ b/kythe/go/util/riegeli/riegeli.go
@@ -135,17 +135,17 @@ const (
// ParseOptions decodes a WriterOptions from text:
//
-// options ::= option? ("," option?)*
-// option ::=
-// "default" |
-// "transpose" (":" ("true" | "false"))? |
-// "uncompressed" |
-// "brotli" (":" brotli_level)? |
-// "zstd" (":" zstd_level)? |
-// "chunk_size" ":" chunk_size
-// brotli_level ::= integer 0..11 (default 9)
-// zstd_level ::= integer 0..22 (default 9)
-// chunk_size ::= positive integer
+// options ::= option? ("," option?)*
+// option ::=
+// "default" |
+// "transpose" (":" ("true" | "false"))? |
+// "uncompressed" |
+// "brotli" (":" brotli_level)? |
+// "zstd" (":" zstd_level)? |
+// "chunk_size" ":" chunk_size
+// brotli_level ::= integer 0..11 (default 9)
+// zstd_level ::= integer 0..22 (default 9)
+// chunk_size ::= positive integer
func ParseOptions(s string) (*WriterOptions, error) {
if s == "" {
return nil, nil
diff --git a/kythe/go/util/schema/edges/edges.go b/kythe/go/util/schema/edges/edges.go
index 1236c7549..ef8f76b10 100644
--- a/kythe/go/util/schema/edges/edges.go
+++ b/kythe/go/util/schema/edges/edges.go
@@ -45,6 +45,7 @@ const (
OverridesTransitive = Prefix + "overrides/transitive"
Param = Prefix + "param"
Satisfies = Prefix + "satisfies"
+ TParam = Prefix + "tparam"
Typed = Prefix + "typed"
)
@@ -68,6 +69,9 @@ const (
// ParamIndex returns an edge label of the form "param.i" for the i given.
func ParamIndex(i int) string { return Param + "." + strconv.Itoa(i) }
+// TParamIndex returns an edge label of the form "tparam.i" for the i given.
+func TParamIndex(i int) string { return TParam + "." + strconv.Itoa(i) }
+
// revPrefix is used to distinguish reverse kinds from forward ones.
const revPrefix = "%"
@@ -91,8 +95,8 @@ func IsReverse(kind string) bool { return strings.HasPrefix(kind, revPrefix) }
// IsVariant reports whether x is equal to or a subkind of y.
// For example, each of the following returns true:
//
-// IsVariant("/kythe/edge/defines/binding", "/kythe/edge/defines")
-// IsVariant("/kythe/edge/defines", "/kythe/edge/defines")
+// IsVariant("/kythe/edge/defines/binding", "/kythe/edge/defines")
+// IsVariant("/kythe/edge/defines", "/kythe/edge/defines")
//
// Moreover IsVariant(x, y) == IsVariant(Mirror(x), Mirror(y)) for all x, y.
func IsVariant(x, y string) bool { return x == y || strings.HasPrefix(x, y+"/") }
diff --git a/kythe/go/util/schema/indexdata.go b/kythe/go/util/schema/indexdata.go
index 3e9655bd2..68ba94b99 100644
--- a/kythe/go/util/schema/indexdata.go
+++ b/kythe/go/util/schema/indexdata.go
@@ -23,31 +23,33 @@ import scpb "kythe.io/kythe/proto/schema_go_proto"
var (
nodeKinds = map[string]scpb.NodeKind{
- "abs": 1,
- "absvar": 2,
- "anchor": 3,
- "constant": 4,
- "diagnostic": 5,
- "doc": 6,
- "file": 7,
- "function": 9,
- "interface": 8,
- "lookup": 10,
- "macro": 11,
- "meta": 12,
- "name": 13,
- "package": 14,
- "process": 15,
- "record": 16,
- "sum": 17,
- "symbol": 18,
- "talias": 19,
- "tapp": 20,
- "tbuiltin": 21,
- "tnominal": 22,
- "tsigma": 23,
- "variable": 24,
- "vcs": 25,
+ "abs": 1,
+ "absvar": 2,
+ "anchor": 3,
+ "constant": 4,
+ "diagnostic": 5,
+ "doc": 6,
+ "file": 7,
+ "function": 9,
+ "google/gflag": 27,
+ "interface": 8,
+ "lookup": 10,
+ "macro": 11,
+ "meta": 12,
+ "name": 13,
+ "package": 14,
+ "process": 15,
+ "record": 16,
+ "sum": 17,
+ "symbol": 18,
+ "talias": 19,
+ "tapp": 20,
+ "tbuiltin": 21,
+ "tnominal": 22,
+ "tsigma": 23,
+ "tvar": 26,
+ "variable": 24,
+ "vcs": 25,
}
subkinds = map[string]scpb.Subkind{
@@ -101,6 +103,7 @@ var (
"/kythe/edge/bounded/upper": 5,
"/kythe/edge/childof": 6,
"/kythe/edge/childof/context": 7,
+ "/kythe/edge/completedby": 49,
"/kythe/edge/completes": 8,
"/kythe/edge/completes/uniquely": 9,
"/kythe/edge/defines": 10,
@@ -139,6 +142,7 @@ var (
"/kythe/edge/specializes": 39,
"/kythe/edge/specializes/speculative": 40,
"/kythe/edge/tagged": 41,
+ "/kythe/edge/tparam": 48,
"/kythe/edge/typed": 42,
"/kythe/edge/undefines": 43,
}
@@ -169,6 +173,8 @@ var (
23: "tsigma",
24: "variable",
25: "vcs",
+ 26: "tvar",
+ 27: "google/gflag",
}
subkindsRev = map[scpb.Subkind]string{
@@ -262,6 +268,8 @@ var (
45: "/kythe/edge/property/writes",
46: "/kythe/edge/ref/id",
47: "/kythe/edge/ref/writes",
+ 48: "/kythe/edge/tparam",
+ 49: "/kythe/edge/completedby",
}
)
diff --git a/kythe/go/util/schema/nodes/nodes.go b/kythe/go/util/schema/nodes/nodes.go
index 276608158..977d1ee64 100644
--- a/kythe/go/util/schema/nodes/nodes.go
+++ b/kythe/go/util/schema/nodes/nodes.go
@@ -35,6 +35,7 @@ const (
TApp = "tapp"
TBuiltin = "tbuiltin"
TNominal = "tnominal"
+ TVar = "tvar"
Variable = "variable"
)
diff --git a/kythe/go/util/schema/update_data.sh b/kythe/go/util/schema/update_data.sh
index 87cbbdbef..fa74ade7b 100755
--- a/kythe/go/util/schema/update_data.sh
+++ b/kythe/go/util/schema/update_data.sh
@@ -19,5 +19,5 @@ readonly output=kythe/go/util/schema/indexdata.go
echo "-- Updating $output from Bazel ... " 1>&2
set -x
bazel build //kythe/go/util/schema:schema_index
-cp bazel-genfiles/kythe/go/util/schema/schema_index.go "$output"
+cp bazel-bin/kythe/go/util/schema/schema_index.go "$output"
chmod 0644 "$output"
diff --git a/kythe/go/util/tools/extractschema/extractschema.go b/kythe/go/util/tools/extractschema/extractschema.go
index 6ea7c712b..7f158f8b5 100644
--- a/kythe/go/util/tools/extractschema/extractschema.go
+++ b/kythe/go/util/tools/extractschema/extractschema.go
@@ -19,8 +19,8 @@
// stdout.
//
// Usage:
-// extractschema -schema kythe/docs/schema/schema.txt
//
+// extractschema -schema kythe/docs/schema/schema.txt
package main
import (
diff --git a/kythe/go/util/tools/vnames/vnames.go b/kythe/go/util/tools/vnames/vnames.go
index ff6b58a15..33f44220c 100644
--- a/kythe/go/util/tools/vnames/vnames.go
+++ b/kythe/go/util/tools/vnames/vnames.go
@@ -17,11 +17,12 @@
// Binary vnames is a utility for handling VNames.
//
// Examples:
-// # Convert VName rewrite rules from json to proto.
-// vnames convert-rules --from json --to proto < rules.json > rules.pb.bin
//
-// # Apply VName rewrite rules to stdin.
-// print -l path1 path2 path3 | vnames apply-rules --rules rules.json
+// # Convert VName rewrite rules from json to proto.
+// vnames convert-rules --from json --to proto < rules.json > rules.pb.bin
+//
+// # Apply VName rewrite rules to stdin.
+// print -l path1 path2 path3 | vnames apply-rules --rules rules.json
package main
import (
diff --git a/kythe/go/util/tools/write_extra_action/write_extra_action.go b/kythe/go/util/tools/write_extra_action/write_extra_action.go
index 12a3bb323..964b53dd9 100644
--- a/kythe/go/util/tools/write_extra_action/write_extra_action.go
+++ b/kythe/go/util/tools/write_extra_action/write_extra_action.go
@@ -18,7 +18,8 @@
// and writes it to another file.
//
// Usage:
-// write_extra_action <text_proto_file> <output_path>
+//
+// write_extra_action <text_proto_file> <output_path>
package main
import (
diff --git a/kythe/go/util/vnameutil/rewrite.go b/kythe/go/util/vnameutil/rewrite.go
index 2abdce3c4..7cc01aa71 100644
--- a/kythe/go/util/vnameutil/rewrite.go
+++ b/kythe/go/util/vnameutil/rewrite.go
@@ -220,16 +220,16 @@ func ParseRules(data []byte) (Rules, error) { return ReadRules(bytes.NewReader(d
// ReadRules parses Rules from JSON-encoded data in the following format:
//
-// [
-// {
-// "pattern": "re2_regex_pattern",
-// "vname": {
-// "corpus": "corpus_template",
-// "root": "root_template",
-// "path": "path_template"
-// }
-// }, ...
-// ]
+// [
+// {
+// "pattern": "re2_regex_pattern",
+// "vname": {
+// "corpus": "corpus_template",
+// "root": "root_template",
+// "path": "path_template"
+// }
+// }, ...
+// ]
//
// Each pattern is an RE2 regexp pattern. Patterns are implicitly anchored at
// both ends. The template strings may contain markers of the form @n@, that
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/base/EdgeKind.java b/kythe/java/com/google/devtools/kythe/analyzers/base/EdgeKind.java
index 78db040e4..01afbd565 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/base/EdgeKind.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/base/EdgeKind.java
@@ -69,6 +69,7 @@ public enum EdgeKind {
SATISFIES("satisfies"),
SPECIALIZES("specializes"),
SPECIALIZES_SPECULATIVE("specializes/speculative"),
+ TPARAM("tparam"),
TYPED("typed");
private static final String EDGE_PREFIX = "/kythe/edge/";
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java b/kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java
index 741e61429..fddf78c60 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/base/EntrySet.java
@@ -260,7 +260,7 @@ public final class EntrySet {
/** Builds a new {@link EntrySet}. */
public EntrySet build() {
- ImmutableSortedMap<String, byte[]> properties = this.properties.build();
+ ImmutableSortedMap<String, byte[]> properties = this.properties.buildOrThrow();
VName source = this.source;
if (source == null) {
if (!sourceBuilder.getSignature().isEmpty()) {
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/base/KytheEntrySets.java b/kythe/java/com/google/devtools/kythe/analyzers/base/KytheEntrySets.java
index 8c0cad015..ada41e079 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/base/KytheEntrySets.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/base/KytheEntrySets.java
@@ -226,6 +226,7 @@ public class KytheEntrySets {
if (fileVName == null) {
return dn;
} else {
+ builder.setCorpusPath(CorpusPath.fromVName(fileVName));
if (d.hasSpan()) {
Span s =
new Span(d.getSpan().getStart().getByteOffset(), d.getSpan().getEnd().getByteOffset());
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/base/NodeKind.java b/kythe/java/com/google/devtools/kythe/analyzers/base/NodeKind.java
index 678650279..d94027940 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/base/NodeKind.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/base/NodeKind.java
@@ -39,6 +39,7 @@ public enum NodeKind {
TALIAS("talias"),
TAPPLY("tapp"),
TBUILTIN("tbuiltin"),
+ TVAR("tvar"),
// Sub-kinds
ANCHOR_IMPLICIT("anchor", "implicit"),
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/AutoValuePlugin.java b/kythe/java/com/google/devtools/kythe/analyzers/java/AutoValuePlugin.java
index 1cbda167f..fecfbaed8 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/AutoValuePlugin.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/AutoValuePlugin.java
@@ -317,7 +317,7 @@ public class AutoValuePlugin extends Plugin.Scanner<Void, Void> {
for (Map.Entry<String, GeneratedSymbol> sym : syms.entrySet()) {
unprefixed.put(propertyName(sym.getKey()), sym.getValue());
}
- return unprefixed.build();
+ return unprefixed.buildOrThrow();
}
private static boolean isPrefixedGetter(String name) {
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/BUILD b/kythe/java/com/google/devtools/kythe/analyzers/java/BUILD
index 59facc2c8..6986ea37b 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/BUILD
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/BUILD
@@ -17,6 +17,13 @@ java_library(
"SourceText.java",
"TreeContext.java",
],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
":plugin",
"//kythe/java/com/google/devtools/kythe/analyzers/base:config",
@@ -38,7 +45,6 @@ java_library(
"//kythe/proto:common_java_proto",
"//kythe/proto:storage_java_proto",
"//third_party/guava",
- "//third_party/javac",
"@com_google_protobuf//:protobuf_java",
"@maven//:com_beust_jcommander",
"@maven//:com_google_code_findbugs_jsr305",
@@ -49,23 +55,31 @@ java_library(
java_library(
name = "source_text",
srcs = ["SourceText.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
"//kythe/java/com/google/devtools/kythe/platform/java/helpers",
"//kythe/java/com/google/devtools/kythe/util:position_mappings",
"//kythe/java/com/google/devtools/kythe/util:span",
- "//third_party/javac",
],
)
java_library(
name = "plugin",
srcs = ["Plugin.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
"//kythe/java/com/google/devtools/kythe/analyzers/base:entryset",
"//kythe/java/com/google/devtools/kythe/platform/java/helpers",
"//kythe/java/com/google/devtools/kythe/util:span",
"//kythe/proto:storage_java_proto",
- "//third_party/javac",
],
)
@@ -89,9 +103,9 @@ java_binary(
"//kythe/proto:analysis_java_proto",
"//kythe/proto:storage_java_proto",
"//third_party/guava",
- "@com_google_common_flogger//api",
"@com_google_protobuf//:protobuf_java",
"@maven//:com_beust_jcommander",
+ "@maven//:com_google_flogger_flogger",
],
)
@@ -101,6 +115,12 @@ java_library(
"AutoValuePlugin.java",
"ResolvedAutoValue.java",
],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
":plugin",
"//kythe/java/com/google/devtools/kythe/analyzers/base:entryset",
@@ -109,6 +129,5 @@ java_library(
"//kythe/java/com/google/devtools/kythe/common:autovalue",
"//kythe/proto:storage_java_proto",
"//third_party/guava",
- "//third_party/javac",
],
)
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/JavaEntrySets.java b/kythe/java/com/google/devtools/kythe/analyzers/java/JavaEntrySets.java
index 407706ed0..eb8595bdd 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/JavaEntrySets.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/JavaEntrySets.java
@@ -157,7 +157,7 @@ public class JavaEntrySets extends KytheEntrySets {
+ " during extraction.",
sym, enclClass);
if (config.getVerboseLogging()) {
- logger.atWarning().log(msg);
+ logger.atWarning().log("%s", msg);
}
Diagnostic.Builder d = Diagnostic.newBuilder().setMessage(msg);
return emitDiagnostic(d.build()).getVName();
@@ -274,7 +274,12 @@ public class JavaEntrySets extends KytheEntrySets {
public EntrySet newWildcardNodeAndEmit(JCTree.JCWildcard wild, String sourcePath) {
int counter = sourceToWildcardCounter.getOrDefault(sourcePath, 0);
sourceToWildcardCounter.put(sourcePath, counter + 1);
- return emitAndReturn(newNode(NodeKind.ABS_VAR).addSignatureSalt(sourcePath + counter));
+ NodeKind kind =
+ config.getGenericsStructure().equals(JavaIndexerConfig.GenericsStructure.TPARAM)
+ ? NodeKind.TVAR
+ : NodeKind.ABS_VAR;
+ return emitAndReturn(
+ newNode(kind).addSignatureSalt(sourcePath + counter).setCorpusPath(defaultCorpusPath()));
}
/** Returns and emits a Java anchor for the given offset span. */
@@ -303,7 +308,7 @@ public class JavaEntrySets extends KytheEntrySets {
/** Returns the equivalent {@link NodeKind} for the given {@link ElementKind}. */
@Nullable
- private static NodeKind elementNodeKind(ElementKind kind) {
+ private NodeKind elementNodeKind(ElementKind kind) {
switch (kind) {
case CLASS:
return NodeKind.RECORD_CLASS;
@@ -331,7 +336,10 @@ public class JavaEntrySets extends KytheEntrySets {
case METHOD:
return NodeKind.FUNCTION;
case TYPE_PARAMETER:
- return NodeKind.ABS_VAR;
+ if (!config.getGenericsStructure().equals(JavaIndexerConfig.GenericsStructure.TPARAM)) {
+ return NodeKind.ABS_VAR;
+ }
+ return NodeKind.TVAR;
default:
// TODO(#1845): handle all cases, make this exceptional, and remove all null checks
return null;
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/JavaIndexerConfig.java b/kythe/java/com/google/devtools/kythe/analyzers/java/JavaIndexerConfig.java
index 2727449e1..c24266f12 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/JavaIndexerConfig.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/JavaIndexerConfig.java
@@ -20,6 +20,23 @@ import com.beust.jcommander.Parameter;
import com.google.devtools.kythe.analyzers.base.IndexerConfig;
public class JavaIndexerConfig extends IndexerConfig {
+ @Parameter(names = "--generics_structure", description = "Structure to emit for generics.")
+ private GenericsStructure genericsStructure = GenericsStructure.ABS;
+
+ public enum GenericsStructure {
+ // Emit the legacy { n -[childof]-> abs -[param.#]-> absvar } structure
+ // See: https://kythe.io/docs/schema/#absvar
+ ABS,
+ // Emit the { n -[tparam.#]-> tvar } structure
+ // See: https://kythe.io/docs/schema/#tvar
+ TPARAM;
+ }
+
+ @Parameter(
+ names = "--emit_doc_for_non_javadoc",
+ description = "Emit documentation nodes for non-javadoc comments")
+ private boolean emitDocForNonJavadoc;
+
@Parameter(names = "--emit_jvm_signatures", description = "Generate vnames with jvm signatures.")
private boolean emitJvmSignatures;
@@ -72,6 +89,10 @@ public class JavaIndexerConfig extends IndexerConfig {
super(programName);
}
+ public final GenericsStructure getGenericsStructure() {
+ return genericsStructure;
+ }
+
public final boolean getIgnoreVNamePaths() {
return ignoreVNamePaths;
}
@@ -84,6 +105,10 @@ public class JavaIndexerConfig extends IndexerConfig {
return overrideJdkCorpus;
}
+ public boolean getEmitDocForNonJavadoc() {
+ return emitDocForNonJavadoc;
+ }
+
public boolean getEmitJvmSignatures() {
return emitJvmSignatures;
}
@@ -100,6 +125,11 @@ public class JavaIndexerConfig extends IndexerConfig {
return useCompilationCorpusAsDefault;
}
+ public JavaIndexerConfig setGenericsStructure(GenericsStructure genericsStructure) {
+ this.genericsStructure = genericsStructure;
+ return this;
+ }
+
public JavaIndexerConfig setIgnoreVNamePaths(boolean ignoreVNamePaths) {
this.ignoreVNamePaths = ignoreVNamePaths;
return this;
@@ -120,6 +150,11 @@ public class JavaIndexerConfig extends IndexerConfig {
return this;
}
+ public JavaIndexerConfig setEmitDocForNonJavadoc(boolean emitDocForNonJavadoc) {
+ this.emitDocForNonJavadoc = emitDocForNonJavadoc;
+ return this;
+ }
+
public JavaIndexerConfig setEmitJvmSignatures(boolean emitJvmSignatures) {
this.emitJvmSignatures = emitJvmSignatures;
return this;
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/KytheDocTreeScanner.java b/kythe/java/com/google/devtools/kythe/analyzers/java/KytheDocTreeScanner.java
index 75d8f3a73..be179985a 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/KytheDocTreeScanner.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/KytheDocTreeScanner.java
@@ -21,7 +21,6 @@ import static com.google.devtools.kythe.analyzers.java.KytheTreeScanner.DocKind.
import com.google.auto.value.AutoValue;
import com.google.common.base.Splitter;
import com.google.common.flogger.FluentLogger;
-import com.google.devtools.kythe.analyzers.base.EntrySet;
import com.google.devtools.kythe.proto.Storage.VName;
import com.sun.source.doctree.DeprecatedTree;
import com.sun.source.doctree.ReferenceTree;
@@ -75,8 +74,7 @@ public class KytheDocTreeScanner extends DocTreePathScanner<Void, DCDocComment>
}
}
- public DocCommentVisitResult visitDocComment(TreePath treePath, VName node, EntrySet absNode) {
- // TODO(#1501): always use absNode
+ public DocCommentVisitResult visitDocComment(TreePath treePath, VName node, VName absNode) {
DCDocComment doc = (DCDocComment) trees.getDocCommentTree(treePath);
if (doc == null) {
return DocCommentVisitResult.UNDOCUMENTED;
@@ -100,8 +98,7 @@ public class KytheDocTreeScanner extends DocTreePathScanner<Void, DCDocComment>
for (MiniAnchor<Symbol> miniAnchor : miniAnchors) {
anchoredTo.add(miniAnchor.getAnchoredTo());
}
- treeScanner.emitDoc(
- JAVADOC, bracketed, anchoredTo, node, absNode == null ? null : absNode.getVName());
+ treeScanner.emitDoc(JAVADOC, bracketed, anchoredTo, node, absNode);
return DocCommentVisitResult.create(deprecation);
}
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/KytheJavacAnalyzer.java b/kythe/java/com/google/devtools/kythe/analyzers/java/KytheJavacAnalyzer.java
index 7b1ca910d..b1c8ee0ed 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/KytheJavacAnalyzer.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/KytheJavacAnalyzer.java
@@ -107,13 +107,14 @@ public class KytheJavacAnalyzer extends JavacAnalyzer {
});
}
CompilationUnit compilation = details.getCompilationUnit();
+ VName cuVName = compilation.getVName();
+ if (cuVName.getCorpus().isEmpty()) {
+ logger.atWarning().log(
+ "Analyzer received compilation unit vname with empty corpus: %s", cuVName);
+ }
entrySets =
new JavaEntrySets(
- getStatisticsCollector(),
- emitter,
- compilation.getVName(),
- compilation.getRequiredInputList(),
- config);
+ getStatisticsCollector(), emitter, cuVName, compilation.getRequiredInputList(), config);
try {
super.analyzeCompilationUnit(details);
} finally {
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/KytheTreeScanner.java b/kythe/java/com/google/devtools/kythe/analyzers/java/KytheTreeScanner.java
index 4465c050f..cdef86ceb 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/KytheTreeScanner.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/KytheTreeScanner.java
@@ -36,7 +36,6 @@ import com.google.devtools.kythe.analyzers.java.SourceText.Keyword;
import com.google.devtools.kythe.analyzers.java.SourceText.Positions;
import com.google.devtools.kythe.analyzers.jvm.JvmGraph;
import com.google.devtools.kythe.analyzers.jvm.JvmGraph.Type.ReferenceType;
-import com.google.devtools.kythe.platform.java.filemanager.ForwardingStandardJavaFileManager;
import com.google.devtools.kythe.platform.java.helpers.JCTreeScanner;
import com.google.devtools.kythe.platform.java.helpers.JavacUtil;
import com.google.devtools.kythe.platform.java.helpers.SignatureGenerator;
@@ -291,7 +290,12 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
if (ident.sym == null) {
return emitDiagnostic(ctx, "missing identifier symbol", null, null);
}
- JavaNode node = emitSymUsage(ctx, ident.sym);
+ EdgeKind edgeKind = EdgeKind.REF;
+ if (ident.sym instanceof ClassSymbol && ident == owner.getNewClassIdentifier()) {
+ // Use ref/id edges for the primary identifier to disambiguate from the constructor.
+ edgeKind = EdgeKind.REF_ID;
+ }
+ JavaNode node = emitSymUsage(ctx, ident.sym, edgeKind);
if (node != null && ident.sym instanceof VarSymbol) {
// Emit typed edges for "this"/"super" on reference since there is no definition location.
// TODO(schroederc): possibly add implicit definition on class declaration
@@ -360,7 +364,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
// Generic classes record the source range of the class name for the abs node, regular
// classes record the source range of the class name for the record node.
- EntrySet absNode =
+ VName absNode =
defineTypeParameters(
ctx,
classNode,
@@ -374,10 +378,10 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
if (classIdent != null) {
EntrySet absAnchor =
entrySets.newAnchorAndEmit(filePositions, classIdent, ctx.getSnippet());
- emitDefinesBindingEdge(classIdent, absAnchor, absNode.getVName(), getScope(ctx));
+ emitDefinesBindingEdge(classIdent, absAnchor, absNode, getScope(ctx));
}
if (!documented) {
- emitComment(classDef, absNode.getVName());
+ emitComment(classDef, absNode);
}
}
if (absNode == null && classIdent != null) {
@@ -538,7 +542,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
emitModifiers(methodNode, methodDef.getModifiers());
emitVisibility(methodNode, methodDef.getModifiers(), ctx);
- EntrySet absNode =
+ VName absNode =
defineTypeParameters(
ctx, methodNode, methodDef.getTypeParameters(), wildcards, markedSource.build());
boolean documented = visitDocComment(methodNode, absNode, methodDef.getModifiers());
@@ -596,13 +600,13 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
emitComment(methodDef, methodNode);
}
if (absNode != null) {
- emitAnchor(bindingAnchor, EdgeKind.DEFINES_BINDING, absNode.getVName(), getScope(ctx));
+ emitAnchor(bindingAnchor, EdgeKind.DEFINES_BINDING, absNode, getScope(ctx));
Span span = filePositions.findIdentifier(methodDef.name, methodDef.getPreferredPosition());
if (span != null) {
- emitMetadata(span, absNode.getVName());
+ emitMetadata(span, absNode);
}
if (!documented) {
- emitComment(methodDef, absNode.getVName());
+ emitComment(methodDef, absNode);
}
}
emitAnchor(ctx, EdgeKind.DEFINES, methodNode);
@@ -656,10 +660,8 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
emitAnchor(ctx, EdgeKind.DEFINES, lambdaNode);
for (Type target : getTargets(lambda)) {
- if (target != null) {
- VName targetNode = getNode(target.asElement());
- entrySets.emitEdge(lambdaNode, EdgeKind.EXTENDS, targetNode);
- }
+ VName targetNode = getNode(target.asElement());
+ entrySets.emitEdge(lambdaNode, EdgeKind.EXTENDS, targetNode);
}
scan(lambda.body, ctx);
@@ -668,21 +670,10 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
}
private static Iterable<Type> getTargets(JCFunctionalExpression node) {
- try {
- @SuppressWarnings("unchecked")
- Iterable<Type> targets =
- (Iterable<Type>) JCFunctionalExpression.class.getField("targets").get(node);
- return targets != null ? targets : ImmutableList.of();
- } catch (ReflectiveOperationException e) {
- // continue below
- }
- try {
- // Work with the field rename in JDK 11: http://hg.openjdk.java.net/jdk/jdk11/rev/f854b76b6a0c
- return com.sun.tools.javac.util.List.of(
- (Type) JCFunctionalExpression.class.getField("target").get(node));
- } catch (ReflectiveOperationException e) {
- throw new LinkageError(e.getMessage(), e);
+ if (node == null || node.target == null) {
+ return ImmutableList.of();
}
+ return ImmutableList.of(node.target);
}
@Override
@@ -711,7 +702,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
entrySets.getNode(
signatureGenerator, varDef.sym, signature.get(), null, markedSourceChildren);
boolean documented = visitDocComment(varNode, null, varDef.getModifiers());
- emitDefinesBindingAnchorEdge(ctx, varDef.name, varDef.getStartPosition(), varNode);
+ emitDefinesBindingAnchorEdge(ctx, varDef.name, varDef.getPreferredPosition(), varNode);
emitAnchor(ctx, EdgeKind.DEFINES, varNode);
if (varDef.sym.getKind().isField() && !documented) {
// emit comments for fields and enumeration constants
@@ -773,7 +764,10 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
EntrySet typeNode =
entrySets.newTApplyAndEmit(typeCtorNode.getVName(), argVNames, MarkedSources.GENERIC_TAPP);
// TODO(salguarnieri) Think about removing this since it isn't something that we have a use for.
- emitAnchor(ctx, EdgeKind.REF, typeNode.getVName());
+ emitAnchor(
+ ctx,
+ (owner.getTree() instanceof JCNewClass) ? EdgeKind.REF_ID : EdgeKind.REF,
+ typeNode.getVName());
return new JavaNode(typeNode, childWildcards.build());
}
@@ -841,7 +835,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
if (!field.name.contentEquals("*")) {
String msg = "Could not determine selected Symbol for " + field;
if (config.getVerboseLogging()) {
- logger.atWarning().log(msg);
+ logger.atWarning().log("%s", msg);
}
return emitDiagnostic(ctx, msg, null, null);
}
@@ -891,7 +885,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
TreeContext ctx = owner.down(newClass);
if (newClass == null || newClass.constructor == null) {
- logger.atInfo().log("Unexpected null class or constructor: %s", newClass);
+ logger.atWarning().log("Unexpected null class or constructor: %s", newClass);
return emitDiagnostic(ctx, "error analyzing class", null, null);
}
VName ctorNode = getNode(newClass.constructor);
@@ -1020,8 +1014,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
return scanAll(owner.downAsSnippet(assgnOp), assgnOp.lhs, assgnOp.rhs);
}
- private boolean visitDocComment(VName node, EntrySet absNode, JCModifiers modifiers) {
- // TODO(#1501): always use absNode
+ private boolean visitDocComment(VName node, VName absNode, JCModifiers modifiers) {
Optional<String> deprecation = Optional.empty();
boolean documented = false;
if (docScanner != null) {
@@ -1061,7 +1054,7 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
}
emitDeprecated(deprecation, node);
if (absNode != null) {
- emitDeprecated(deprecation, absNode.getVName());
+ emitDeprecated(deprecation, absNode);
}
return documented;
}
@@ -1091,6 +1084,9 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
}
boolean emitCommentsOnLine(int line, VName node, int defLine) {
+ if (!config.getEmitDocForNonJavadoc()) {
+ return false;
+ }
List<Comment> lst = comments.get(line);
if (lst == null || commentClaims.computeIfAbsent(line, l -> defLine) != defLine) {
return false;
@@ -1110,12 +1106,8 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
return Streams.stream(nodes).map(JavaNode::getVName).collect(Collectors.toList());
}
- // TODO When we want to refer to a type or method that is generic, we need to point to the abs
- // node. The code currently does not have an easy way to access that node but this method might
- // offer a way to change that.
- // See #1501 for more discussion and detail.
/** Create an abs node if we have type variables or if we have wildcards. */
- private EntrySet defineTypeParameters(
+ private VName defineTypeParameters(
TreeContext ownerContext,
VName owner,
List<JCTypeParameter> params,
@@ -1154,7 +1146,12 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
// public static <T> void foo(Ty<?> a, Obj<?, ?> b, Obj<Ty<?>, Ty<?>> c) should declare an abs
// node that has 1 named absvar (T) and 5 unnamed absvars.
typeParams.addAll(wildcards);
- return entrySets.newAbstractAndEmit(owner, typeParams, markedSource);
+
+ if (!config.getGenericsStructure().equals(JavaIndexerConfig.GenericsStructure.TPARAM)) {
+ return entrySets.newAbstractAndEmit(owner, typeParams, markedSource).getVName();
+ }
+ entrySets.emitOrdinalEdges(owner, EdgeKind.TPARAM, typeParams);
+ return owner;
}
/** Returns the node associated with a {@link Symbol} or {@code null}. */
@@ -1222,17 +1219,16 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
}
}
- // Emits a node for the given sym, an anchor encompassing the TreeContext, and a REF edge
- private JavaNode emitSymUsage(TreeContext ctx, Symbol sym) {
+ // Emits a node for the given sym, an anchor encompassing the TreeContext, and the given edge.
+ private JavaNode emitSymUsage(TreeContext ctx, Symbol sym, EdgeKind edgeKind) {
JavaNode node = getRefNode(ctx, sym);
if (node == null) {
// TODO(schroederc): details
return emitDiagnostic(ctx, "failed to resolve symbol reference", null, null);
}
-
// TODO(schroederc): emit reference to JVM node if `sym.outermostClass()` is not defined in a
// .java source file
- emitAnchor(ctx, EdgeKind.REF, node.getVName());
+ emitAnchor(ctx, edgeKind, node.getVName());
statistics.incrementCounter("symbol-usages-emitted");
return node;
}
@@ -1331,7 +1327,8 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
signatureGenerator.setArrayTypeContext(((JCFieldAccess) ctx.getTree()).selected.type);
}
JavaNode node = getJavaNode(sym);
- if (node != null
+ if (!config.getGenericsStructure().equals(JavaIndexerConfig.GenericsStructure.TPARAM)
+ && node != null
&& sym instanceof ClassSymbol
&& inGenericContext
&& !sym.getTypeParameters().isEmpty()) {
@@ -1360,11 +1357,11 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
// Returns a JavaNode representing java.lang.Enum<E> where E is a given enum type.
private JavaNode getJavaLangEnumNode(VName enumVName) {
if (javaLangEnumNode == null) {
- javaLangEnumNode =
- new JavaNode(
- entrySets
- .newAbstractAndEmit(resolveJavaLangSymbol(getSymbols().enumSym).getVName())
- .getVName());
+ VName v = resolveJavaLangSymbol(getSymbols().enumSym).getVName();
+ if (!config.getGenericsStructure().equals(JavaIndexerConfig.GenericsStructure.TPARAM)) {
+ v = entrySets.newAbstractAndEmit(v).getVName();
+ }
+ javaLangEnumNode = new JavaNode(v);
}
EntrySet typeNode =
entrySets.newTApplyAndEmit(
@@ -1467,7 +1464,6 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
}
EntrySet doc =
entrySets.newDocAndEmit(kind.getDocSubkind(), filePositions, bracketedText, paramNodes);
- // TODO(#1501): always use absNode
entrySets.emitEdge(doc.getVName(), EdgeKind.DOCUMENTS, node);
if (absNode != null) {
entrySets.emitEdge(doc.getVName(), EdgeKind.DOCUMENTS, absNode);
@@ -1671,16 +1667,8 @@ public class KytheTreeScanner extends JCTreeScanner<JavaNode, TreeContext> {
/** Resovles a string as a source-file relative path */
private String resolveSourcePath(String path) {
try {
- // TODO(shahms): Remove this cast/check/fallback when we only support JDK9+.
- if (fileManager instanceof ForwardingStandardJavaFileManager) {
- return ((ForwardingStandardJavaFileManager) fileManager)
- .asPath(filePositions.getSourceFile())
- .resolveSibling(path)
- .toString();
- }
- } catch (UnsupportedOperationException
- | IllegalArgumentException
- | NullPointerException unused) {
+ return fileManager.asPath(filePositions.getSourceFile()).resolveSibling(path).toString();
+ } catch (UnsupportedOperationException unused) {
// Do nothing; perform fallback below
}
// Fallback to URI-based path resolution when asPath is unsupported.
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/TreeContext.java b/kythe/java/com/google/devtools/kythe/analyzers/java/TreeContext.java
index 9e5159a7a..ca568348d 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/java/TreeContext.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/java/TreeContext.java
@@ -23,7 +23,10 @@ import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCBlock;
import com.sun.tools.javac.tree.JCTree.JCClassDecl;
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
+import com.sun.tools.javac.tree.JCTree.JCIdent;
import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
+import com.sun.tools.javac.tree.JCTree.JCNewClass;
+import com.sun.tools.javac.tree.JCTree.JCTypeApply;
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
import java.util.ArrayList;
import java.util.List;
@@ -105,6 +108,27 @@ class TreeContext {
return (JCClassDecl) parent.getTree();
}
+ public JCIdent getNewClassIdentifier() {
+ TreeContext parent = this;
+ while (parent != null && !(parent.getTree() instanceof JCNewClass)) {
+ parent = parent.up();
+ }
+ if (parent == null) {
+ return null;
+ }
+ JCTree ident = ((JCNewClass) parent.getTree()).getIdentifier();
+ if (ident instanceof JCIdent) {
+ return (JCIdent) ident;
+ }
+ if (ident instanceof JCTypeApply) {
+ JCTree type = ((JCTypeApply) ident).getType();
+ if (type instanceof JCIdent) {
+ return (JCIdent) type;
+ }
+ }
+ return null;
+ }
+
public TreeContext getScope() {
TreeContext parent = up();
while (parent != null
diff --git a/kythe/java/com/google/devtools/kythe/analyzers/jvm/JvmGraph.java b/kythe/java/com/google/devtools/kythe/analyzers/jvm/JvmGraph.java
index 9b754f8aa..b54dc41f7 100644
--- a/kythe/java/com/google/devtools/kythe/analyzers/jvm/JvmGraph.java
+++ b/kythe/java/com/google/devtools/kythe/analyzers/jvm/JvmGraph.java
@@ -56,12 +56,6 @@ public class JvmGraph {
}
/** Returns the {@link VName} corresponding to the given class/enum/interface type. */
- @Deprecated
- public static VName getReferenceVName(Type.ReferenceType referenceType) {
- return getReferenceVName(CorpusPath.EMPTY, referenceType);
- }
-
- /** Returns the {@link VName} corresponding to the given class/enum/interface type. */
public static VName getReferenceVName(CorpusPath corpusPath, Type.ReferenceType referenceType) {
return corpusPath
.toVNameBuilder()
@@ -96,21 +90,6 @@ public class JvmGraph {
* <p>Parameter indices are used because names are only optionally retained in class files and not
* required by the spec.
*/
- @Deprecated
- public static VName getParameterVName(
- Type.ReferenceType parentClass,
- String methodName,
- Type.MethodType methodType,
- int parameterIndex) {
- return getParameterVName(CorpusPath.EMPTY, parentClass, methodName, methodType, parameterIndex);
- }
-
- /**
- * Returns the {@link VName} corresponding to the given parameter of a method type.
- *
- * <p>Parameter indices are used because names are only optionally retained in class files and not
- * required by the spec.
- */
public static VName getParameterVName(
CorpusPath corpusPath,
Type.ReferenceType parentClass,
@@ -125,12 +104,6 @@ public class JvmGraph {
}
/** Returns the {@link VName} corresponding to the given field type. */
- @Deprecated
- public static VName getFieldVName(Type.ReferenceType parentClass, String name) {
- return getFieldVName(CorpusPath.EMPTY, parentClass, name);
- }
-
- /** Returns the {@link VName} corresponding to the given field type. */
public static VName getFieldVName(
CorpusPath corpusPath, Type.ReferenceType parentClass, String name) {
return corpusPath
@@ -154,59 +127,29 @@ public class JvmGraph {
}
/** Emits and returns a Kythe {@code record} node for a JVM class. */
- @Deprecated
- public VName emitClassNode(Type.ReferenceType refType) {
- return emitClassNode(CorpusPath.EMPTY, refType);
- }
-
- /** Emits and returns a Kythe {@code record} node for a JVM class. */
public VName emitClassNode(CorpusPath corpusPath, Type.ReferenceType refType) {
return emitNode(
NodeKind.RECORD_CLASS, getReferenceVName(corpusPath, refType), markedSource(refType));
}
/** Emits and returns a Kythe {@code interface} node for a JVM interface. */
- @Deprecated
- public VName emitInterfaceNode(Type.ReferenceType refType) {
- return emitInterfaceNode(CorpusPath.EMPTY, refType);
- }
- /** Emits and returns a Kythe {@code interface} node for a JVM interface. */
public VName emitInterfaceNode(CorpusPath corpusPath, Type.ReferenceType refType) {
return emitNode(
NodeKind.INTERFACE, getReferenceVName(corpusPath, refType), markedSource(refType));
}
/** Emits and returns a Kythe {@code sum} node for a JVM enum class. */
- @Deprecated
- public VName emitEnumNode(Type.ReferenceType refType) {
- return emitEnumNode(CorpusPath.EMPTY, refType);
- }
-
- /** Emits and returns a Kythe {@code sum} node for a JVM enum class. */
public VName emitEnumNode(CorpusPath corpusPath, Type.ReferenceType refType) {
return emitNode(
NodeKind.SUM_ENUM_CLASS, getReferenceVName(corpusPath, refType), markedSource(refType));
}
/** Emits and returns a Kythe {@code variable} node for a JVM field. */
- @Deprecated
- public VName emitFieldNode(Type.ReferenceType parentClass, String name) {
- return emitFieldNode(CorpusPath.EMPTY, parentClass, name);
- }
-
- /** Emits and returns a Kythe {@code variable} node for a JVM field. */
public VName emitFieldNode(CorpusPath corpusPath, Type.ReferenceType parentClass, String name) {
return emitNode(NodeKind.VARIABLE_FIELD, getFieldVName(corpusPath, parentClass, name));
}
/** Emits and returns a Kythe {@code function} node for a JVM method. */
- @Deprecated
- public VName emitMethodNode(
- Type.ReferenceType parentClass, String methodName, Type.MethodType type) {
- return emitMethodNode(CorpusPath.EMPTY, parentClass, methodName, type);
- }
-
- /** Emits and returns a Kythe {@code function} node for a JVM method. */
public VName emitMethodNode(
CorpusPath corpusPath,
Type.ReferenceType parentClass,
@@ -223,21 +166,6 @@ public class JvmGraph {
*
* @see #getParameterVName(Type.ReferenceType, String, Type.MethodType, int)
*/
- @Deprecated
- public VName emitParameterNode(
- Type.ReferenceType parentClass,
- String methodName,
- Type.MethodType methodType,
- int parameterIndex) {
- return emitParameterNode(CorpusPath.EMPTY, parentClass, methodName, methodType, parameterIndex);
- }
-
- /**
- * Emits and returns a Kythe {@code variable/local/parameter} node for a JVM parameter to a
- * method.
- *
- * @see #getParameterVName(Type.ReferenceType, String, Type.MethodType, int)
- */
public VName emitParameterNode(
CorpusPath corpusPath,
Type.ReferenceType parentClass,
diff --git a/kythe/java/com/google/devtools/kythe/common/BUILD b/kythe/java/com/google/devtools/kythe/common/BUILD
index c61efed6e..5a7df4aa2 100644
--- a/kythe/java/com/google/devtools/kythe/common/BUILD
+++ b/kythe/java/com/google/devtools/kythe/common/BUILD
@@ -4,8 +4,8 @@ package(default_visibility = ["//kythe:default_visibility"])
java_library(
name = "flogger",
- exports = ["@com_google_common_flogger//api"],
- runtime_deps = ["@com_google_common_flogger//api:system_backend"],
+ exports = ["@maven//:com_google_flogger_flogger"],
+ runtime_deps = ["@maven//:com_google_flogger_flogger_system_backend"],
)
java_plugin(
diff --git a/kythe/java/com/google/devtools/kythe/extractors/java/BUILD b/kythe/java/com/google/devtools/kythe/extractors/java/BUILD
index 5969ee8af..d1f3fd4c3 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/java/BUILD
+++ b/kythe/java/com/google/devtools/kythe/extractors/java/BUILD
@@ -11,6 +11,13 @@ java_library(
"UsageAsInputReportingFileManager.java",
"UsageAsInputReportingJavaFileObject.java",
],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
"//kythe/java/com/google/devtools/kythe/common:flogger",
"//kythe/java/com/google/devtools/kythe/extractors/shared",
@@ -24,7 +31,6 @@ java_library(
"//kythe/proto:java_java_proto",
"//kythe/proto:storage_java_proto",
"//third_party/guava",
- "//third_party/javac",
"@com_google_protobuf//:any_proto",
"@com_google_protobuf//:protobuf_java",
"@com_google_protobuf//:protobuf_java_util",
@@ -39,9 +45,7 @@ java_library(
name = "system_exploder",
srcs = ["SystemExploder.java"],
deps = [
- "//kythe/java/com/google/devtools/kythe/platform/java/filemanager:forwarding_standard_java_file_manager",
"//third_party/guava",
- "//third_party/javac",
],
)
diff --git a/kythe/java/com/google/devtools/kythe/extractors/java/JavaCompilationUnitExtractor.java b/kythe/java/com/google/devtools/kythe/extractors/java/JavaCompilationUnitExtractor.java
index ba7d72d1f..676b8b177 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/java/JavaCompilationUnitExtractor.java
+++ b/kythe/java/com/google/devtools/kythe/extractors/java/JavaCompilationUnitExtractor.java
@@ -123,7 +123,7 @@ public class JavaCompilationUnitExtractor {
return String.format("!%s_JAR!", location);
}
- private static final ClassLoader moduleClassLoader = findModuleClassLoader().orElse(null);
+ private static final ClassLoader moduleClassLoader = findModuleClassLoader();
private static final String JAR_SCHEME = "jar";
private final String jdkJar;
@@ -306,10 +306,13 @@ public class JavaCompilationUnitExtractor {
unit.addSourceFile(sourceFile);
sourceFileCorpora.add(inputCorpus.getOrDefault(sourceFile, ""));
}
- if (sourceFileCorpora.size() == 1) {
- // Attribute the source files' corpus to the CompilationUnit if it is unambiguous.
- unit.getVNameBuilder().setCorpus(Iterables.getOnlyElement(sourceFileCorpora));
- }
+ // Attribute the source files' corpus to the CompilationUnit if it is unambiguous. Otherwise use
+ // the default corpus.
+ String cuCorpus =
+ sourceFileCorpora.size() == 1
+ ? Iterables.getOnlyElement(sourceFileCorpora)
+ : fileVNames.getDefaultCorpus();
+ unit.getVNameBuilder().setCorpus(cuCorpus);
unit.setOutputKey(outputPath);
unit.setWorkingDirectory(stableRoot(rootDirectory, options, requiredInputs));
unit.addDetails(
@@ -941,20 +944,7 @@ public class JavaCompilationUnitExtractor {
private static class MaskedClassLoader extends ClassLoader {
private MaskedClassLoader() {
// delegate only to the bootclasspath
- super(getPlatformClassLoader());
- }
-
- // TODO(#2451): remove reflection and call ClassLoader.getPlatformClassLoader() directly
- // once JDK 8 compatibility is no longer required.
- public static ClassLoader getPlatformClassLoader() {
- try {
- // In JDK 9, all platform classes are visible to the platform class loader:
- // https://docs.oracle.com/javase/9/docs/api/java/lang/ClassLoader.html#getPlatformClassLoader--
- return (ClassLoader) ClassLoader.class.getMethod("getPlatformClassLoader").invoke(null);
- } catch (ReflectiveOperationException e) {
- // In earlier releases, set 'null' as the parent to delegate to the boot class loader.
- return null;
- }
+ super(ClassLoader.getPlatformClassLoader());
}
@Override
@@ -1052,21 +1042,11 @@ public class JavaCompilationUnitExtractor {
"Could not get system Java compiler; are you missing the JDK?"));
}
- private static Optional<ClassLoader> findModuleClassLoader() {
- // TODO(shahms): Use the proper methods when we can rely on JDK 9.
- try {
- Object thisModule =
- Class.class.getMethod("getModule").invoke(JavaCompilationUnitExtractor.class);
- thisModule
- .getClass()
- .getMethod("addUses", Class.class)
- .invoke(thisModule, JavaCompiler.class);
- return Optional.ofNullable(
- (ClassLoader) thisModule.getClass().getMethod("getClassLoader").invoke(thisModule));
- } catch (ReflectiveOperationException e) {
- logger.info("Running on non-modular JDK, fallback compiler unavailable.");
- }
- return Optional.empty();
+ private static ClassLoader findModuleClassLoader() {
+ return JavaCompilationUnitExtractor.class
+ .getModule()
+ .addUses(JavaCompiler.class)
+ .getClassLoader();
}
/** Returns a map from a classfile's {@link URI} to its sourcefile path's basename. */
diff --git a/kythe/java/com/google/devtools/kythe/extractors/java/SystemExploder.java b/kythe/java/com/google/devtools/kythe/extractors/java/SystemExploder.java
index d8b50b8a6..1b73c08e2 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/java/SystemExploder.java
+++ b/kythe/java/com/google/devtools/kythe/extractors/java/SystemExploder.java
@@ -19,7 +19,6 @@ package com.google.devtools.kythe.extractors.java;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterators;
import com.google.common.collect.Streams;
-import com.google.devtools.kythe.platform.java.filemanager.ForwardingStandardJavaFileManager;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -47,26 +46,17 @@ final class SystemExploder {
copySystemModules(systemDir, Paths.get(outputDir));
}
- // In order to work around the lack of the required JDK9 methods in google3, wrap
- // StandardJavaFileManagers before use (for now).
- private static ForwardingStandardJavaFileManager wrap(StandardJavaFileManager fileManager) {
- if (fileManager instanceof ForwardingStandardJavaFileManager) {
- return (ForwardingStandardJavaFileManager) fileManager;
- }
- return new ForwardingStandardJavaFileManager(fileManager) {};
- }
-
// Returns a stream of paths from the specified --system directory, beginning with the appropriate
// modules subdirectory.
public static ImmutableList<Path> walkSystemModules(String systemDir) throws IOException {
StandardJavaFileManager fileManager =
ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
fileManager.handleOption("--system", Iterators.singletonIterator(systemDir));
- return walkSystemModules(wrap(fileManager));
+ return walkSystemModules(fileManager);
}
- private static ImmutableList<Path> walkSystemModules(
- ForwardingStandardJavaFileManager fileManager) throws IOException {
+ private static ImmutableList<Path> walkSystemModules(StandardJavaFileManager fileManager)
+ throws IOException {
JavaFileManager.Location systemLocation = StandardLocation.valueOf("SYSTEM_MODULES");
ImmutableList.Builder<Path> modules = new ImmutableList.Builder<>();
for (Set<JavaFileManager.Location> locs : fileManager.listLocationsForModules(systemLocation)) {
@@ -102,22 +92,20 @@ final class SystemExploder {
}
}
- private static void dumpSystemPaths(ForwardingStandardJavaFileManager fileManager)
- throws IOException {
+ private static void dumpSystemPaths(StandardJavaFileManager fileManager) throws IOException {
for (Path path : walkSystemModules(fileManager)) {
System.err.println(path.isAbsolute() ? path.subpath(0, path.getNameCount()) : path);
}
}
private static void dumpSystemPaths() throws IOException {
- dumpSystemPaths(
- wrap(ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)));
+ dumpSystemPaths(ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null));
}
private static void dumpSystemPaths(String systemDir) throws IOException {
StandardJavaFileManager fileManager =
ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
fileManager.handleOption("--system", Iterators.singletonIterator(systemDir));
- dumpSystemPaths(wrap(fileManager));
+ dumpSystemPaths(fileManager);
}
}
diff --git a/kythe/java/com/google/devtools/kythe/extractors/java/bazel/aspect.bzl b/kythe/java/com/google/devtools/kythe/extractors/java/bazel/aspect.bzl
index f190e0f15..f38b13756 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/java/bazel/aspect.bzl
+++ b/kythe/java/com/google/devtools/kythe/extractors/java/bazel/aspect.bzl
@@ -89,6 +89,7 @@ def _extract_java(target, ctx):
inputs = depset([xa, ctx.file._java_aspect_vnames_config], transitive = deps),
executable = ctx.executable._java_bazel_extractor,
arguments = [extract_args],
+ tools = ctx.attr._java_runtime[java_common.JavaRuntimeInfo].files,
)
return kzip
@@ -106,17 +107,22 @@ extract_java_aspect = aspect(
"_write_extra_action": attr.label(
default = Label("@io_kythe//kythe/go/util/tools/write_extra_action"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_java_bazel_extractor": attr.label(
default = Label("@io_kythe//kythe/java/com/google/devtools/kythe/extractors/java/bazel:java_extractor"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_java_aspect_vnames_config": attr.label(
default = Label("//external:vnames_config"),
allow_single_file = True,
),
+ "_java_runtime": attr.label(
+ default = Label("@bazel_tools//tools/jdk:current_java_runtime"),
+ cfg = "exec",
+ allow_files = True,
+ ),
},
)
diff --git a/kythe/java/com/google/devtools/kythe/extractors/java/standalone/BUILD b/kythe/java/com/google/devtools/kythe/extractors/java/standalone/BUILD
index 41502710f..8b1a2f9f4 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/java/standalone/BUILD
+++ b/kythe/java/com/google/devtools/kythe/extractors/java/standalone/BUILD
@@ -7,23 +7,12 @@ exports_files(["javac-wrapper.sh"])
java_binary(
name = "javac_extractor",
- srcs = ["Javac8Wrapper.java"],
- main_class = "com.google.devtools.kythe.extractors.java.standalone.Javac8Wrapper",
- visibility = ["//visibility:public"],
- deps = [
- ":abstract_javac_wrapper",
- "//kythe/java/com/google/devtools/kythe/extractors/java",
- "//kythe/java/com/google/devtools/kythe/extractors/shared",
- "//kythe/java/com/google/devtools/kythe/extractors/shared:environment",
- "//kythe/proto:storage_java_proto",
- "//third_party/guava",
- "//third_party/javac",
- ],
-)
-
-java_binary(
- name = "javac9_extractor",
srcs = ["Javac9Wrapper.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
main_class = "com.google.devtools.kythe.extractors.java.standalone.Javac9Wrapper",
visibility = ["//visibility:public"],
deps = [
@@ -33,13 +22,15 @@ java_binary(
"//kythe/java/com/google/devtools/kythe/extractors/shared:environment",
"//kythe/proto:storage_java_proto",
"//third_party/guava",
- "//third_party/javac:javac9",
],
)
java_library(
name = "abstract_javac_wrapper",
srcs = ["AbstractJavacWrapper.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ ],
deps = [
"//kythe/java/com/google/devtools/kythe/extractors/java",
"//kythe/java/com/google/devtools/kythe/extractors/shared",
@@ -48,8 +39,7 @@ java_library(
"//kythe/java/com/google/devtools/kythe/util:json",
"//kythe/proto:analysis_java_proto",
"//third_party/guava",
- "//third_party/javac",
- "@com_google_common_flogger//api",
+ "@maven//:com_google_flogger_flogger",
],
)
diff --git a/kythe/java/com/google/devtools/kythe/extractors/java/standalone/Javac8Wrapper.java b/kythe/java/com/google/devtools/kythe/extractors/java/standalone/Javac8Wrapper.java
deleted file mode 100644
index 56724ed5e..000000000
--- a/kythe/java/com/google/devtools/kythe/extractors/java/standalone/Javac8Wrapper.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.extractors.java.standalone;
-
-import static com.google.common.collect.ImmutableList.toImmutableList;
-
-import com.google.common.collect.Lists;
-import com.google.devtools.kythe.extractors.java.JavaCompilationUnitExtractor;
-import com.google.devtools.kythe.extractors.shared.CompilationDescription;
-import com.google.devtools.kythe.extractors.shared.EnvironmentUtils;
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.main.Arguments;
-import com.sun.tools.javac.main.Option;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Options;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.EnumSet;
-import java.util.List;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardLocation;
-
-/** A class that wraps javac to extract compilation information and write it to an index file. */
-public class Javac8Wrapper extends AbstractJavacWrapper {
- @Override
- protected Collection<CompilationDescription> processCompilation(
- String[] arguments, JavaCompilationUnitExtractor javaCompilationUnitExtractor)
- throws Exception {
- // Use javac's argument parser to get the list of source files
- Context context = new Context();
-
- JavacFileManager fileManager = new JavacFileManager(context, true, null);
- Arguments args = Arguments.instance(context);
- args.init("kythe_javac", arguments);
- fileManager.handleOptions(args.getDeferredFileManagerOptions());
- Options options = Options.instance(context);
-
- List<String> sources =
- args.getFileObjects().stream().map(JavaFileObject::getName).collect(toImmutableList());
-
- // Retrieve the list of class paths provided by the -classpath argument.
- List<String> classPaths = splitPaths(options.get(Option.CLASS_PATH));
-
- // Retrieve the list of source paths provided by the -sourcepath argument.
- List<String> sourcePaths = splitPaths(options.get(Option.SOURCE_PATH));
-
- // Retrieve the list of processor paths provided by the -processorpath argument.
- List<String> processorPaths = splitPaths(options.get(Option.PROCESSOR_PATH));
-
- // Retrieve the list of processors provided by the -processor argument.
- List<String> processors = splitCSV(options.get(Option.PROCESSOR));
-
- EnumSet<Option> claimed =
- EnumSet.of(Option.CLASS_PATH, Option.SOURCE_PATH, Option.PROCESSOR_PATH, Option.PROCESSOR);
-
- // Retrieve all other javac options.
- List<String> completeOptions = new ArrayList<>();
- for (Option opt : Option.values()) {
- if (!claimed.contains(opt)) {
- String value = options.get(opt);
- if (value != null) {
- if (opt.getPrimaryName().endsWith(":")) {
- completeOptions.add(opt.getPrimaryName() + value);
- } else {
- completeOptions.add(opt.getPrimaryName());
- if (!value.equals(opt.getPrimaryName())) {
- completeOptions.add(value);
- }
- }
- }
- }
- }
-
- List<String> bootclasspath = new ArrayList<>();
- for (File bcp : fileManager.getLocation(StandardLocation.PLATFORM_CLASS_PATH)) {
- bootclasspath.add(bcp.toString());
- }
-
- // Get the output directory for this target.
- String outputDirectory = options.get(Option.D);
- if (outputDirectory == null) {
- outputDirectory = ".";
- }
-
- int batchSize = readSourcesBatchSize().orElse(sources.size());
- List<CompilationDescription> results = new ArrayList<>();
- for (List<String> sourceBatch : Lists.partition(sources, batchSize)) {
- String analysisTarget =
- EnvironmentUtils.readEnvironmentVariable(
- "KYTHE_ANALYSIS_TARGET", createTargetFromSourceFiles(sourceBatch));
- results.add(
- javaCompilationUnitExtractor.extract(
- analysisTarget,
- sourceBatch,
- classPaths,
- bootclasspath,
- sourcePaths,
- processorPaths,
- processors,
- completeOptions,
- outputDirectory));
- }
- return results;
- }
-
- @Override
- protected void passThrough(String[] args) throws Exception {
- com.sun.tools.javac.Main.main(args);
- }
-
- public static void main(String[] args) {
- new Javac8Wrapper().process(args);
- }
-}
diff --git a/kythe/java/com/google/devtools/kythe/extractors/jvm/JvmExtractor.java b/kythe/java/com/google/devtools/kythe/extractors/jvm/JvmExtractor.java
index 5664cf7cd..ab1c8a4c6 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/jvm/JvmExtractor.java
+++ b/kythe/java/com/google/devtools/kythe/extractors/jvm/JvmExtractor.java
@@ -18,6 +18,9 @@ package com.google.devtools.kythe.extractors.jvm;
import com.beust.jcommander.Parameter;
import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Streams;
import com.google.common.io.ByteStreams;
import com.google.devtools.kythe.analyzers.jvm.JvmGraph;
import com.google.devtools.kythe.extractors.shared.CompilationDescription;
@@ -38,8 +41,10 @@ import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
import java.util.function.Function;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -152,6 +157,23 @@ public class JvmExtractor {
false);
}
+ // Attribute the source files' corpus to the CompilationUnit if it is unambiguous. Otherwise use
+ // the default corpus.
+ ImmutableMap<String, String> inputCorpus =
+ Streams.stream(compilation.getRequiredInputList())
+ .collect(
+ ImmutableMap.toImmutableMap(
+ f -> f.getInfo().getPath(), f -> f.getVName().getCorpus()));
+ Set<String> sourceFileCorpora = new HashSet<>();
+ for (String sourceFile : compilation.getSourceFileList()) {
+ sourceFileCorpora.add(inputCorpus.getOrDefault(sourceFile, ""));
+ }
+ String cuCorpus =
+ sourceFileCorpora.size() == 1
+ ? Iterables.getOnlyElement(sourceFileCorpora)
+ : fileVNames.getDefaultCorpus();
+ compilation.getVNameBuilder().setCorpus(cuCorpus);
+
return new CompilationDescription(compilation.build(), fileContents);
}
diff --git a/kythe/java/com/google/devtools/kythe/extractors/shared/BUILD b/kythe/java/com/google/devtools/kythe/extractors/shared/BUILD
index 5adec356c..6e8fb8cac 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/shared/BUILD
+++ b/kythe/java/com/google/devtools/kythe/extractors/shared/BUILD
@@ -28,7 +28,7 @@ java_library(
],
deps = [
"//third_party/guava",
- "@com_google_common_flogger//api",
+ "@maven//:com_google_flogger_flogger",
],
)
diff --git a/kythe/java/com/google/devtools/kythe/extractors/shared/FileVNames.java b/kythe/java/com/google/devtools/kythe/extractors/shared/FileVNames.java
index ac5ff0c7b..d9a0591f3 100644
--- a/kythe/java/com/google/devtools/kythe/extractors/shared/FileVNames.java
+++ b/kythe/java/com/google/devtools/kythe/extractors/shared/FileVNames.java
@@ -171,6 +171,10 @@ public class FileVNames {
.build();
}
+ public String getDefaultCorpus() {
+ return defaultCorpus.get();
+ }
+
/** Base {@link VName} to use for files matching {@code pattern}. */
private static class BaseFileVName {
public final Pattern pattern;
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/BUILD b/kythe/java/com/google/devtools/kythe/platform/java/BUILD
index 0e53f8171..a5a2649eb 100644
--- a/kythe/java/com/google/devtools/kythe/platform/java/BUILD
+++ b/kythe/java/com/google/devtools/kythe/platform/java/BUILD
@@ -9,18 +9,19 @@ java_library(
"JavacAnalysisDriver.java",
"JavacAnalyzer.java",
],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ ],
deps = [
":options",
"//kythe/java/com/google/devtools/kythe/common:flogger",
"//kythe/java/com/google/devtools/kythe/platform/java/filemanager",
- "//kythe/java/com/google/devtools/kythe/platform/java/filemanager:path_filemanager",
"//kythe/java/com/google/devtools/kythe/platform/shared:analysis_exception",
"//kythe/java/com/google/devtools/kythe/platform/shared:file_data",
"//kythe/java/com/google/devtools/kythe/platform/shared:statistics",
"//kythe/proto:analysis_java_proto",
"//kythe/proto:storage_java_proto",
"//third_party/guava",
- "//third_party/javac",
"@com_google_protobuf//:protobuf_java",
"@maven//:com_google_code_findbugs_jsr305",
"@maven//:org_checkerframework_checker_qual",
@@ -30,11 +31,16 @@ java_library(
java_library(
name = "options",
srcs = ["JavacOptionsUtils.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
"//kythe/proto:analysis_java_proto",
"//kythe/proto:java_java_proto",
"//third_party/guava",
- "//third_party/javac",
"@com_google_protobuf//:any_proto",
"@com_google_protobuf//:protobuf_java",
"@maven//:com_google_code_findbugs_jsr305",
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/JavaCompilationDetails.java b/kythe/java/com/google/devtools/kythe/platform/java/JavaCompilationDetails.java
index ae5947871..3d25706ed 100644
--- a/kythe/java/com/google/devtools/kythe/platform/java/JavaCompilationDetails.java
+++ b/kythe/java/com/google/devtools/kythe/platform/java/JavaCompilationDetails.java
@@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.flogger.FluentLogger;
import com.google.devtools.kythe.platform.java.JavacOptionsUtils.ModifiableOptions;
-import com.google.devtools.kythe.platform.java.filemanager.CompilationUnitBasedJavaFileManager;
import com.google.devtools.kythe.platform.java.filemanager.CompilationUnitPathFileManager;
import com.google.devtools.kythe.platform.shared.FileDataProvider;
import com.google.devtools.kythe.proto.Analysis.CompilationUnit;
@@ -32,7 +31,6 @@ import com.sun.source.util.JavacTask;
import com.sun.tools.javac.api.JavacTaskImpl;
import java.io.IOException;
import java.io.Writer;
-import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.util.List;
@@ -77,22 +75,14 @@ public class JavaCompilationDetails implements AutoCloseable {
List<String> options = optionsFromCompilationUnit(compilationUnit, processors);
Charset encoding = JavacOptionsUtils.getEncodingOption(options);
- // Create a CompilationUnitBasedJavaFileManager that uses the fileDataProvider and
+ // Create a CompilationUnitPathFileManager that uses the fileDataProvider and
// compilationUnit
StandardJavaFileManager fileManager =
- // The Path-based JavaFileManager is only compatible with JDK9+ and for now,
- // we have to remain compatible with JDK8.
- isJdk9OrNewer()
- ? new CompilationUnitPathFileManager(
- compilationUnit,
- fileDataProvider,
- compiler.getStandardFileManager(diagnosticsCollector, null, null),
- temporaryDirectory)
- : new CompilationUnitBasedJavaFileManager(
- fileDataProvider,
- compilationUnit,
- compiler.getStandardFileManager(diagnosticsCollector, null, null),
- encoding);
+ new CompilationUnitPathFileManager(
+ compilationUnit,
+ fileDataProvider,
+ compiler.getStandardFileManager(diagnosticsCollector, null, null),
+ temporaryDirectory);
Throwable analysisCrash = null;
JavacTaskImpl javacTask = null;
@@ -227,18 +217,6 @@ public class JavaCompilationDetails implements AutoCloseable {
return arguments.removeUnsupportedOptions().build();
}
- /** Returns true if the runtime version is >= JRE 9 */
- private static boolean isJdk9OrNewer() {
- try {
- Method versionMethod = Runtime.class.getMethod("version");
- Object version = versionMethod.invoke(null);
- return ((int) version.getClass().getMethod("major").invoke(version) >= 9);
- } catch (ReflectiveOperationException e) {
- logger.atInfo().log("Falling back to legacy FileManager on JDK8 or older");
- return false;
- }
- }
-
private static boolean isErrorDiagnostic(Diagnostic<?> diag) {
return diag.getKind() == Kind.ERROR;
}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/BUILD b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/BUILD
index 2e99a6d6f..1759ae025 100644
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/BUILD
+++ b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/BUILD
@@ -5,42 +5,19 @@ package(default_visibility = ["//kythe:default_visibility"])
java_library(
name = "forwarding_standard_java_file_manager",
srcs = ["ForwardingStandardJavaFileManager.java"],
- deps = [
- "//kythe/java/com/google/devtools/kythe/common:flogger",
- "//third_party/guava",
- "//third_party/javac",
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
],
)
java_library(
name = "filemanager",
- srcs = [
- "CompilationUnitBasedJavaFileManager.java",
- "CompilationUnitBasedJavaFileStore.java",
- "CustomFileObject.java",
- "CustomJavaFileObject.java",
- "JavaFileStore.java",
- "JavaFileStoreBasedFileManager.java",
- ],
- deps = [
- ":filetree",
- ":forwarding_standard_java_file_manager",
- "//kythe/java/com/google/devtools/kythe/common:flogger",
- "//kythe/java/com/google/devtools/kythe/extractors/java",
- "//kythe/java/com/google/devtools/kythe/platform/shared:file_data",
- "//kythe/proto:analysis_java_proto",
- "//kythe/proto:java_java_proto",
- "//third_party/javac",
- "@com_google_protobuf//:any_proto",
- "@com_google_protobuf//:protobuf_java",
- "@maven//:com_google_guava_guava",
- "@maven//:org_checkerframework_checker_qual",
- ],
-)
-
-java_library(
- name = "path_filemanager",
srcs = ["CompilationUnitPathFileManager.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
":forwarding_standard_java_file_manager",
"//kythe/java/com/google/devtools/kythe/common:flogger",
@@ -49,7 +26,6 @@ java_library(
"//kythe/java/com/google/devtools/kythe/platform/shared/filesystem",
"//kythe/proto:analysis_java_proto",
"//kythe/proto:java_java_proto",
- "//third_party/javac",
"@com_google_protobuf//:any_proto",
"@com_google_protobuf//:protobuf_java",
"@maven//:com_google_guava_guava",
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileManager.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileManager.java
deleted file mode 100644
index 107d5a70f..000000000
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileManager.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.platform.java.filemanager;
-
-import com.google.common.flogger.FluentLogger;
-import com.google.devtools.kythe.extractors.java.JavaCompilationUnitExtractor;
-import com.google.devtools.kythe.platform.shared.FileDataProvider;
-import com.google.devtools.kythe.proto.Analysis.CompilationUnit;
-import com.google.devtools.kythe.proto.Java.JavaDetails;
-import com.google.protobuf.Any;
-import com.google.protobuf.InvalidProtocolBufferException;
-import java.nio.charset.Charset;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-
-/**
- * Makes it easier for our analysis to provide files in different ways than on the local file system
- * e.g. from datastores or .index files. All users of this class have to do is provide a {@link
- * FileDataProvider} that will feed the actual content in as a future.
- */
-@com.sun.tools.javac.api.ClientCodeWrapper.Trusted
-public class CompilationUnitBasedJavaFileManager extends JavaFileStoreBasedFileManager {
- private static final FluentLogger logger = FluentLogger.forEnclosingClass();
-
- /**
- * paths searched for .class files, can be relative or absolute, but must match path as named by
- * the extractor.
- */
- private final Set<String> classpath = new HashSet<>();
-
- /**
- * paths searched for .java files, can be relative or absolute, but must match path as named by
- * the extractor.
- */
- private final Set<String> sourcepath = new HashSet<>();
-
- private final Set<String> bootclasspath = new HashSet<>();
-
- public CompilationUnitBasedJavaFileManager(
- FileDataProvider contentProvider,
- CompilationUnit unit,
- StandardJavaFileManager fileManager,
- Charset encoding) {
- super(new CompilationUnitBasedJavaFileStore(unit, contentProvider, encoding), fileManager);
-
- JavaDetails details = getDetails(unit);
- if (details != null) {
- classpath.addAll(details.getClasspathList());
- sourcepath.addAll(details.getSourcepathList());
- bootclasspath.addAll(details.getBootclasspathList());
- } else {
- logger.atWarning().log("Compilation missing JavaDetails; falling back to flag parsing");
- classpath.add("");
- classpath.addAll(getPathSet(unit.getArgumentList(), "-cp"));
- classpath.addAll(getPathSet(unit.getArgumentList(), "-classpath"));
- sourcepath.add("");
- sourcepath.addAll(getPathSet(unit.getArgumentList(), "-sourcepath"));
- bootclasspath.add("");
- bootclasspath.addAll(getPathSet(unit.getArgumentList(), "-bootclasspath"));
- }
- }
-
- @Override
- protected Set<String> getSearchPaths(Location location) {
- if (location == StandardLocation.CLASS_PATH) {
- return classpath;
- } else if (location == StandardLocation.SOURCE_PATH) {
- return sourcepath;
- } else if (location == StandardLocation.PLATFORM_CLASS_PATH) {
- return bootclasspath;
- }
- return new HashSet<>();
- }
-
- private static Set<String> getPathSet(List<String> options, String optName) {
- for (int i = 0; i < options.size(); i++) {
- if (options.get(i).equals(optName)) {
- if (i + 1 >= options.size()) {
- throw new IllegalArgumentException("Malformed " + optName + " argument");
- }
- Set<String> paths = new HashSet<>();
- Collections.addAll(paths, options.get(i + 1).split(":"));
- return paths;
- }
- }
- return new HashSet<>();
- }
-
- private static JavaDetails getDetails(CompilationUnit unit) {
- for (Any details : unit.getDetailsList()) {
- if (details.getTypeUrl().equals(JavaCompilationUnitExtractor.JAVA_DETAILS_URL)) {
- try {
- return JavaDetails.parseFrom(details.getValue());
- } catch (InvalidProtocolBufferException ipbe) {
- System.err.println(
- "WARNING: "
- + "CompilationUnit contains JavaDetails that could not be parsed: "
- + ipbe);
- }
- }
- }
- return null;
- }
-}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileStore.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileStore.java
deleted file mode 100644
index 841115fb0..000000000
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitBasedJavaFileStore.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.platform.java.filemanager;
-
-import com.google.devtools.kythe.platform.shared.FileDataProvider;
-import com.google.devtools.kythe.proto.Analysis.CompilationUnit;
-import java.nio.charset.Charset;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import javax.tools.JavaFileObject.Kind;
-
-/** An implementation of {@link JavaFileStore} based on data from a {@link CompilationUnit}. */
-public class CompilationUnitBasedJavaFileStore implements JavaFileStore {
- private final CompilationUnitFileTree fileTree;
- private final FileDataProvider contentProvider;
- private final Charset encoding;
-
- public CompilationUnitBasedJavaFileStore(
- CompilationUnit unit, FileDataProvider contentProvider, Charset encoding) {
- this.contentProvider = contentProvider;
- this.encoding = encoding;
-
- fileTree = new CompilationUnitFileTree(unit.getRequiredInputList());
- }
-
- @Override
- public CustomJavaFileObject findByPath(String path, Kind kind) {
- String digest = fileTree.lookup(path);
- if (digest != null) {
- return new CustomJavaFileObject(contentProvider, path, digest, null, kind, encoding);
- }
- return null;
- }
-
- @Override
- public CustomJavaFileObject find(String className, Kind kind, Set<String> pathPrefixes) {
- Path file = Paths.get(className.replace('.', '/') + kind.extension);
- String dirname = file.getParent() == null ? "." : file.getParent().toString();
- String basename = file.getFileName().toString();
- for (String prefix : pathPrefixes) {
- String dirToLookIn = join(prefix, dirname);
- String digest = fileTree.lookup(dirToLookIn, basename);
- if (digest != null) {
- return new CustomJavaFileObject(
- contentProvider, join(prefix, file.toString()), digest, className, kind, encoding);
- }
- }
- return null;
- }
-
- @Override
- public CustomFileObject find(String packageName, String relativeName, Set<String> pathPrefixes) {
- String packagePath = packageName.replace('.', '/');
- for (String prefix : pathPrefixes) {
- String dirToLookIn = Paths.get(prefix, packagePath).toString();
- String digest = fileTree.lookup(dirToLookIn, relativeName);
- if (digest != null) {
- return new CustomFileObject(
- contentProvider, join(prefix, packagePath, relativeName), digest, encoding);
- }
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- *
- * <p>TODO: recurse option does not work yet. This method only returns the classes inside {@code
- * packageName} and ignores the sub-packages.
- */
- @Override
- public Set<CustomJavaFileObject> list(
- String packageName, Set<Kind> kinds, Set<String> pathPrefixes, boolean recurse) {
- Set<CustomJavaFileObject> matchingFiles = new HashSet<>();
- if (pathPrefixes == null) {
- return matchingFiles;
- }
- String packagePath = packageName.replace('.', '/');
- for (String prefix : pathPrefixes) {
- String dirToLookIn = join(prefix, packagePath);
- Map<String, String> dir = fileTree.list(dirToLookIn);
- if (dir != null) {
- matchingFiles.addAll(getFiles(dirToLookIn, dir, kinds, packageName));
- }
- }
- return matchingFiles;
- }
-
- /** Uses the map built from the required inputs to build a list of files per directory. */
- private Set<CustomJavaFileObject> getFiles(
- String dirToLookIn, Map<String, String> entries, Set<Kind> kinds, String packageName) {
- Set<CustomJavaFileObject> files = new HashSet<>();
- for (Map.Entry<String, String> entry : entries.entrySet()) {
- String fileName = entry.getKey();
- String digest = entry.getValue();
- if (digest.equals(CompilationUnitFileTree.DIRECTORY_DIGEST)) {
- // Don't include directories in the file listing.
- continue;
- }
- for (Kind kind : kinds) {
- if (fileName.endsWith(kind.extension)) {
- int lastDot = fileName.lastIndexOf('.');
- // files with kind == OTHER may not have an extension.
- String simpleName = lastDot == -1 ? fileName : fileName.substring(0, lastDot);
- String clsName = packageName + "." + simpleName;
- files.add(
- new CustomJavaFileObject(
- contentProvider, join(dirToLookIn, fileName), digest, clsName, kind, encoding));
- break;
- }
- }
- }
- return files;
- }
-
- private static String join(String root, String... paths) {
- return Paths.get(root, paths).toString();
- }
-}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitPathFileManager.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitPathFileManager.java
index 88fb35030..8ea128596 100644
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitPathFileManager.java
+++ b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CompilationUnitPathFileManager.java
@@ -95,15 +95,13 @@ public final class CompilationUnitPathFileManager extends ForwardingStandardJava
defaultPlatformClassPath =
ImmutableSet.copyOf(
Iterables.transform(
- // TODO(shahms): use getLocationAsPaths on Java 9
- fileManager.getLocation(StandardLocation.PLATFORM_CLASS_PATH),
- f -> f.toPath().normalize().toString()));
+ fileManager.getLocationAsPaths(StandardLocation.PLATFORM_CLASS_PATH),
+ p -> p.normalize().toString()));
readAheadProvider = new ReadAheadDataProvider(fileDataProvider);
fileSystem = CompilationUnitFileSystem.create(compilationUnit, readAheadProvider);
memFileSystem = Jimfs.newFileSystem(Configuration.unix());
- // When compiled for Java 9+ this is ambiguous, so disambiguate to the compatibility shim.
- setPathFactory((ForwardingStandardJavaFileManager.PathFactory) this::getPath);
+ setPathFactory(this::getPath);
setLocations(
findJavaDetails(compilationUnit)
.map(details -> toLocationMap(details))
@@ -270,7 +268,7 @@ public final class CompilationUnitPathFileManager extends ForwardingStandardJava
// (or options not present in the details), will remain on the command line and be
// parsed as normal, relying on getPath() to map into the compilation unit.
logger.atInfo().log("Compilation missing JavaDetails; falling back to flag parsing");
- return defaultLocationMapBuilder().build();
+ return defaultLocationMapBuilder().buildOrThrow();
}
/** Translates the JavaDetails locations into {@code Map<Location, Collection<Path>>} */
@@ -278,8 +276,7 @@ public final class CompilationUnitPathFileManager extends ForwardingStandardJava
return Maps.filterValues(
defaultLocationMapBuilder()
.put(StandardLocation.CLASS_PATH, toPaths(details.getClasspathList()))
- // TODO(shahms): Use StandardLocation.MODULE_PATH directly on JDK9+
- .put(StandardLocation.locationFor("MODULE_PATH"), toPaths(details.getClasspathList()))
+ .put(StandardLocation.MODULE_PATH, toPaths(details.getClasspathList()))
.put(StandardLocation.SOURCE_PATH, toPaths(details.getSourcepathList()))
.put(
StandardLocation.PLATFORM_CLASS_PATH,
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomFileObject.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomFileObject.java
deleted file mode 100644
index 5cd4ef5b4..000000000
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomFileObject.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.platform.java.filemanager;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import com.google.devtools.kythe.platform.shared.FileDataProvider;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Objects;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import javax.tools.FileObject;
-
-/** File object backed by a {@link Future}. */
-@com.sun.tools.javac.api.ClientCodeWrapper.Trusted
-public class CustomFileObject implements FileObject {
- protected final Path path;
- protected final String digest;
- protected final Future<byte[]> future;
-
- protected final Charset encoding;
-
- public CustomFileObject(
- FileDataProvider contentProvider, String path, String digest, Charset encoding) {
- this.path = Paths.get(path);
- this.digest = digest;
- this.encoding = encoding;
-
- this.future = contentProvider.startLookup(path, digest);
- }
-
- @Override
- public URI toUri() {
- try {
- return new URI("custom://" + digest + "/" + path);
- } catch (URISyntaxException e) {
- return null;
- }
- }
-
- @Override
- public String getName() {
- return path.getFileName().toString();
- }
-
- @Override
- public InputStream openInputStream() throws IOException {
- return new ByteArrayInputStream(getData());
- }
-
- private byte[] getData() throws IOException {
- try {
- byte[] result = future.get();
- if (result == null) {
- throw new IOException(
- String.format("Unable to find file with digest %s, path %s", digest, path));
- }
- return result;
- } catch (InterruptedException | ExecutionException e) {
- throw new IOException(e);
- }
- }
-
- @Override
- public OutputStream openOutputStream() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
- return new InputStreamReader(openInputStream(), UTF_8);
- }
-
- @Override
- public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
- return new String(getData(), encoding);
- }
-
- @Override
- public Writer openWriter() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public long getLastModified() {
- return 0;
- }
-
- @Override
- public boolean delete() {
- return false;
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(digest);
- }
-
- @Override
- public boolean equals(Object other) {
- // This implementation relies on the Trusted annotation on this class to opt out of using the
- // WrappedJavaFileObject wrapper class.
- if (this == other) {
- return true;
- } else if (!(other instanceof CustomFileObject)) {
- return false;
- }
- CustomFileObject oc = (CustomFileObject) other;
- return Objects.equals(path, oc.path) && Objects.equals(digest, oc.digest);
- }
-}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomJavaFileObject.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomJavaFileObject.java
deleted file mode 100644
index aa1597c46..000000000
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/CustomJavaFileObject.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.platform.java.filemanager;
-
-import com.google.devtools.kythe.platform.shared.FileDataProvider;
-import java.nio.charset.Charset;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.NestingKind;
-import javax.tools.JavaFileObject;
-
-/** JavaFileObject that can be provided a body at a future time. */
-@com.sun.tools.javac.api.ClientCodeWrapper.Trusted
-public class CustomJavaFileObject extends CustomFileObject implements JavaFileObject {
-
- private final String className;
- private final Kind kind;
-
- public CustomJavaFileObject(
- FileDataProvider contentProvider,
- String path,
- String digest,
- String className,
- Kind kind,
- Charset encoding) {
- super(contentProvider, path, digest, encoding);
- this.className = className;
- this.kind = kind;
- }
-
- @Override
- public Kind getKind() {
- return kind;
- }
-
- @Override
- public boolean isNameCompatible(String simpleName, Kind kind) {
- return getName().equals(simpleName + kind.extension);
- }
-
- @Override
- public NestingKind getNestingKind() {
- return null;
- }
-
- @Override
- public Modifier getAccessLevel() {
- return null;
- }
-
- public String getClassName() {
- return className;
- }
-
- @Override
- public String toString() {
- return "CustomJavaFileObject [className=" + className + ", kind=" + kind + "]";
- }
-}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/ForwardingStandardJavaFileManager.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/ForwardingStandardJavaFileManager.java
index 595cc7664..bdb9b0c53 100644
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/ForwardingStandardJavaFileManager.java
+++ b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/ForwardingStandardJavaFileManager.java
@@ -15,13 +15,8 @@
*/
package com.google.devtools.kythe.platform.java.filemanager;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Iterables;
-import com.google.common.reflect.Reflection;
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.nio.file.Path;
import java.util.Collection;
import java.util.ServiceLoader;
@@ -42,110 +37,39 @@ import javax.tools.StandardJavaFileManager;
public class ForwardingStandardJavaFileManager
extends ForwardingJavaFileManager<StandardJavaFileManager> implements StandardJavaFileManager {
- private static final Logger logger =
- Logger.getLogger(ForwardingStandardJavaFileManager.class.getName());
-
- // TODO(shahms): Remove these when we've moved to JDK9 and can invoke the methods directly.
- // Until then, cache the lookup of these extended StandardJavaFileManager methods.
- private static final Method getLocationForModuleNameMethod =
- getMethodOrNull("getLocationForModule", Location.class, String.class);
- private static final Method getLocationForModuleFileMethod =
- getMethodOrNull("getLocationForModule", Location.class, JavaFileObject.class);
- private static final Method getServiceLoaderMethod =
- getMethodOrNull("getServiceLoader", Location.class, Class.class);
- private static final Method inferModuleNameMethod =
- getMethodOrNull("inferModuleName", Location.class);
- private static final Method listLocationsForModulesMethod =
- getMethodOrNull("listLocationsForModules", Location.class);
- private static final Method containsMethod =
- getMethodOrNull("contains", Location.class, FileObject.class);
- private static final Method getJavaFileObjectsFromPathsMethod =
- getMethodOrNull("getJavaFileObjectsFromPaths", Iterable.class);
- private static final Method getJavaFileObjectsMethod =
- getMethodOrNull("getJavaFileObjects", Path[].class);
- private static final Method setLocationFromPathsMethod =
- getMethodOrNull("setLocationFromPaths", Location.class, Collection.class);
- private static final Method setLocationForModuleMethod =
- getMethodOrNull("setLocationForModule", Location.class, String.class, Collection.class);
- private static final Method getLocationAsPathsMethod =
- getMethodOrNull("getLocationAsPaths", Location.class);
- private static final Method asPathMethod = getMethodOrNull("asPath", FileObject.class);
- private static final Class<?> pathFactoryInterface = getClassOrNull("PathFactory");
- private static final Method setPathFactoryMethod =
- getMethodOrNull("setPathFactory", pathFactoryInterface);
-
- /** Equivalent interface for JDK9's StandardJavaFileManager.PathFactory */
- @FunctionalInterface
- public static interface PathFactory {
- Path getPath(String path, String... more);
- }
-
protected ForwardingStandardJavaFileManager(StandardJavaFileManager fileManager) {
super(fileManager);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public Location getLocationForModule(Location location, String moduleName) throws IOException {
- // TODO(shahms): return fileManager.getLocationForModule(location, fo);
- try {
- return (Location) getLocationForModuleNameMethod.invoke(fileManager, location, moduleName);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("getLocationForModule", e, IOException.class);
- }
+ return fileManager.getLocationForModule(location, moduleName);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public Location getLocationForModule(Location location, JavaFileObject fo) throws IOException {
- // TODO(shahms): return fileManager.getLocationForModule(location, fo);
- try {
- return (Location) getLocationForModuleFileMethod.invoke(fileManager, location, fo);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("getLocationForModule", e, IOException.class);
- }
+ return fileManager.getLocationForModule(location, fo);
}
- // TODO(shahms): @Override; added in JDK9
- @SuppressWarnings({"unchecked"}) // safe by specification.
+ @Override
public <S> ServiceLoader<S> getServiceLoader(Location location, Class<S> service)
throws IOException {
- // TODO(shahms): return fileManager.getServiceLoader(location, service);
- try {
- return (ServiceLoader<S>) getServiceLoaderMethod.invoke(location, service);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("getServiceLoader", e, IOException.class);
- }
+ return fileManager.getServiceLoader(location, service);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public String inferModuleName(Location location) throws IOException {
- // TODO(shahms): return fileManager.inferModuleName(location);
- try {
- return (String) inferModuleNameMethod.invoke(fileManager, location);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("inferModuleName", e, IOException.class);
- }
+ return fileManager.inferModuleName(location);
}
- // TODO(shahms): @Override; added in JDK9
- @SuppressWarnings({"unchecked"}) // safe by specification.
+ @Override
public Iterable<Set<Location>> listLocationsForModules(Location location) throws IOException {
- // TODO(shahms): return fileManager.listLocationsForModules(location);
- try {
- return (Iterable<Set<Location>>) listLocationsForModulesMethod.invoke(fileManager, location);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible(
- "listLocationsForModules", e, IOException.class);
- }
+ return fileManager.listLocationsForModules(location);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public boolean contains(Location location, FileObject fo) throws IOException {
- // TODO(shahms): return fileManager.contains(location, fo);
- try {
- return (Boolean) containsMethod.invoke(fileManager, location, fo);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("contains", e, IOException.class);
- }
+ return fileManager.contains(location, fo);
}
@Override
@@ -154,17 +78,11 @@ public class ForwardingStandardJavaFileManager
return fileManager.getJavaFileObjectsFromFiles(files);
}
- // TODO(shahms): @Override; added in JDK9
- @SuppressWarnings({"unchecked", "IterablePathParameter"}) // safe by specification.
+ @Override
+ @SuppressWarnings({"IterablePathParameter"}) // required by interface.
public Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
Iterable<? extends Path> paths) {
- // TODO(shahms): fileManager.getJavaFileObjectsFromPaths(paths);
- try {
- return (Iterable<? extends JavaFileObject>)
- getJavaFileObjectsFromPathsMethod.invoke(fileManager, paths);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("getJavaFileObjectsFromPaths", e);
- }
+ return fileManager.getJavaFileObjectsFromPaths(paths);
}
@Override
@@ -182,38 +100,21 @@ public class ForwardingStandardJavaFileManager
return fileManager.getJavaFileObjects(names);
}
- // TODO(shahms): @Override; added in JDK9
- @SuppressWarnings({"unchecked"}) // safe by specification.
+ @Override
public Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
- // TODO(shahms): fileManager.getJavaFileObjects(paths);
- try {
- return (Iterable<? extends JavaFileObject>)
- getJavaFileObjectsMethod.invoke(fileManager, (Object) paths);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("getJavaFileObjects", e);
- }
+ return fileManager.getJavaFileObjects(paths);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public void setLocationFromPaths(Location location, Collection<? extends Path> paths)
throws IOException {
- // TODO(shahms): fileManager.setLocationFromPaths(location, paths);
- try {
- setLocationFromPathsMethod.invoke(fileManager, location, paths);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("setLocationFromPaths", e, IOException.class);
- }
+ fileManager.setLocationFromPaths(location, paths);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public void setLocationForModule(
Location location, String moduleName, Collection<? extends Path> paths) throws IOException {
- // TODO(shahms): fileManager.setLocationForModule(location, moduleName, paths);
- try {
- setLocationForModuleMethod.invoke(fileManager, location, moduleName, paths);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("setLocationForModule", e, IOException.class);
- }
+ fileManager.setLocationForModule(location, moduleName, paths);
}
@Override
@@ -221,18 +122,9 @@ public class ForwardingStandardJavaFileManager
return fileManager.getLocation(location);
}
- // TODO(shahms): @Override; added in JDK9
- @SuppressWarnings({"unchecked"}) // Safe by specification.
+ @Override
public Iterable<? extends Path> getLocationAsPaths(Location location) {
- // TODO(shahms): return fileManager.getLocationAsPaths(location);
- try {
- return (Iterable<? extends Path>) getLocationAsPathsMethod.invoke(fileManager, location);
- } catch (NullPointerException npe) {
- // Fall back to using getLocation from the underlying fileManager.
- return Iterables.transform(fileManager.getLocation(location), File::toPath);
- } catch (ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("getLocationAsPaths", e);
- }
+ return fileManager.getLocationAsPaths(location);
}
@Override
@@ -245,84 +137,13 @@ public class ForwardingStandardJavaFileManager
fileManager.setLocation(location, files);
}
- // TODO(shahms): @Override; added in JDK9
+ @Override
public Path asPath(FileObject fo) {
- // TODO(shahms): return fileManager.asPath(fo);
- try {
- return (Path) asPathMethod.invoke(fileManager, fo);
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("asPath", e);
- }
- }
-
- // TODO(shahms): @Override; added in JDK9
- // We've intentionally mirrored this functional interface
- // as this is a compatibility shim which will be deleted when
- // we can stop requiring that this be buildable on Java 8 but run
- // on JDK11.
- @SuppressWarnings("FunctionalInterfaceClash")
- public void setPathFactory(PathFactory factory) {
- // TODO(shahms): fileManager.setPathFactory(factory);
- try {
- setPathFactoryMethod.invoke(
- fileManager,
- Reflection.newProxy(
- pathFactoryInterface,
- (proxy, method, args) -> {
- return factory.getPath((String) args[0], (String[]) args[1]);
- }));
- } catch (NullPointerException | ReflectiveOperationException e) {
- throw propagateInvocationTargetErrorIfPossible("setPathFactory", e);
- }
+ return fileManager.asPath(fo);
}
- private static Method getMethodOrNull(String name, Class<?>... parameterTypes) {
- try {
- return StandardJavaFileManager.class.getMethod(name, parameterTypes);
- } catch (NoSuchMethodException e) {
- logger.log(Level.WARNING, "Failed to find extended StandardJavaFileManager method", e);
- }
- return null;
- }
-
- private static Class<?> getClassOrNull(String name) {
- try {
- return Class.forName(
- StandardJavaFileManager.class.getCanonicalName() + "$" + name,
- true,
- StandardJavaFileManager.class.getClassLoader());
- } catch (ClassNotFoundException e) {
- logger.log(Level.INFO, "Failed to find StandardJavaFileManager class", e);
- }
- return null;
- }
-
- private static UnsupportedOperationException propagateInvocationTargetErrorIfPossible(
- String methodName, Throwable error) {
- if (error instanceof InvocationTargetException) {
- Throwables.throwIfUnchecked(((InvocationTargetException) error).getCause());
- }
- return unsupportedVersionError(methodName, error);
- }
-
- private static UnsupportedOperationException propagateInvocationTargetErrorIfPossible(
- String methodName, Throwable error, Class<IOException> declaredType) throws IOException {
- if (error instanceof InvocationTargetException) {
- // Log the exception because the propagated destination may not provide a nice error log.
- Throwable t = ((InvocationTargetException) error).getCause();
- logger.log(
- Level.WARNING,
- "Error in underlying filemanager: "
- + ". A more detailed message may have been output to stderr.",
- t);
- Throwables.propagateIfPossible(t, declaredType);
- }
- return unsupportedVersionError(methodName, error);
- }
-
- private static UnsupportedOperationException unsupportedVersionError(
- String methodName, Throwable cause) {
- return new UnsupportedOperationException(
- methodName + " called by unsupported Java version", cause);
+ @Override
+ public void setPathFactory(StandardJavaFileManager.PathFactory factory) {
+ fileManager.setPathFactory(factory);
}
}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStore.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStore.java
deleted file mode 100644
index d0c54f2f6..000000000
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStore.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.platform.java.filemanager;
-
-import java.util.Set;
-import javax.tools.JavaFileObject.Kind;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
-/**
- * JavaFileStore is a service for finding Java compiler related files such as {@code .class} or
- * {@code .java}, or potentially any file that can be consumed by Java compiler. It is up to the
- * implementors of this interface to define what is backing their store. The store can be supplied
- * by a single jar file, multiple jar files, a database table, a directory on disk or any
- * combination of these.
- *
- * <p>File store is not tied to a specific Java path location. Meaning a store can be used for class
- * or source retrieval. Users of this service can differentiate between the two using a path prefix.
- */
-public interface JavaFileStore {
-
- /**
- * Finds and returns the Java file object associated with the {@code className} and {@code kind}.
- * {@code pathPrefixes} are used to limit possible search paths. There is no limitation on the
- * format of a path. It is up to implementation to decide what it should be.
- */
- @Nullable
- public CustomJavaFileObject find(String className, Kind kind, Set<String> pathPrefixes);
-
- /**
- * Finds and returns the file object in a package, {@code packageName}, with name {@code
- * relativeName}. {@code pathPrefixes} are used to limit possible search paths. There is no
- * limitation on the format of a path. It is up to implementation to decide what it should be.
- */
- @Nullable
- public CustomFileObject find(String packageName, String relativeName, Set<String> pathPrefixes);
-
- /**
- * Finds and returns the Java file object with the exact path matching {@code path} and {@code
- * kind}. There is no limitation on the format of a path. It is up to implementation to decide
- * what it should be.
- */
- @Nullable
- public CustomJavaFileObject findByPath(String path, Kind kind);
-
- /**
- * Finds and returns all the Java file objects in a package, {@code packageName}. {@code
- * pathPrefixes} are used to limit possible search paths. There is no limitation on the format of
- * a path. It is up to implementation to decide what it should be.
- */
- public Set<CustomJavaFileObject> list(
- String packageName, Set<Kind> kinds, Set<String> pathPrefixes, boolean recurse);
-}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStoreBasedFileManager.java b/kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStoreBasedFileManager.java
deleted file mode 100644
index d68a7272f..000000000
--- a/kythe/java/com/google/devtools/kythe/platform/java/filemanager/JavaFileStoreBasedFileManager.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright 2014 The Kythe Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.devtools.kythe.platform.java.filemanager;
-
-import com.google.common.collect.Iterables;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.tools.FileObject;
-import javax.tools.JavaFileObject;
-import javax.tools.JavaFileObject.Kind;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-
-/** {@link StandardJavaFileManager} backed by a {@link JavaFileStore}. */
-@com.sun.tools.javac.api.ClientCodeWrapper.Trusted
-public class JavaFileStoreBasedFileManager extends ForwardingStandardJavaFileManager {
-
- protected JavaFileStore javaFileStore;
-
- public JavaFileStoreBasedFileManager(
- JavaFileStore javaFileStore, StandardJavaFileManager fileManager) {
- super(fileManager);
- this.javaFileStore = javaFileStore;
- }
-
- protected Set<String> getSearchPaths(Location location) {
- Set<String> dirsToLookIn = new HashSet<>();
- Iterable<? extends File> paths = getLocation(location);
- if (paths != null) {
- for (File dir : paths) {
- dirsToLookIn.add(dir.getPath());
- }
- }
- return dirsToLookIn;
- }
-
- /**
- * Lists all files in a package, tries to find files known to this manager before directing to the
- * underlying filemanager.
- */
- @Override
- public Iterable<JavaFileObject> list(
- Location location, String packageName, Set<Kind> kinds, boolean recurse) throws IOException {
- Set<String> dirsToLookIn = getSearchPaths(location);
- Set<CustomJavaFileObject> matchingFiles =
- javaFileStore.list(packageName, kinds, dirsToLookIn, recurse);
- // Prefer source over class file if the source exists in the source path:
- if (location == StandardLocation.CLASS_PATH && kinds.contains(Kind.CLASS)) {
- Map<String, CustomJavaFileObject> classNameToFile = new HashMap<>();
- for (CustomJavaFileObject fileObject : matchingFiles) {
- classNameToFile.put(fileObject.getClassName(), fileObject);
- }
- Set<Kind> sourceKinds = new HashSet<>();
- sourceKinds.add(Kind.SOURCE);
- Set<CustomJavaFileObject> matchedSources =
- javaFileStore.list(
- packageName, sourceKinds, getSearchPaths(StandardLocation.SOURCE_PATH), recurse);
- for (CustomJavaFileObject source : matchedSources) {
- if (classNameToFile.containsKey(source.getClassName())) {
- classNameToFile.put(source.getClassName(), source);
- }
- }
- matchingFiles.clear();
- matchingFiles.addAll(classNameToFile.values());
- }
-
- // TODO(schroederc): handle case where some of the package is in the JavaFileStore, but not all
- if (!matchingFiles.isEmpty()) {
- return new ArrayList<>(matchingFiles);
- }
-
- List<JavaFileObject> matchedFiles = new ArrayList<>();
- matchedFiles.addAll(matchingFiles);
-
- if (location == StandardLocation.SOURCE_PATH) {
- // XXX(#818): do not search the underlying file manager (and the local fs) for source files
- return matchedFiles;
- }
-
- // Ask underlying file manager for its knowledge of files, e.g.
- // in case of JRE we use the files locally known to the compiler.
- for (JavaFileObject jfo : super.list(location, packageName, kinds, recurse)) {
- matchedFiles.add(jfo);
- }
- return matchedFiles;
- }
-
- private JavaFileObject getJavaFileForInputFromCustomLocation(
- final Location location, final String className, final Kind kind) {
- return javaFileStore.find(className, kind, getSearchPaths(location));
- }
-
- /**
- * Gets file for classname, from local filemanager before directing to the underlying filemanager.
- */
- @Override
- public JavaFileObject getJavaFileForInput(
- final Location location, final String className, final Kind kind) throws IOException {
- JavaFileObject customJavaFile =
- getJavaFileForInputFromCustomLocation(location, className, kind);
- if (customJavaFile != null) {
- return customJavaFile;
- }
- return super.getJavaFileForInput(location, className, kind);
- }
-
- @Override
- public String inferBinaryName(Location location, JavaFileObject file) {
- if (file instanceof CustomJavaFileObject) {
- CustomJavaFileObject cjfo = (CustomJavaFileObject) file;
- return cjfo.getClassName();
- }
- return super.inferBinaryName(location, file);
- }
-
- public JavaFileObject getJavaFileFromPath(String file, Kind kind) {
- return javaFileStore.findByPath(file, kind);
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(
- Iterable<? extends File> files) {
- List<JavaFileObject> javaFileObjects = new ArrayList<>();
- for (File file : files) {
- String path = file.getPath();
- JavaFileObject.Kind kind = getKind(path);
- JavaFileObject jfo = getJavaFileFromPath(path, kind);
- javaFileObjects.add(jfo);
- }
- return javaFileObjects;
- }
-
- @Override
- public FileObject getFileForInput(Location location, String packageName, String relativeName)
- throws IOException {
- FileObject fileObject = javaFileStore.find(packageName, relativeName, getSearchPaths(location));
- if (fileObject == null) {
- fileObject = super.getFileForInput(location, packageName, relativeName);
- }
- return fileObject;
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
- return getJavaFileObjectsFromFiles(Iterables.transform(names, File::new));
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
- @SuppressWarnings("IterablePathParameter") Iterable<? extends Path> paths) {
- return getJavaFileObjectsFromFiles(Iterables.transform(paths, Path::toFile));
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
- return getJavaFileObjectsFromStrings(Arrays.asList(names));
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
- return getJavaFileObjectsFromFiles(Arrays.asList(files));
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
- return getJavaFileObjectsFromPaths(Arrays.asList(paths));
- }
-
- @Override
- public boolean contains(Location location, FileObject file) throws IOException {
- if (file instanceof CustomFileObject) {
- // The URI paths for custom file objects will always include an
- // extra leading '/'.
- String filePath = file.toUri().getPath().substring(1);
- // Do a trivial prefix-search based on the search paths for the given location.
- Set<String> paths = getSearchPaths(location);
- for (String path : paths) {
- if (filePath.startsWith(path)) {
- return true;
- }
- }
- return false;
- }
- return super.contains(location, file);
- }
-
- @Override
- public Path asPath(FileObject file) {
- if (file instanceof CustomFileObject) {
- return ((CustomFileObject) file).path;
- }
- return super.asPath(file);
- }
-
- public static Kind getKind(String name) {
- if (name.endsWith(Kind.CLASS.extension)) {
- return Kind.CLASS;
- } else if (name.endsWith(Kind.SOURCE.extension)) {
- return Kind.SOURCE;
- } else if (name.endsWith(Kind.HTML.extension)) {
- return Kind.HTML;
- } else {
- return Kind.OTHER;
- }
- }
-
- @Override
- public boolean isSameFile(FileObject a, FileObject b) {
- if (a instanceof CustomFileObject) {
- return a.equals(b);
- } else if (b instanceof CustomFileObject) {
- return b.equals(a);
- }
- return super.isSameFile(a, b);
- }
-}
diff --git a/kythe/java/com/google/devtools/kythe/platform/java/helpers/BUILD b/kythe/java/com/google/devtools/kythe/platform/java/helpers/BUILD
index c9bc7fad6..58916e284 100644
--- a/kythe/java/com/google/devtools/kythe/platform/java/helpers/BUILD
+++ b/kythe/java/com/google/devtools/kythe/platform/java/helpers/BUILD
@@ -12,11 +12,17 @@ java_library(
"SignatureGenerator.java",
"SyntaxPreservingScanner.java",
],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
deps = [
"//kythe/java/com/google/devtools/kythe/common:flogger",
"//kythe/java/com/google/devtools/kythe/util:span",
"//third_party/guava",
- "//third_party/javac",
"@com_google_protobuf//:protobuf_java",
"@maven//:com_google_code_findbugs_jsr305",
],
diff --git a/kythe/java/com/google/devtools/kythe/platform/shared/FileDataCache.java b/kythe/java/com/google/devtools/kythe/platform/shared/FileDataCache.java
index 3af650a8c..fa506fa8b 100644
--- a/kythe/java/com/google/devtools/kythe/platform/shared/FileDataCache.java
+++ b/kythe/java/com/google/devtools/kythe/platform/shared/FileDataCache.java
@@ -41,7 +41,7 @@ public class FileDataCache implements FileDataProvider {
builder.put(digest, data.getContent().toByteArray());
}
}
- fileContents = builder.build();
+ fileContents = builder.buildOrThrow();
}
@Override
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/BUILD b/kythe/javatests/com/google/devtools/kythe/analyzers/java/BUILD
index e50f0c24a..45b9d8719 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/BUILD
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/BUILD
@@ -55,12 +55,16 @@ java_test(
java_library(
name = "test_plugin",
srcs = ["TestPlugin.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
visibility = ["//kythe/javatests/com/google/devtools/kythe/analyzers/java:__subpackages__"],
deps = [
"//kythe/java/com/google/devtools/kythe/analyzers/base:entryset",
"//kythe/java/com/google/devtools/kythe/analyzers/java:plugin",
"//kythe/java/com/google/devtools/kythe/common:autoservice",
"//kythe/proto:storage_java_proto",
- "//third_party/javac",
],
)
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/AnnotationComments.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/AnnotationComments.java
index eff31436a..e15ad5dbf 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/AnnotationComments.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/AnnotationComments.java
@@ -1,11 +1,11 @@
package pkg;
-//- @+3AnnotationComments defines/binding AnnotationComments
+//- @+4AnnotationComments defines/binding AnnotationComments
-@Deprecated // TODO(#3459): This should not annotate the class, but does.
+// This isn't documentation.
+@Deprecated // This does not document AnnotationComments
public class AnnotationComments {
- //- { _ documents AnnotationComments }
- // The above test is broken and should be '!{ _ documents ...' instead
+ //- !{ _ documents AnnotationComments }
//- @+3fooString defines/binding FooString
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/BUILD b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/BUILD
index 2a219f4a4..e2e06edfb 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/BUILD
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/BUILD
@@ -222,6 +222,17 @@ java_verifier_test(
name = "generics_tests",
size = "small",
srcs = ["Generics.java"],
+ indexer_opts = [
+ "--verbose",
+ "--generics_structure=tparam",
+ ],
+ visibility = ["//kythe/go/serving/tools/testdata:__pkg__"],
+)
+
+java_verifier_test(
+ name = "generics_abs_tests",
+ size = "small",
+ srcs = ["GenericsAbs.java"],
visibility = ["//kythe/go/serving/tools/testdata:__pkg__"],
)
@@ -409,7 +420,6 @@ java_verifier_test(
name = "diamond_operator_test",
size = "small",
srcs = ["DiamondOperations.java"],
- extractor = "//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac9_extractor",
extractor_opts = [
"-source",
"9",
@@ -422,7 +432,6 @@ java_verifier_test(
name = "local_inference_test",
size = "small",
srcs = ["LocalInference.java"],
- extractor = "//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac9_extractor",
extractor_opts = [
"-source",
"11",
@@ -437,7 +446,6 @@ java_verifier_test(
name = "private_interface_methods_test",
size = "small",
srcs = ["PrivateInterfaceMethods.java"],
- extractor = "//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac9_extractor",
extractor_opts = [
"-source",
"9",
@@ -453,7 +461,6 @@ java_verifier_test(
"Classes.java",
"Definitions.java",
],
- extractor = "//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac9_extractor",
)
# Duplicate a few tests to extract/verifier native Bazel Java compilation targets
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Callgraph.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Callgraph.java
index 0cafafec6..24c7d664c 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Callgraph.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Callgraph.java
@@ -65,6 +65,7 @@ public class Callgraph {
//- CtorRef ref ECtor
//- CtorCall childof ECtor
//- CtorCall childof SCtor
+ //- @Callgraph ref/id Class
final Object instance = new Callgraph();
//- @Callgraph defines/binding ECtor
@@ -82,11 +83,13 @@ public class Callgraph {
//- F typed _FType
static void f(int n) {
//- @"Callgraph" ref ECtor
+ //- @"Callgraph" ref/id Class
//- ECtorCall.loc/start @^"new Callgraph()"
//- ECtorCall.loc/end @$"new Callgraph()"
Object cg = new Callgraph();
//
//- @"Callgraph" ref SCtor
+ //- @"Callgraph" ref/id Class
//- SCtorCall.loc/start @^"new Callgraph(null)"
//- SCtorCall.loc/end @$"new Callgraph(null)"
cg = new Callgraph(null);
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Comments.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Comments.java
index 380cefd8d..516d3b036 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Comments.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Comments.java
@@ -1,11 +1,11 @@
-// - @pkg ref Package
+//- @pkg ref Package
package pkg;
-// - @+8"java.lang.Integer" ref/doc IntegerClass
-// - @+7String ref/doc StringClass
-// - @+7Inner ref/doc InnerClass
-// - @+6pkg ref/doc Package
-// - @+7Comments defines/binding CommentsClass
+//- @+7"java.lang.Integer" ref/doc IntegerClass
+//- @+6String ref/doc StringClass
+//- @+5Inner ref/doc InnerClass
+//- @+5pkg ref/doc Package
+//- @#0+7Comments defines/binding CommentsClass
/**
* This is a Javadoc comment with links to {@link String}, {@link java.lang.Integer}, {@link Inner},
@@ -14,118 +14,105 @@ package pkg;
@SuppressWarnings({"unused", "MultiVariableDeclaration"})
public class Comments implements Comparable<Comments> {
- // - @long ref/doc LongBuiltin
- // - LongBuiltin.node/kind tbuiltin
+ //- @+8IM_A_LONG defines/binding LongConstant
+ //- @+6long ref/doc LongBuiltin
+ //- LongBuiltin.node/kind tbuiltin
+ //- LongDocNode.node/kind doc
+ //- LongDocNode.subkind "javadoc"
+ //- LongDocNode documents LongConstant
+ //- LongDocNode.text "This is a {@link [long]} with a value of {@value}. "
/** This is a {@link long} with a value of {@value}. */
public static final long IM_A_LONG = 4;
public static final int BLAH80 = 4;
- // - DocNode.node/kind doc
- // - DocNode.subkind "javadoc"
- // - DocNode documents CommentsClass
- // - DocNode param.0 StringClass
- // - DocNode param.1 IntegerClass
- // - DocNode param.2 InnerClass
- // - DocNode param.3 Package
- // - DocNode.text " This is a Javadoc comment with links to {@link [String]}, {@link
- // [java.lang.Integer]},\n {@link [Inner]}, and {@link [pkg]}. It references {@value
- // [IM_A_LONG]}.\n"
+ //- DocNode.node/kind doc
+ //- DocNode.subkind "javadoc"
+ //- DocNode documents CommentsClass
+ //- DocNode param.0 StringClass
+ //- DocNode param.1 IntegerClass
+ //- DocNode param.2 InnerClass
+ //- DocNode param.3 Package
+ //- DocNode.text " This is a Javadoc comment with links to {@link [String]}, {@link [java.lang.Integer]}, {@link [Inner]},\n and {@link [pkg]}. It references {@value [IM_A_LONG]}.\n"
// - @fieldOne defines/binding _FieldOne
private static int fieldOne; // inline comment here
- // - FieldTwoDoc documents FieldTwo
- // - FieldTwoDoc.node/kind doc
- // - !{ FieldTwoDoc.subkind _AnySubkind }
- // - FieldTwoDoc.text "fieldTwo represents the universe"
- // - @+3fieldTwo defines/binding FieldTwo
+ //- !{_ documents FieldTwo}
+ //- @+3fieldTwo defines/binding FieldTwo
// fieldTwo represents the universe
private static String fieldTwo;
- // - @+3fieldThree defines/binding FieldThree
- // - @+3fieldFour defines/binding FieldFour
+ //- @+3fieldThree defines/binding FieldThree
+ //- @+3fieldFour defines/binding FieldFour
private static int fieldThree; // EOL comment
private static int fieldFour;
- // - FieldThreeDoc documents FieldThree
- // - FieldThreeDoc.node/kind doc
- // - FieldThreeDoc.text "EOL comment"
- // - !{ _FieldFourDoc documents FieldFour }
+ //- !{_ documents FieldThree}
+ //- !{_ documents FieldFour }
- // - @+3fieldFive defines/binding FieldFive
- // - @+2fieldSix defines/binding FieldSix
+ //- @+3fieldFive defines/binding FieldFive
+ //- @+2fieldSix defines/binding FieldSix
private static int fieldFive, fieldSix; // EOL comment both
- // - FieldBothInlineDoc documents FieldFive
- // - FieldBothInlineDoc documents FieldSix
- // - FieldBothInlineDoc.text "EOL comment both"
+ //- !{_ documents FieldFive}
+ //- !{_ documents FieldSix}
- // - @+4fieldSeven defines/binding FieldSeven
- // - @+3fieldEight defines/binding FieldEight
+ //- @+4fieldSeven defines/binding FieldSeven
+ //- @+3fieldEight defines/binding FieldEight
// above comment both
private static int fieldSeven, fieldEight;
- // - FieldBothAboveDoc documents FieldSeven
- // - FieldBothAboveDoc documents FieldEight
- // - FieldBothAboveDoc.text "above comment both"
+ //- !{_ documents FieldSeven}
+ //- !{_ documents FieldEight}
- // - InnerDoc documents InnerClass
- // - InnerDoc.node/kind doc
- // - InnerDoc.text "This comments the Inner class."
- // - @+3Inner defines/binding InnerClass
+ //- !{_ documents InnerClass}
+ //- @+3Inner defines/binding InnerClass
- // This comments the Inner class.
+ // This comments but does not document the Inner class.
public static class Inner {}
- // - InnerIDoc documents InnerI
- // - InnerIDoc.node/kind doc
- // - InnerIDoc.text "This comments the InnerI interface."
- // - InnerIWeirdDoc documents InnerI
- // - InnerIWeirdDoc.node/kind doc
- // - InnerIWeirdDoc.text "a second, weirdly-placed comment"
- // - @+3InnerI defines/binding InnerI
+ //- !{_ documents InnerI}
+ //- @+4InnerI defines/binding InnerI
/* This comments the InnerI interface. */
// a second, weirdly-placed comment
static interface InnerI {} // this also comments the interface
- // - @+3InnerE ref/doc InnerE
- // - @+3InnerE defines/binding InnerE
+ //- @+3InnerE ref/doc InnerE
+ //- @+3InnerE defines/binding InnerE
/** This comments the {@link InnerE} enum. */
static enum InnerE {
- // - InnerEDoc documents InnerE
- // - InnerEDoc.node/kind doc
- // - InnerEDoc param.0 InnerE
- // - InnerEDoc.text "This comments the {@link [InnerE]} enum. "
+ //- InnerEDoc documents InnerE
+ //- InnerEDoc.node/kind doc
+ //- InnerEDoc param.0 InnerE
+ //- InnerEDoc.text "This comments the {@link [InnerE]} enum. "
- // - SomeValDoc documents SomeValue
- // - SomeValDoc.node/kind doc
- // - SomeValDoc.text "This comments SOME_VALUE."
- // - @+3SOME_VALUE defines SomeValue
+ //- !{_ documents SomeValue}
+ //- @+3SOME_VALUE defines SomeValue
// This comments SOME_VALUE.
SOME_VALUE,
- // - AnotherValDoc documents AnotherValue
- // - AnotherValDoc.node/kind doc
- // - AnotherValDoc.text "This documents {@link [ANOTHER_VALUE]}. "
- // - @+3ANOTHER_VALUE defines AnotherValue
+ //- AnotherValDoc documents AnotherValue
+ //- AnotherValDoc.node/kind doc
+ //- AnotherValDoc.text "This documents {@link [ANOTHER_VALUE]}. "
+ //- @+3ANOTHER_VALUE defines AnotherValue
/** This documents {@link ANOTHER_VALUE}. */
ANOTHER_VALUE;
}
- // - ToStringDoc documents ToString
- // - ToStringDoc.node/kind doc
- // - ToStringDoc.text "This documents {@link [#toString()]}. "
- // - @+3toString defines/binding ToString
+ //- ToStringDoc documents ToString
+ //- ToStringDoc.node/kind doc
+ //- ToStringDoc.text "This documents {@link [#toString()]}. "
+ //- @+4toString defines/binding ToString
/** This documents {@link #toString()}. */
@Override
@@ -133,25 +120,23 @@ public class Comments implements Comparable<Comments> {
return "null";
}
- // - @+4compareTo defines/binding CompareTo
+ //- @+4compareTo defines/binding CompareTo
/** This documents {@link #compareTo(Comments)} over {@link Override}. */
@Override
public int compareTo(Comments o) {
return 0;
}
- // - OverrideDoc documents CompareTo
- // - OverrideDoc.node/kind doc
- // - OverrideDoc param.0 _Override
- // - OverrideDoc.text "This documents {@link #compareTo(Comments)} over {@link [Override]}. "
+ //- OverrideDoc documents CompareTo
+ //- OverrideDoc.node/kind doc
+ //- OverrideDoc param.0 _Override
+ //- OverrideDoc.text "This documents {@link [#compareTo(Comments)]} over {@link [Override]}. "
- // - @+3fooFunction defines/binding FooFunction
+ //- @+3fooFunction defines/binding FooFunction
// This documents FooFunction
void fooFunction() {
return;
}
- // - FooFunctionDoc documents FooFunction
- // - FooFunctionDoc.node/kind doc
- // - FooFunctionDoc.text "This documents FooFunction"
+ //- !{_ documents FooFunction}
}
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DefaultCorpus.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DefaultCorpus.java
index 48202a02c..8fec80952 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DefaultCorpus.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DefaultCorpus.java
@@ -12,6 +12,13 @@ class DefaultCorpus {
//- ListStringType.node/kind "tapp"
private List<String> myvar;
+ //- @objList defines/binding ObjListVar
+ //- ObjListVar typed TAppNode
+ //- TAppNode.node/kind tapp
+ //- TAppNode param.1 AbsVarNode=vname(_, "kythe", "", "", "java")
+ //- AbsVarNode.node/kind absvar
+ private List<? extends Object> objList;
+
//- @myMethod defines/binding MyMethod
//- MyMethod typed MyMethodType=vname(_,"kythe",_,_,"java")
//- MyMethodType.node/kind "tapp"
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DiamondOperations.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DiamondOperations.java
index ecf1738c7..8513337f7 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DiamondOperations.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/DiamondOperations.java
@@ -6,7 +6,7 @@ final class DiamondOperations {
//- GenericStringType.node/kind tapp
//- GenericStringType param.0 GenericType
Generic<String> iter =
- //- @"Generic<>" ref DiamondType
+ //- @"Generic<>" ref/id DiamondType
//- DiamondType.node/kind tapp
//- DiamondType param.0 GenericType
new Generic<>() {
@@ -22,7 +22,7 @@ final class DiamondOperations {
//- @"Generic<Integer>" ref GenericIntType
//- GenericIntType.node/kind tapp
//- GenericIntType param.0 GenericType
- //- @"Generic<>" ref DiamondIntType
+ //- @"Generic<>" ref/id DiamondIntType
//- DiamondIntType.node/kind tapp
//- DiamondIntType param.0 GenericType
Generic<Integer> n = new Generic<>();
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Files.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Files.java
index 5ef0a2b63..9beb3eb1d 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Files.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Files.java
@@ -2,7 +2,7 @@
//- Package.node/kind package
package pkg;
-@SuppressWarnings("unused")
+@SuppressWarnings({"unused", "UnicodeInCode"})
//- @Files defines/binding FilesClass
public class Files {
@@ -10,8 +10,8 @@ public class Files {
static final int 錨 = 0;
//- Anchor=vname(_,"kythe","","kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Files.java","java") defines/binding UV
//- Anchor.node/kind anchor
- //- Anchor.loc/start 204
- //- Anchor.loc/end 207
+ //- Anchor.loc/start 223
+ //- Anchor.loc/end 226
//- @Inner defines/binding InnerClass
//- InnerClass childof FilesClass
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethod.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethod.java
index f8a88444d..d83afaa2a 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethod.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethod.java
@@ -29,7 +29,7 @@ public final class GenericMethod {
//- VerboseWildcardFn childof VerboseWildcardFnAbs
//- VerboseWildcardFn.node/kind function
//- VerboseWildcardFn param.0 VWParam1
- //- VWParam1 typed _VMParam1Type
+ //- VWParam1 typed VWParam1Type
//- VWParam1Type.node/kind tapp
//- VWParam1Type param.0 OptionalClass
//- VWParam1Type param.1 TVWVar
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethodRef.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethodRef.java
index 10c8d62df..34002dacc 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethodRef.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericMethodRef.java
@@ -39,13 +39,13 @@ public final class GenericMethodRef {
//- @T defines/binding AbsT
private static <T> void constructor() {
//- @Optional ref OptionalConstructor
- //- @Optional ref OClass
+ //- @Optional ref/id OClass
//- @GenericMethodRef ref GClass
//- @"new Optional<GenericMethodRef>()" ref/call OptionalConstructor
Object o = new Optional<GenericMethodRef>();
//- @Optional ref OptionalConstructor
- //- @Optional ref OClass
+ //- @Optional ref/id OClass
//- @"new Optional<T>()" ref/call OptionalConstructor
//- @T ref AbsT
Object o2 = new Optional<T>();
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Generics.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Generics.java
index 475d9901c..49b594af0 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Generics.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Generics.java
@@ -1,24 +1,23 @@
package pkg;
@SuppressWarnings("unused")
-//- @Generics=vname(_, Corpus, Root, Path, _) defines/binding GAbs
-//- Class childof GAbs=vname(_, Corpus, Root, Path, _)
-//- GAbs.node/kind abs
-//- GAbs param.0 TVar
+//- @Generics defines/binding Class
+//- Class.node/kind record
//- @T defines/binding TVar
-//- TVar.node/kind absvar
+//- TVar.node/kind tvar
+//- Class tparam.0 TVar
public class Generics<T> {
+ //- !{ _.node/kind abs }
+ //- !{ _.node/kind absvar }
+
//- @obj defines/binding V
//- V typed Obj
Object obj;
//- @print defines/binding PrintMethod
- //- @print defines/binding PrintAbs
- //- PrintMethod childof PrintAbs
- //- PrintAbs.node/kind abs
//- @P defines/binding PVar
- //- PrintAbs param.0 PVar
- //- PVar.node/kind absvar
+ //- PrintMethod tparam.0 PVar
+ //- PVar.node/kind tvar
//- PVar bounded/upper.0 Obj
public static <P> void print(
//- @P ref PVar
@@ -34,10 +33,10 @@ public class Generics<T> {
//- @gs defines/binding GVar
//- GVar typed GType
//- GType.node/kind tapp
- //- GType param.0 GAbs
+ //- GType param.0 Class
//- GType param.1 _Str
Generics<String> gs =
- //- @"Generics<String>" ref GType
+ //- @"Generics<String>" ref/id GType
new Generics<String>();
//- @"Generics" ref Class
@@ -45,26 +44,26 @@ public class Generics<T> {
//- NGVar typed NGType
//- NGType.node/kind record
Generics nonGeneric =
- //- @"Generics" ref Class
+ //- @"Generics" ref/id Class
new Generics();
//- @"Optional<Generics<String>>" ref OType
//- OType.node/kind tapp
- //- OType param.0 _Optional
+ //- OType param.0 OptionalClass
//- OType param.1 GType
//- @opt defines/binding OVar
//- OVar typed OType
Optional<Generics<String>> opt;
}
- //- @Optional defines/binding OptionalAbs
- //- _OptionalClass childof OptionalAbs
+ //- @Optional defines/binding OptionalClass
//- @T defines/binding OptionalTVar
- //- OptionalTVar.node/kind absvar
+ //- OptionalTVar.node/kind tvar
+ //- OptionalClass tparam.0 OptionalTVar
private static class Optional<T> {}
//- @U defines/binding UVar
- //- UVar.node/kind absvar
+ //- UVar.node/kind tvar
//- @List ref List
//- @Inter ref Inter
//- UVar bounded/upper.0 List
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericsAbs.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericsAbs.java
new file mode 100644
index 000000000..39c9f3cd8
--- /dev/null
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/GenericsAbs.java
@@ -0,0 +1,151 @@
+package pkg;
+
+@SuppressWarnings("unused")
+//- @GenericsAbs=vname(_, Corpus, Root, Path, _) defines/binding GAbs
+//- Class childof GAbs=vname(_, Corpus, Root, Path, _)
+//- GAbs.node/kind abs
+//- GAbs param.0 TVar
+//- @T defines/binding TVar
+//- TVar.node/kind absvar
+public class GenericsAbs<T> {
+ //- !{ _ tparam.0 _ }
+ //- !{ _.node/kind tvar }
+
+ //- @obj defines/binding V
+ //- V typed Obj
+ Object obj;
+
+ //- @print defines/binding PrintMethod
+ //- @print defines/binding PrintAbs
+ //- PrintMethod childof PrintAbs
+ //- PrintAbs.node/kind abs
+ //- @P defines/binding PVar
+ //- PrintAbs param.0 PVar
+ //- PVar.node/kind absvar
+ //- PVar bounded/upper.0 Obj
+ public static <P> void print(
+ //- @P ref PVar
+ P p) {
+ System.out.println(p.toString());
+ }
+
+ //- @T ref TVar
+ public void g(T t) {}
+
+ public static void f() {
+ //- @"GenericsAbs<String>" ref GType
+ //- @gs defines/binding GVar
+ //- GVar typed GType
+ //- GType.node/kind tapp
+ //- GType param.0 GAbs
+ //- GType param.1 _Str
+ GenericsAbs<String> gs =
+ //- @"GenericsAbs<String>" ref/id GType
+ new GenericsAbs<String>();
+
+ //- @"GenericsAbs" ref Class
+ //- @nonGeneric defines/binding NGVar
+ //- NGVar typed NGType
+ //- NGType.node/kind record
+ GenericsAbs nonGeneric =
+ //- @"GenericsAbs" ref/id Class
+ new GenericsAbs();
+
+ //- @"Optional<GenericsAbs<String>>" ref OType
+ //- OType.node/kind tapp
+ //- OType param.0 _Optional
+ //- OType param.1 GType
+ //- @opt defines/binding OVar
+ //- OVar typed OType
+ Optional<GenericsAbs<String>> opt;
+ }
+
+ //- @Optional defines/binding OptionalAbs
+ //- _OptionalClass childof OptionalAbs
+ //- @T defines/binding OptionalTVar
+ //- OptionalTVar.node/kind absvar
+ private static class Optional<T> {}
+
+ //- @U defines/binding UVar
+ //- UVar.node/kind absvar
+ //- @List ref List
+ //- @Inter ref Inter
+ //- UVar bounded/upper.0 List
+ //- UVar bounded/upper.1 Inter
+ private static class Bounded<U extends java.util.List & Inter> {}
+
+ //- @classTypeVarBound defines/binding _ClassTypeVarBoundFunc
+ //- @E defines/binding EVar
+ //- EVar bounded/upper.0 TVar
+ public <E extends T> void classTypeVarBound() {}
+
+ public <
+ //- @X defines/binding XVar
+ X,
+ //- @Y defines/binding YVar
+ //- YVar bounded/upper.0 XVar
+ Y extends X>
+ //- @ownTypeVarBound defines/binding _OwnTypeVarBoundFunc
+ void ownTypeVarBound() {}
+
+ // Verify that, if there are interface bounds, then java.lang.Object appears as a superclass bound
+ // (and in the type parameter's signature) iff it's provided explicitly.
+ // This matters because a bound of Object&Iface is actually different from a bound of just Iface:
+ // The former's erasure is Object, the latter's is Iface, and erasure is a language-level concept
+ // (see e.g., https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.6)
+
+ // We test the cases of single vs. multiple interface bounds because those have different code
+ // paths
+ // (the latter is implemented by javac as an intersection type).
+
+ // With only an (implicit or explicit) bound of Object, do emit a bounded/upper.0 edge,
+ // but don't add the superfluous "extends java.lang.Object" in the name.
+
+ //- @noIFaceBound defines/binding _Func
+ //- @S0 defines/binding S0Var
+ //- S0Var bounded/upper.0 Obj
+ public <S0> void noIFaceBound() {}
+
+ //- @objAndNoIFaceBound defines/binding _OFunc
+ //- @S1 defines/binding S1Var
+ //- S1Var bounded/upper.0 Obj
+ public <S1> void objAndNoIFaceBound() {}
+
+ // If there is at least one interface bound, only emit a bound of java.lang.Object if it was
+ // explicit.
+
+ //- @oneIFaceBound defines/binding _IFunc
+ //- @S2 defines/binding S2Var
+ //- @List ref List
+ //- !{ S2Var bounded/upper.0 Obj }
+ //- S2Var bounded/upper.0 List
+ public <S2 extends java.util.List> void oneIFaceBound() {}
+
+ //- @objAndOneIFaceBound defines/binding _OIFunc
+ //- @S3 defines/binding S3Var
+ //- @List ref List
+ //- S3Var bounded/upper.0 Obj
+ //- S3Var bounded/upper.1 List
+ public <S3 extends Object & java.util.List> void objAndOneIFaceBound() {}
+
+ //- @twoIfaceBounds defines/binding _IIFunc
+ //- @S4 defines/binding S4Var
+ //- @List ref List
+ //- @Inter ref Inter
+ //- !{ S4Var bounded/upper.0 Obj }
+ //- S4Var bounded/upper.0 List
+ //- S4Var bounded/upper.1 Inter
+ public <S4 extends java.util.List & Inter> void twoIfaceBounds() {}
+
+ //- @objAndTwoIFaceBounds defines/binding _OIIFunc
+ //- @S5 defines/binding S5Var
+ //- @List ref List
+ //- @Inter ref Inter
+ //- S5Var bounded/upper.0 Obj
+ //- S5Var bounded/upper.1 List
+ //- S5Var bounded/upper.2 Inter
+ public <S5 extends Object & java.util.List & Inter> void objAndTwoIFaceBounds() {}
+
+ //- @Inter defines/binding Inter
+ private static interface Inter {}
+}
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/MemberReferences.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/MemberReferences.java
index a11b6d53c..2c093718f 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/MemberReferences.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/MemberReferences.java
@@ -73,14 +73,14 @@ public class MemberReferences {
}
public Supplier<Referent> getIdThunk() {
- //- @Referent ref ReferentClass
+ //- @Referent ref/id ReferentClass
//- @func ref IdentityMethod
//- !{ @new.node/kind anchor }
return new Referent()::func;
}
public Function<Referent, Referent> getIdPartialApplication() {
- //- @Referent ref ReferentClass
+ //- @Referent ref/id ReferentClass
//- @func ref AlternativeMethod
//- !{ @new.node/kind anchor }
return new Referent()::func;
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Methods.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Methods.java
index dd31cfc19..c01432e2e 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Methods.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Methods.java
@@ -30,7 +30,7 @@ public class Methods {
//- CreateType param.1 Class
//- CreateType param.2 VoidBuiltin
public static Methods create() {
- //- @Methods ref Class
+ //- @Methods ref/id Class
//- @"Methods" ref Ctor
return new Methods();
}
@@ -100,7 +100,7 @@ public class Methods {
//- @IOException ref IOE
public static void throwsException() throws IOException {
- //- @IOException ref IOE
+ //- @IOException ref/id IOE
throw new IOException();
}
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Scopes.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Scopes.java
index f0e31a338..70263d4ba 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Scopes.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Scopes.java
@@ -33,6 +33,7 @@ public class Scopes {
}
//- @LocalClass childof Method
+ //- @LocalClass ref/id LocalClass
return new LocalClass();
}
}
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/SpecialMembers.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/SpecialMembers.java
index 3da51bf1e..61e4031f4 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/SpecialMembers.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/SpecialMembers.java
@@ -15,7 +15,7 @@ public final class SpecialMembers {
int[] intArray = new int[]{1, 2, 3};
//- @clone ref Clone
- intArray.clone();
+ intArray = intArray.clone();
//- @length ref Length
System.err.println(intArray.length);
diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Variables.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Variables.java
index 1fcdb5a3e..9b7506304 100644
--- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Variables.java
+++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/Variables.java
@@ -52,13 +52,13 @@ public class Variables {
//- @stream ref ResourceVar
stream.write('\n');
- //- @ioe defines/binding ExceptionParam
+ //- @#2io defines/binding ExceptionParam
//- ExceptionParam.node/kind variable
//- ExceptionParam.subkind local/exception
//- ExceptionParam childof F
- } catch (IOException ioe) {
- //- @ioe ref ExceptionParam
- throw ioe;
+ } catch (java.io.IOException io) {
+ //- @io ref ExceptionParam
+ throw io;
}
}
diff --git a/kythe/javatests/com/google/devtools/kythe/extractors/java/BUILD b/kythe/javatests/com/google/devtools/kythe/extractors/java/BUILD
index b6425a854..086092836 100644
--- a/kythe/javatests/com/google/devtools/kythe/extractors/java/BUILD
+++ b/kythe/javatests/com/google/devtools/kythe/extractors/java/BUILD
@@ -31,5 +31,4 @@ java_binary(
"testdata/processor/SillyProcessor.java",
],
create_executable = 0,
- deps = ["//third_party/javac"],
)
diff --git a/kythe/javatests/com/google/devtools/kythe/extractors/java/JavaExtractorTest.java b/kythe/javatests/com/google/devtools/kythe/extractors/java/JavaExtractorTest.java
index 52d25c522..0f372c318 100644
--- a/kythe/javatests/com/google/devtools/kythe/extractors/java/JavaExtractorTest.java
+++ b/kythe/javatests/com/google/devtools/kythe/extractors/java/JavaExtractorTest.java
@@ -120,7 +120,8 @@ public class JavaExtractorTest extends TestCase {
java.extract(TARGET1, sources, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, "output");
CompilationUnit unit = description.getCompilationUnit();
- assertThat(unit.getVName().getCorpus()).isEmpty(); // source files are from different corpora
+ // source files are from different corpora, so unit is assigned default corpus of "kythe"
+ assertThat(unit.getVName().getCorpus()).isEqualTo("kythe");
assertThat(unit.getWorkingDirectory()).isEqualTo("/root");
assertThat(unit).isNotNull();
assertThat(unit.getVName().getSignature()).isEqualTo(TARGET1);
diff --git a/kythe/javatests/com/google/devtools/kythe/platform/java/BUILD b/kythe/javatests/com/google/devtools/kythe/platform/java/BUILD
index e65876ecc..b7cc6eca9 100644
--- a/kythe/javatests/com/google/devtools/kythe/platform/java/BUILD
+++ b/kythe/javatests/com/google/devtools/kythe/platform/java/BUILD
@@ -6,13 +6,15 @@ java_test(
name = "options_utils_test",
size = "small",
srcs = ["OptionsTest.java"],
+ javacopts = [
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ ],
test_class = "com.google.devtools.kythe.platform.java.OptionsTest",
deps = [
"//kythe/java/com/google/devtools/kythe/platform/java:options",
"//kythe/proto:analysis_java_proto",
"//kythe/proto:java_java_proto",
"//third_party/guava",
- "//third_party/javac",
"//third_party/truth",
"@com_google_protobuf//:any_proto",
"@com_google_protobuf//:protobuf_java",
diff --git a/kythe/javatests/com/google/devtools/kythe/platform/java/filemanager/BUILD b/kythe/javatests/com/google/devtools/kythe/platform/java/filemanager/BUILD
index c4c369fc8..818fc1c2f 100644
--- a/kythe/javatests/com/google/devtools/kythe/platform/java/filemanager/BUILD
+++ b/kythe/javatests/com/google/devtools/kythe/platform/java/filemanager/BUILD
@@ -8,7 +8,6 @@ java_test(
srcs = ["CompilationUnitFileTreeTest.java"],
test_class = "com.google.devtools.kythe.platform.java.filemanager.CompilationUnitFileTreeTest",
deps = [
- "//kythe/java/com/google/devtools/kythe/platform/java/filemanager",
"//kythe/java/com/google/devtools/kythe/platform/java/filemanager:filetree",
"//kythe/proto:analysis_java_proto",
"//third_party/guava",
diff --git a/kythe/javatests/com/google/devtools/kythe/platform/shared/filesystem/CompilationUnitFileSystemTest.java b/kythe/javatests/com/google/devtools/kythe/platform/shared/filesystem/CompilationUnitFileSystemTest.java
index 75af7b2da..d9fc499c8 100644
--- a/kythe/javatests/com/google/devtools/kythe/platform/shared/filesystem/CompilationUnitFileSystemTest.java
+++ b/kythe/javatests/com/google/devtools/kythe/platform/shared/filesystem/CompilationUnitFileSystemTest.java
@@ -68,7 +68,7 @@ public final class CompilationUnitFileSystemTest {
}
CompilationUnitFileSystem build() {
- List<FileData> fileData = ExtractorUtils.convertBytesToFileDatas(inputFiles.build());
+ List<FileData> fileData = ExtractorUtils.convertBytesToFileDatas(inputFiles.buildOrThrow());
CompilationUnit compilationUnit =
CompilationUnit.newBuilder()
.addAllRequiredInput(ExtractorUtils.toFileInputs(fileData))
diff --git a/kythe/proto/analysis.proto b/kythe/proto/analysis.proto
index 5f208337c..89f377f77 100644
--- a/kythe/proto/analysis.proto
+++ b/kythe/proto/analysis.proto
@@ -18,14 +18,14 @@ syntax = "proto3";
package kythe.proto;
-option go_package = "analysis_go_proto";
-option java_package = "com.google.devtools.kythe.proto";
-option cc_enable_arenas = true;
-
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "kythe/proto/storage.proto";
+option go_package = "analysis_go_proto";
+option java_package = "com.google.devtools.kythe.proto";
+option cc_enable_arenas = true;
+
// An AnalysisRequest instructs an analyzer to perform an analysis on a single
// CompilationUnit.
message AnalysisRequest {
@@ -48,10 +48,9 @@ message AnalysisRequest {
// place. A given analysis may not produce any outputs. It is okay for an
// indexer to send an empty AnalysisOutput message if needed to keep the RPC
// channel alive; the driver must correctly handle this.
-//
-// The format of value is determined by the analyzer. Kythe language indexers
-// emit wire-format kythe.proto.Entry messages.
message AnalysisOutput {
+ // The format of `value` is determined by the analyzer. Kythe language
+ // indexers emit wire-format kythe.proto.Entry messages.
bytes value = 1;
// An analyzer may optionally report the final result of analysis by
diff --git a/kythe/proto/common.proto b/kythe/proto/common.proto
index f2574b60d..95cbf54df 100644
--- a/kythe/proto/common.proto
+++ b/kythe/proto/common.proto
@@ -142,6 +142,12 @@ message MarkedSource {
// Substitute this node with the marked source derived from the typed edge
// of the context node.
LOOKUP_BY_TYPED = 9;
+ // Substitute this node with a PARAMETER formed from the tparam edges from
+ // the context node starting with `lookup_index`.
+ PARAMETER_LOOKUP_BY_TPARAM = 10;
+ // Substitute this node with the marked source derived from the
+ // `lookup_index`th tparam edge of the context node.
+ LOOKUP_BY_TPARAM = 11;
}
Kind kind = 1;
// Nodes expect to be printed as:
@@ -198,3 +204,22 @@ message Language {
// Set of analyzer versions used for this language's analysis.
repeated string analyzer_version = 3;
}
+
+// A Hash of some data.
+message Hash {
+ // Specifies the hash algorithm, if any.
+ enum HashType {
+ NONE = 0;
+
+ // Use a sha256 hash (git's successor hash --
+ // https://git-scm.com/docs/hash-function-transition/).
+ SHA256 = 1;
+ // Use a sha1 hash (git's legacy blob hash).
+ SHA1 = 2;
+ }
+
+ // The type of hash that was performed.
+ HashType type = 1;
+ // The hash value.
+ bytes value = 2;
+}
diff --git a/kythe/proto/common_go_proto/common.pb.go b/kythe/proto/common_go_proto/common.pb.go
index 2a83f4b77..c8ec84009 100644
--- a/kythe/proto/common_go_proto/common.pb.go
+++ b/kythe/proto/common_go_proto/common.pb.go
@@ -34,21 +34,25 @@ const (
MarkedSource_LOOKUP_BY_PARAM MarkedSource_Kind = 7
MarkedSource_PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS MarkedSource_Kind = 8
MarkedSource_LOOKUP_BY_TYPED MarkedSource_Kind = 9
+ MarkedSource_PARAMETER_LOOKUP_BY_TPARAM MarkedSource_Kind = 10
+ MarkedSource_LOOKUP_BY_TPARAM MarkedSource_Kind = 11
)
// Enum value maps for MarkedSource_Kind.
var (
MarkedSource_Kind_name = map[int32]string{
- 0: "BOX",
- 1: "TYPE",
- 2: "PARAMETER",
- 3: "IDENTIFIER",
- 4: "CONTEXT",
- 5: "INITIALIZER",
- 6: "PARAMETER_LOOKUP_BY_PARAM",
- 7: "LOOKUP_BY_PARAM",
- 8: "PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS",
- 9: "LOOKUP_BY_TYPED",
+ 0: "BOX",
+ 1: "TYPE",
+ 2: "PARAMETER",
+ 3: "IDENTIFIER",
+ 4: "CONTEXT",
+ 5: "INITIALIZER",
+ 6: "PARAMETER_LOOKUP_BY_PARAM",
+ 7: "LOOKUP_BY_PARAM",
+ 8: "PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS",
+ 9: "LOOKUP_BY_TYPED",
+ 10: "PARAMETER_LOOKUP_BY_TPARAM",
+ 11: "LOOKUP_BY_TPARAM",
}
MarkedSource_Kind_value = map[string]int32{
"BOX": 0,
@@ -61,6 +65,8 @@ var (
"LOOKUP_BY_PARAM": 7,
"PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS": 8,
"LOOKUP_BY_TYPED": 9,
+ "PARAMETER_LOOKUP_BY_TPARAM": 10,
+ "LOOKUP_BY_TPARAM": 11,
}
)
@@ -140,6 +146,55 @@ func (Language_Support) EnumDescriptor() ([]byte, []int) {
return file_kythe_proto_common_proto_rawDescGZIP(), []int{11, 0}
}
+type Hash_HashType int32
+
+const (
+ Hash_NONE Hash_HashType = 0
+ Hash_SHA256 Hash_HashType = 1
+ Hash_SHA1 Hash_HashType = 2
+)
+
+// Enum value maps for Hash_HashType.
+var (
+ Hash_HashType_name = map[int32]string{
+ 0: "NONE",
+ 1: "SHA256",
+ 2: "SHA1",
+ }
+ Hash_HashType_value = map[string]int32{
+ "NONE": 0,
+ "SHA256": 1,
+ "SHA1": 2,
+ }
+)
+
+func (x Hash_HashType) Enum() *Hash_HashType {
+ p := new(Hash_HashType)
+ *p = x
+ return p
+}
+
+func (x Hash_HashType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Hash_HashType) Descriptor() protoreflect.EnumDescriptor {
+ return file_kythe_proto_common_proto_enumTypes[2].Descriptor()
+}
+
+func (Hash_HashType) Type() protoreflect.EnumType {
+ return &file_kythe_proto_common_proto_enumTypes[2]
+}
+
+func (x Hash_HashType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Hash_HashType.Descriptor instead.
+func (Hash_HashType) EnumDescriptor() ([]byte, []int) {
+ return file_kythe_proto_common_proto_rawDescGZIP(), []int{12, 0}
+}
+
type Fact struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -904,6 +959,61 @@ func (x *Language) GetAnalyzerVersion() []string {
return nil
}
+type Hash struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Type Hash_HashType `protobuf:"varint,1,opt,name=type,proto3,enum=kythe.proto.common.Hash_HashType" json:"type,omitempty"`
+ Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *Hash) Reset() {
+ *x = Hash{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_kythe_proto_common_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Hash) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Hash) ProtoMessage() {}
+
+func (x *Hash) ProtoReflect() protoreflect.Message {
+ mi := &file_kythe_proto_common_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Hash.ProtoReflect.Descriptor instead.
+func (*Hash) Descriptor() ([]byte, []int) {
+ return file_kythe_proto_common_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *Hash) GetType() Hash_HashType {
+ if x != nil {
+ return x.Type
+ }
+ return Hash_NONE
+}
+
+func (x *Hash) GetValue() []byte {
+ if x != nil {
+ return x.Value
+ }
+ return nil
+}
+
var File_kythe_proto_common_proto protoreflect.FileDescriptor
var file_kythe_proto_common_proto_rawDesc = []byte{
@@ -966,7 +1076,7 @@ var file_kythe_proto_common_proto_rawDesc = []byte{
0x61, 0x74, 0x68, 0x22, 0x32, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x64,
0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10,
- 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xe8, 0x04, 0x0a, 0x0c, 0x4d, 0x61, 0x72, 0x6b,
+ 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x9e, 0x05, 0x0a, 0x0c, 0x4d, 0x61, 0x72, 0x6b,
0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b,
@@ -992,7 +1102,7 @@ var file_kythe_proto_common_proto_rawDesc = []byte{
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0b, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c,
- 0x69, 0x6e, 0x6b, 0x22, 0xcc, 0x01, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x07, 0x0a, 0x03,
+ 0x69, 0x6e, 0x6b, 0x22, 0x82, 0x02, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x07, 0x0a, 0x03,
0x42, 0x4f, 0x58, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12,
0x0d, 0x0a, 0x09, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0e,
0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0b,
@@ -1005,38 +1115,49 @@ var file_kythe_proto_common_proto_rawDesc = []byte{
0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x59, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x57, 0x49,
0x54, 0x48, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x08, 0x12, 0x13, 0x0a,
0x0f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x44,
- 0x10, 0x09, 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a,
- 0x0e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64,
- 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12,
- 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73,
- 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
- 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61,
- 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61,
- 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75,
- 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x73, 0x75, 0x70, 0x70, 0x6f,
- 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x61,
- 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07,
- 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79,
- 0x7a, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0b, 0x0a,
- 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58,
- 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,
- 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x42, 0x34, 0x0a, 0x1f, 0x63,
- 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f,
- 0x6c, 0x73, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f,
+ 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x50, 0x41, 0x52, 0x41, 0x4d,
+ 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x59, 0x5f,
+ 0x54, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0x0b, 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62,
+ 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x4e,
+ 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x61,
+ 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x06, 0x4f,
+ 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x1a, 0x0a,
+ 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0xc2, 0x01, 0x0a,
+ 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a,
+ 0x07, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24,
+ 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x75, 0x70,
+ 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x29, 0x0a,
+ 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65,
+ 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x53, 0x75, 0x70, 0x70,
+ 0x6f, 0x72, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
+ 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c,
+ 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10,
+ 0x02, 0x22, 0x7f, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73,
+ 0x68, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2a, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06,
+ 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x48, 0x41, 0x31,
+ 0x10, 0x02, 0x42, 0x34, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f,
+ 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1051,43 +1172,46 @@ func file_kythe_proto_common_proto_rawDescGZIP() []byte {
return file_kythe_proto_common_proto_rawDescData
}
-var file_kythe_proto_common_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_kythe_proto_common_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
+var file_kythe_proto_common_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_kythe_proto_common_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
var file_kythe_proto_common_proto_goTypes = []interface{}{
(MarkedSource_Kind)(0), // 0: kythe.proto.common.MarkedSource.Kind
(Language_Support)(0), // 1: kythe.proto.common.Language.Support
- (*Fact)(nil), // 2: kythe.proto.common.Fact
- (*Point)(nil), // 3: kythe.proto.common.Point
- (*Span)(nil), // 4: kythe.proto.common.Span
- (*NodeInfo)(nil), // 5: kythe.proto.common.NodeInfo
- (*Diagnostic)(nil), // 6: kythe.proto.common.Diagnostic
- (*ResolvedDiagnostic)(nil), // 7: kythe.proto.common.ResolvedDiagnostic
- (*CorpusPath)(nil), // 8: kythe.proto.common.CorpusPath
- (*Link)(nil), // 9: kythe.proto.common.Link
- (*MarkedSource)(nil), // 10: kythe.proto.common.MarkedSource
- (*SymbolInfo)(nil), // 11: kythe.proto.common.SymbolInfo
- (*Origin)(nil), // 12: kythe.proto.common.Origin
- (*Language)(nil), // 13: kythe.proto.common.Language
- nil, // 14: kythe.proto.common.NodeInfo.FactsEntry
- (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp
+ (Hash_HashType)(0), // 2: kythe.proto.common.Hash.HashType
+ (*Fact)(nil), // 3: kythe.proto.common.Fact
+ (*Point)(nil), // 4: kythe.proto.common.Point
+ (*Span)(nil), // 5: kythe.proto.common.Span
+ (*NodeInfo)(nil), // 6: kythe.proto.common.NodeInfo
+ (*Diagnostic)(nil), // 7: kythe.proto.common.Diagnostic
+ (*ResolvedDiagnostic)(nil), // 8: kythe.proto.common.ResolvedDiagnostic
+ (*CorpusPath)(nil), // 9: kythe.proto.common.CorpusPath
+ (*Link)(nil), // 10: kythe.proto.common.Link
+ (*MarkedSource)(nil), // 11: kythe.proto.common.MarkedSource
+ (*SymbolInfo)(nil), // 12: kythe.proto.common.SymbolInfo
+ (*Origin)(nil), // 13: kythe.proto.common.Origin
+ (*Language)(nil), // 14: kythe.proto.common.Language
+ (*Hash)(nil), // 15: kythe.proto.common.Hash
+ nil, // 16: kythe.proto.common.NodeInfo.FactsEntry
+ (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp
}
var file_kythe_proto_common_proto_depIdxs = []int32{
- 3, // 0: kythe.proto.common.Span.start:type_name -> kythe.proto.common.Point
- 3, // 1: kythe.proto.common.Span.end:type_name -> kythe.proto.common.Point
- 14, // 2: kythe.proto.common.NodeInfo.facts:type_name -> kythe.proto.common.NodeInfo.FactsEntry
- 4, // 3: kythe.proto.common.Diagnostic.span:type_name -> kythe.proto.common.Span
- 8, // 4: kythe.proto.common.ResolvedDiagnostic.corpus_path:type_name -> kythe.proto.common.CorpusPath
- 6, // 5: kythe.proto.common.ResolvedDiagnostic.diagnostic:type_name -> kythe.proto.common.Diagnostic
+ 4, // 0: kythe.proto.common.Span.start:type_name -> kythe.proto.common.Point
+ 4, // 1: kythe.proto.common.Span.end:type_name -> kythe.proto.common.Point
+ 16, // 2: kythe.proto.common.NodeInfo.facts:type_name -> kythe.proto.common.NodeInfo.FactsEntry
+ 5, // 3: kythe.proto.common.Diagnostic.span:type_name -> kythe.proto.common.Span
+ 9, // 4: kythe.proto.common.ResolvedDiagnostic.corpus_path:type_name -> kythe.proto.common.CorpusPath
+ 7, // 5: kythe.proto.common.ResolvedDiagnostic.diagnostic:type_name -> kythe.proto.common.Diagnostic
0, // 6: kythe.proto.common.MarkedSource.kind:type_name -> kythe.proto.common.MarkedSource.Kind
- 10, // 7: kythe.proto.common.MarkedSource.child:type_name -> kythe.proto.common.MarkedSource
- 9, // 8: kythe.proto.common.MarkedSource.link:type_name -> kythe.proto.common.Link
- 15, // 9: kythe.proto.common.Origin.commit_timestamp:type_name -> google.protobuf.Timestamp
+ 11, // 7: kythe.proto.common.MarkedSource.child:type_name -> kythe.proto.common.MarkedSource
+ 10, // 8: kythe.proto.common.MarkedSource.link:type_name -> kythe.proto.common.Link
+ 17, // 9: kythe.proto.common.Origin.commit_timestamp:type_name -> google.protobuf.Timestamp
1, // 10: kythe.proto.common.Language.support:type_name -> kythe.proto.common.Language.Support
- 11, // [11:11] is the sub-list for method output_type
- 11, // [11:11] is the sub-list for method input_type
- 11, // [11:11] is the sub-list for extension type_name
- 11, // [11:11] is the sub-list for extension extendee
- 0, // [0:11] is the sub-list for field type_name
+ 2, // 11: kythe.proto.common.Hash.type:type_name -> kythe.proto.common.Hash.HashType
+ 12, // [12:12] is the sub-list for method output_type
+ 12, // [12:12] is the sub-list for method input_type
+ 12, // [12:12] is the sub-list for extension type_name
+ 12, // [12:12] is the sub-list for extension extendee
+ 0, // [0:12] is the sub-list for field type_name
}
func init() { file_kythe_proto_common_proto_init() }
@@ -1240,14 +1364,26 @@ func file_kythe_proto_common_proto_init() {
return nil
}
}
+ file_kythe_proto_common_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Hash); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_kythe_proto_common_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 13,
+ NumEnums: 3,
+ NumMessages: 14,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/kythe/proto/schema.proto b/kythe/proto/schema.proto
index 0460d73ed..f6442ab4f 100644
--- a/kythe/proto/schema.proto
+++ b/kythe/proto/schema.proto
@@ -44,6 +44,7 @@ enum NodeKind {
DIAGNOSTIC = 5 [(metadata).label = "diagnostic"];
DOC = 6 [(metadata).label = "doc"];
FILE = 7 [(metadata).label = "file"];
+ GFLAG = 27 [(metadata).label = "google/gflag"];
INTERFACE = 8 [(metadata).label = "interface"];
FUNCTION = 9 [(metadata).label = "function"];
LOOKUP = 10 [(metadata).label = "lookup"];
@@ -57,6 +58,7 @@ enum NodeKind {
SYMBOL = 18 [(metadata).label = "symbol"];
TALIAS = 19 [(metadata).label = "talias"];
TAPP = 20 [(metadata).label = "tapp"];
+ TVAR = 26 [(metadata).label = "tvar"];
TBUILTIN = 21 [(metadata).label = "tbuiltin"];
TNOMINAL = 22 [(metadata).label = "tnominal"];
TSIGMA = 23 [(metadata).label = "tsigma"];
@@ -121,6 +123,7 @@ enum EdgeKind {
BOUNDED_UPPER = 5 [(metadata).label = "/kythe/edge/bounded/upper"];
CHILD_OF = 6 [(metadata).label = "/kythe/edge/childof"];
CHILD_OF_CONTEXT = 7 [(metadata).label = "/kythe/edge/childof/context"];
+ COMPLETED_BY = 49 [(metadata).label = "/kythe/edge/completedby"];
COMPLETES = 8 [(metadata).label = "/kythe/edge/completes"];
COMPLETES_UNIQUELY = 9 [(metadata).label = "/kythe/edge/completes/uniquely"];
DEFINES = 10 [(metadata).label = "/kythe/edge/defines"];
@@ -163,6 +166,7 @@ enum EdgeKind {
SPECIALIZES_SPECULATIVE = 40
[(metadata).label = "/kythe/edge/specializes/speculative"];
TAGGED = 41 [(metadata).label = "/kythe/edge/tagged"];
+ TPARAM = 48 [(metadata).label = "/kythe/edge/tparam"];
TYPED = 42 [(metadata).label = "/kythe/edge/typed"];
UNDEFINES = 43 [(metadata).label = "/kythe/edge/undefines"];
}
diff --git a/kythe/proto/schema_go_proto/schema.pb.go b/kythe/proto/schema_go_proto/schema.pb.go
index 30c7120f1..2f9978b7a 100644
--- a/kythe/proto/schema_go_proto/schema.pb.go
+++ b/kythe/proto/schema_go_proto/schema.pb.go
@@ -33,6 +33,7 @@ const (
NodeKind_DIAGNOSTIC NodeKind = 5
NodeKind_DOC NodeKind = 6
NodeKind_FILE NodeKind = 7
+ NodeKind_GFLAG NodeKind = 27
NodeKind_INTERFACE NodeKind = 8
NodeKind_FUNCTION NodeKind = 9
NodeKind_LOOKUP NodeKind = 10
@@ -46,6 +47,7 @@ const (
NodeKind_SYMBOL NodeKind = 18
NodeKind_TALIAS NodeKind = 19
NodeKind_TAPP NodeKind = 20
+ NodeKind_TVAR NodeKind = 26
NodeKind_TBUILTIN NodeKind = 21
NodeKind_TNOMINAL NodeKind = 22
NodeKind_TSIGMA NodeKind = 23
@@ -64,6 +66,7 @@ var (
5: "DIAGNOSTIC",
6: "DOC",
7: "FILE",
+ 27: "GFLAG",
8: "INTERFACE",
9: "FUNCTION",
10: "LOOKUP",
@@ -77,6 +80,7 @@ var (
18: "SYMBOL",
19: "TALIAS",
20: "TAPP",
+ 26: "TVAR",
21: "TBUILTIN",
22: "TNOMINAL",
23: "TSIGMA",
@@ -92,6 +96,7 @@ var (
"DIAGNOSTIC": 5,
"DOC": 6,
"FILE": 7,
+ "GFLAG": 27,
"INTERFACE": 8,
"FUNCTION": 9,
"LOOKUP": 10,
@@ -105,6 +110,7 @@ var (
"SYMBOL": 18,
"TALIAS": 19,
"TAPP": 20,
+ "TVAR": 26,
"TBUILTIN": 21,
"TNOMINAL": 22,
"TSIGMA": 23,
@@ -348,6 +354,7 @@ const (
EdgeKind_BOUNDED_UPPER EdgeKind = 5
EdgeKind_CHILD_OF EdgeKind = 6
EdgeKind_CHILD_OF_CONTEXT EdgeKind = 7
+ EdgeKind_COMPLETED_BY EdgeKind = 49
EdgeKind_COMPLETES EdgeKind = 8
EdgeKind_COMPLETES_UNIQUELY EdgeKind = 9
EdgeKind_DEFINES EdgeKind = 10
@@ -386,6 +393,7 @@ const (
EdgeKind_SPECIALIZES EdgeKind = 39
EdgeKind_SPECIALIZES_SPECULATIVE EdgeKind = 40
EdgeKind_TAGGED EdgeKind = 41
+ EdgeKind_TPARAM EdgeKind = 48
EdgeKind_TYPED EdgeKind = 42
EdgeKind_UNDEFINES EdgeKind = 43
)
@@ -401,6 +409,7 @@ var (
5: "BOUNDED_UPPER",
6: "CHILD_OF",
7: "CHILD_OF_CONTEXT",
+ 49: "COMPLETED_BY",
8: "COMPLETES",
9: "COMPLETES_UNIQUELY",
10: "DEFINES",
@@ -439,6 +448,7 @@ var (
39: "SPECIALIZES",
40: "SPECIALIZES_SPECULATIVE",
41: "TAGGED",
+ 48: "TPARAM",
42: "TYPED",
43: "UNDEFINES",
}
@@ -451,6 +461,7 @@ var (
"BOUNDED_UPPER": 5,
"CHILD_OF": 6,
"CHILD_OF_CONTEXT": 7,
+ "COMPLETED_BY": 49,
"COMPLETES": 8,
"COMPLETES_UNIQUELY": 9,
"DEFINES": 10,
@@ -489,6 +500,7 @@ var (
"SPECIALIZES": 39,
"SPECIALIZES_SPECULATIVE": 40,
"TAGGED": 41,
+ "TPARAM": 48,
"TYPED": 42,
"UNDEFINES": 43,
}
@@ -1101,7 +1113,7 @@ var file_kythe_proto_schema_proto_rawDesc = []byte{
0x74, 0x12, 0x2e, 0x0a, 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63,
0x68, 0x65, 0x6d, 0x61, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x48, 0x00, 0x52, 0x04, 0x65, 0x64, 0x67,
- 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2a, 0xa7, 0x05, 0x0a, 0x08, 0x4e,
+ 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2a, 0xdc, 0x05, 0x0a, 0x08, 0x4e,
0x6f, 0x64, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
0x57, 0x4e, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x12,
0x0a, 0x03, 0x41, 0x42, 0x53, 0x10, 0x01, 0x1a, 0x09, 0xca, 0x93, 0x22, 0x05, 0x0a, 0x03, 0x61,
@@ -1115,273 +1127,282 @@ var file_kythe_proto_schema_proto_rawDesc = []byte{
0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x03, 0x44, 0x4f, 0x43, 0x10, 0x06, 0x1a,
0x09, 0xca, 0x93, 0x22, 0x05, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x14, 0x0a, 0x04, 0x46, 0x49,
0x4c, 0x45, 0x10, 0x07, 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65,
- 0x12, 0x1e, 0x0a, 0x09, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x08, 0x1a,
- 0x0f, 0xca, 0x93, 0x22, 0x0b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65,
- 0x12, 0x1c, 0x0a, 0x08, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x1a, 0x0e,
- 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18,
- 0x0a, 0x06, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x10, 0x0a, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08,
- 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x05, 0x4d, 0x41, 0x43, 0x52,
- 0x4f, 0x10, 0x0b, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x63, 0x72, 0x6f,
- 0x12, 0x14, 0x0a, 0x04, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x0c, 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06,
- 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x04, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x0d,
- 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x07,
- 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10, 0x0e, 0x1a, 0x0d, 0xca, 0x93, 0x22, 0x09, 0x0a,
- 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x43,
- 0x45, 0x53, 0x53, 0x10, 0x0f, 0x1a, 0x0d, 0xca, 0x93, 0x22, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f,
- 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x06, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x10,
- 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12,
- 0x0a, 0x03, 0x53, 0x55, 0x4d, 0x10, 0x11, 0x1a, 0x09, 0xca, 0x93, 0x22, 0x05, 0x0a, 0x03, 0x73,
- 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x06, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x10, 0x12, 0x1a, 0x0c,
- 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x06,
- 0x54, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x13, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06,
- 0x74, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x54, 0x41, 0x50, 0x50, 0x10, 0x14,
- 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x74, 0x61, 0x70, 0x70, 0x12, 0x1c, 0x0a, 0x08,
- 0x54, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x49, 0x4e, 0x10, 0x15, 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a,
- 0x0a, 0x08, 0x74, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x08, 0x54, 0x4e,
- 0x4f, 0x4d, 0x49, 0x4e, 0x41, 0x4c, 0x10, 0x16, 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08,
- 0x74, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x06, 0x54, 0x53, 0x49, 0x47,
- 0x4d, 0x41, 0x10, 0x17, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x74, 0x73, 0x69, 0x67,
- 0x6d, 0x61, 0x12, 0x1c, 0x0a, 0x08, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x18,
- 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x12, 0x12, 0x0a, 0x03, 0x56, 0x43, 0x53, 0x10, 0x19, 0x1a, 0x09, 0xca, 0x93, 0x22, 0x05, 0x0a,
- 0x03, 0x76, 0x63, 0x73, 0x2a, 0x8b, 0x04, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6b, 0x69, 0x6e, 0x64,
- 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x4b,
- 0x49, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x08, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52,
- 0x59, 0x10, 0x01, 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67,
- 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x05, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x02, 0x1a, 0x0b,
- 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0b, 0x43,
- 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x03, 0x1a, 0x11, 0xca, 0x93,
- 0x22, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x12,
- 0x20, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x04, 0x1a,
- 0x10, 0xca, 0x93, 0x22, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f,
- 0x72, 0x12, 0x14, 0x0a, 0x04, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x05, 0x1a, 0x0a, 0xca, 0x93, 0x22,
- 0x06, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
- 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x06, 0x1a, 0x0f, 0xca, 0x93, 0x22, 0x0b, 0x0a, 0x09, 0x65,
- 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x05, 0x46, 0x49, 0x45, 0x4c,
- 0x44, 0x10, 0x07, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64,
- 0x12, 0x1c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x08, 0x1a, 0x0e,
- 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x18,
- 0x0a, 0x06, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x09, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08,
- 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x0b, 0x49, 0x4e, 0x49, 0x54,
- 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x52, 0x10, 0x0a, 0x1a, 0x11, 0xca, 0x93, 0x22, 0x0d, 0x0a,
- 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x05,
- 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x0b, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x6c,
- 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x41,
- 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x0c, 0x1a, 0x15, 0xca, 0x93, 0x22, 0x11, 0x0a,
- 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
- 0x12, 0x18, 0x0a, 0x06, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x0d, 0x1a, 0x0c, 0xca, 0x93,
- 0x22, 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x09, 0x4e, 0x41,
- 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x0e, 0x1a, 0x0f, 0xca, 0x93, 0x22, 0x0b, 0x0a,
- 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x53, 0x54,
- 0x52, 0x55, 0x43, 0x54, 0x10, 0x0f, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x73, 0x74,
- 0x72, 0x75, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x54, 0x59, 0x50, 0x45, 0x10, 0x10, 0x1a, 0x0a,
- 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x55, 0x4e,
- 0x49, 0x4f, 0x4e, 0x10, 0x11, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69,
- 0x6f, 0x6e, 0x2a, 0xae, 0x06, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x5f,
- 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x04, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x01,
- 0x1a, 0x11, 0xca, 0x93, 0x22, 0x0d, 0x0a, 0x0b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x63,
- 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10,
- 0x02, 0x1a, 0x15, 0xca, 0x93, 0x22, 0x11, 0x0a, 0x0f, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
- 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0b, 0x43, 0x4f, 0x4e, 0x54,
- 0x45, 0x58, 0x54, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x03, 0x1a, 0x18, 0xca, 0x93, 0x22, 0x14, 0x0a,
- 0x12, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2f,
- 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x07, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x10, 0x04,
- 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x64,
- 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x07, 0x44, 0x4f, 0x43, 0x5f, 0x55, 0x52,
- 0x49, 0x10, 0x05, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x64, 0x6f, 0x63, 0x2f, 0x75, 0x72, 0x69, 0x12, 0x1d, 0x0a, 0x05, 0x4c, 0x41, 0x42,
- 0x45, 0x4c, 0x10, 0x06, 0x1a, 0x12, 0xca, 0x93, 0x22, 0x0e, 0x0a, 0x0c, 0x2f, 0x6b, 0x79, 0x74,
- 0x68, 0x65, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x07, 0x4c, 0x4f, 0x43, 0x5f,
- 0x45, 0x4e, 0x44, 0x10, 0x07, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2f, 0x6c, 0x6f, 0x63, 0x2f, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x09, 0x4c,
- 0x4f, 0x43, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x08, 0x1a, 0x16, 0xca, 0x93, 0x22, 0x12,
- 0x0a, 0x10, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x6c, 0x6f, 0x63, 0x2f, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x09, 0x1a,
- 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x09, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4b, 0x49,
- 0x4e, 0x44, 0x10, 0x0a, 0x1a, 0x16, 0xca, 0x93, 0x22, 0x12, 0x0a, 0x10, 0x2f, 0x6b, 0x79, 0x74,
- 0x68, 0x65, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x0d,
- 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x0b, 0x1a,
- 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x70, 0x61,
- 0x72, 0x61, 0x6d, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x52,
- 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x0c, 0x1a, 0x16, 0xca, 0x93, 0x22,
- 0x12, 0x0a, 0x10, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x0b, 0x53, 0x4e, 0x49, 0x50, 0x50, 0x45, 0x54, 0x5f, 0x45,
- 0x4e, 0x44, 0x10, 0x0d, 0x1a, 0x18, 0xca, 0x93, 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b, 0x79, 0x74,
- 0x68, 0x65, 0x2f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x2f, 0x65, 0x6e, 0x64, 0x12, 0x2d,
- 0x0a, 0x0d, 0x53, 0x4e, 0x49, 0x50, 0x50, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10,
- 0x0e, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
- 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a,
- 0x07, 0x53, 0x55, 0x42, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x0f, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10,
- 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x6b, 0x69, 0x6e, 0x64,
- 0x12, 0x1b, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x10, 0x1a, 0x11, 0xca, 0x93, 0x22, 0x0d,
- 0x0a, 0x0b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2d, 0x0a,
- 0x0d, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x11,
- 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x74,
- 0x65, 0x78, 0x74, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x0a,
- 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x12, 0x1a, 0x17, 0xca, 0x93,
- 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x0c, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x43,
- 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x13, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x0e, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43,
- 0x41, 0x54, 0x45, 0x44, 0x10, 0x14, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b,
- 0x79, 0x74, 0x68, 0x65, 0x2f, 0x74, 0x61, 0x67, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
- 0x74, 0x65, 0x64, 0x2a, 0xf4, 0x11, 0x0a, 0x08, 0x45, 0x64, 0x67, 0x65, 0x4b, 0x69, 0x6e, 0x64,
- 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x44, 0x47, 0x45,
- 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x07, 0x41, 0x4c, 0x49, 0x41, 0x53,
- 0x45, 0x53, 0x10, 0x01, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74,
- 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12,
- 0x30, 0x0a, 0x0c, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x45, 0x53, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10,
- 0x02, 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
- 0x65, 0x64, 0x67, 0x65, 0x2f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x72, 0x6f, 0x6f,
- 0x74, 0x12, 0x2f, 0x0a, 0x0c, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x42,
- 0x59, 0x10, 0x03, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64,
- 0x62, 0x79, 0x12, 0x32, 0x0a, 0x0d, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x4c, 0x4f,
- 0x57, 0x45, 0x52, 0x10, 0x04, 0x1a, 0x1f, 0xca, 0x93, 0x22, 0x1b, 0x0a, 0x19, 0x2f, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64,
- 0x2f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x0d, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x45,
- 0x44, 0x5f, 0x55, 0x50, 0x50, 0x45, 0x52, 0x10, 0x05, 0x1a, 0x1f, 0xca, 0x93, 0x22, 0x1b, 0x0a,
- 0x19, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x62, 0x6f, 0x75,
- 0x6e, 0x64, 0x65, 0x64, 0x2f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x08, 0x43, 0x48,
- 0x49, 0x4c, 0x44, 0x5f, 0x4f, 0x46, 0x10, 0x06, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13,
- 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c,
- 0x64, 0x6f, 0x66, 0x12, 0x37, 0x0a, 0x10, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x4f, 0x46, 0x5f,
- 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x07, 0x1a, 0x21, 0xca, 0x93, 0x22, 0x1d, 0x0a,
- 0x1b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x63, 0x68, 0x69,
- 0x6c, 0x64, 0x6f, 0x66, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x09,
- 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x53, 0x10, 0x08, 0x1a, 0x1b, 0xca, 0x93, 0x22,
- 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x63,
- 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x12, 0x43, 0x4f, 0x4d, 0x50,
- 0x4c, 0x45, 0x54, 0x45, 0x53, 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x4c, 0x59, 0x10, 0x09,
- 0x1a, 0x24, 0xca, 0x93, 0x22, 0x20, 0x0a, 0x1e, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
- 0x64, 0x67, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x2f, 0x75, 0x6e,
- 0x69, 0x71, 0x75, 0x65, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45,
- 0x53, 0x10, 0x0a, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x36,
- 0x0a, 0x0f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e,
- 0x47, 0x10, 0x0b, 0x1a, 0x21, 0xca, 0x93, 0x22, 0x1d, 0x0a, 0x1b, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x62,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x07, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44,
- 0x53, 0x10, 0x0c, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2a,
- 0x0a, 0x09, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0d, 0x1a, 0x1b, 0xca,
- 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x45, 0x58,
- 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x0e, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72,
- 0x74, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x53, 0x10, 0x0f, 0x1a,
- 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64,
- 0x67, 0x65, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x09, 0x47, 0x45,
- 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x53, 0x10, 0x10, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a,
- 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x67, 0x65, 0x6e,
- 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x49, 0x4d, 0x50, 0x55, 0x54, 0x45,
- 0x53, 0x10, 0x11, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x69, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x73, 0x12, 0x30,
- 0x0a, 0x0c, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x49, 0x41, 0x54, 0x45, 0x53, 0x10, 0x12,
- 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
- 0x64, 0x67, 0x65, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73,
- 0x12, 0x48, 0x0a, 0x18, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x49, 0x41, 0x54, 0x45, 0x53,
- 0x5f, 0x53, 0x50, 0x45, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x13, 0x1a, 0x2a,
- 0xca, 0x93, 0x22, 0x26, 0x0a, 0x24, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67,
- 0x65, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x73,
- 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x4e, 0x41,
- 0x4d, 0x45, 0x44, 0x10, 0x14, 0x1a, 0x17, 0xca, 0x93, 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x12, 0x2a,
- 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53, 0x10, 0x15, 0x1a, 0x1b, 0xca,
- 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x0e, 0x4f, 0x56,
- 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x16, 0x1a, 0x20,
- 0xca, 0x93, 0x22, 0x1c, 0x0a, 0x1a, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67,
- 0x65, 0x2f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2f, 0x72, 0x6f, 0x6f, 0x74,
- 0x12, 0x40, 0x0a, 0x14, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53, 0x5f, 0x54, 0x52,
- 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x17, 0x1a, 0x26, 0xca, 0x93, 0x22, 0x22,
- 0x0a, 0x20, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x6f, 0x76,
- 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69,
- 0x76, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0x18, 0x1a, 0x17, 0xca,
- 0x93, 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52,
- 0x54, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x53, 0x10, 0x2c, 0x1a, 0x20, 0xca, 0x93, 0x22, 0x1c,
- 0x0a, 0x1a, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x0f,
- 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x53, 0x10,
- 0x2d, 0x1a, 0x21, 0xca, 0x93, 0x22, 0x1d, 0x0a, 0x1b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
- 0x65, 0x64, 0x67, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2f, 0x77, 0x72,
- 0x69, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x03, 0x52, 0x45, 0x46, 0x10, 0x19, 0x1a, 0x15, 0xca,
- 0x93, 0x22, 0x11, 0x0a, 0x0f, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x72, 0x65, 0x66, 0x12, 0x28, 0x0a, 0x08, 0x52, 0x45, 0x46, 0x5f, 0x43, 0x41, 0x4c, 0x4c,
- 0x10, 0x1a, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x3a,
- 0x0a, 0x11, 0x52, 0x45, 0x46, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49,
- 0x43, 0x49, 0x54, 0x10, 0x1b, 0x1a, 0x23, 0xca, 0x93, 0x22, 0x1f, 0x0a, 0x1d, 0x2f, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x63, 0x61, 0x6c,
- 0x6c, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x07, 0x52, 0x45,
- 0x46, 0x5f, 0x44, 0x4f, 0x43, 0x10, 0x1c, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x64,
- 0x6f, 0x63, 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x45, 0x46, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44,
- 0x53, 0x10, 0x1d, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x65, 0x78, 0x70, 0x61, 0x6e,
- 0x64, 0x73, 0x12, 0x44, 0x0a, 0x16, 0x52, 0x45, 0x46, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44,
- 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x1e, 0x1a, 0x28,
- 0xca, 0x93, 0x22, 0x24, 0x0a, 0x22, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67,
- 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x74, 0x72,
- 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x52, 0x45, 0x46, 0x5f,
- 0x46, 0x49, 0x4c, 0x45, 0x10, 0x1f, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b,
- 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x66, 0x69,
- 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x52, 0x45, 0x46, 0x5f, 0x49, 0x44, 0x10, 0x2e, 0x1a, 0x18,
- 0xca, 0x93, 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67,
- 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x5f,
- 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x20, 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a,
- 0x0a, 0x18, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65,
- 0x66, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x45,
- 0x46, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x21, 0x1a, 0x1d, 0xca, 0x93, 0x22,
- 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72,
- 0x65, 0x66, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x0c, 0x52, 0x45,
- 0x46, 0x5f, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x53, 0x10, 0x22, 0x1a, 0x1e, 0xca, 0x93,
- 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f,
- 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x08,
- 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x23, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16,
- 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65,
- 0x66, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x11, 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4e,
- 0x49, 0x54, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x24, 0x1a, 0x23, 0xca,
- 0x93, 0x22, 0x1f, 0x0a, 0x1d, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63,
- 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x45, 0x46, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45,
- 0x53, 0x10, 0x25, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68,
- 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x69,
- 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0a, 0x52, 0x45, 0x46, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x53,
- 0x10, 0x2f, 0x1a, 0x1c, 0xca, 0x93, 0x22, 0x18, 0x0a, 0x16, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73,
- 0x12, 0x2a, 0x0a, 0x09, 0x53, 0x41, 0x54, 0x49, 0x53, 0x46, 0x49, 0x45, 0x53, 0x10, 0x26, 0x1a,
+ 0x12, 0x1d, 0x0a, 0x05, 0x47, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x1b, 0x1a, 0x12, 0xca, 0x93, 0x22,
+ 0x0e, 0x0a, 0x0c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x67, 0x66, 0x6c, 0x61, 0x67, 0x12,
+ 0x1e, 0x0a, 0x09, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x08, 0x1a, 0x0f,
+ 0xca, 0x93, 0x22, 0x0b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12,
+ 0x1c, 0x0a, 0x08, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x1a, 0x0e, 0xca,
+ 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
+ 0x06, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x10, 0x0a, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a,
+ 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x05, 0x4d, 0x41, 0x43, 0x52, 0x4f,
+ 0x10, 0x0b, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x12,
+ 0x14, 0x0a, 0x04, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x0c, 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a,
+ 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x04, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x0d, 0x1a,
+ 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x07, 0x50,
+ 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10, 0x0e, 0x1a, 0x0d, 0xca, 0x93, 0x22, 0x09, 0x0a, 0x07,
+ 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x43, 0x45,
+ 0x53, 0x53, 0x10, 0x0f, 0x1a, 0x0d, 0xca, 0x93, 0x22, 0x09, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x63,
+ 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x06, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x10, 0x1a,
+ 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a,
+ 0x03, 0x53, 0x55, 0x4d, 0x10, 0x11, 0x1a, 0x09, 0xca, 0x93, 0x22, 0x05, 0x0a, 0x03, 0x73, 0x75,
+ 0x6d, 0x12, 0x18, 0x0a, 0x06, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x10, 0x12, 0x1a, 0x0c, 0xca,
+ 0x93, 0x22, 0x08, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x06, 0x54,
+ 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x13, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x74,
+ 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x54, 0x41, 0x50, 0x50, 0x10, 0x14, 0x1a,
+ 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x74, 0x61, 0x70, 0x70, 0x12, 0x14, 0x0a, 0x04, 0x54,
+ 0x56, 0x41, 0x52, 0x10, 0x1a, 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x74, 0x76, 0x61,
+ 0x72, 0x12, 0x1c, 0x0a, 0x08, 0x54, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x49, 0x4e, 0x10, 0x15, 0x1a,
+ 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x74, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x12,
+ 0x1c, 0x0a, 0x08, 0x54, 0x4e, 0x4f, 0x4d, 0x49, 0x4e, 0x41, 0x4c, 0x10, 0x16, 0x1a, 0x0e, 0xca,
+ 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x74, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x18, 0x0a,
+ 0x06, 0x54, 0x53, 0x49, 0x47, 0x4d, 0x41, 0x10, 0x17, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a,
+ 0x06, 0x74, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x1c, 0x0a, 0x08, 0x56, 0x41, 0x52, 0x49, 0x41,
+ 0x42, 0x4c, 0x45, 0x10, 0x18, 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x76, 0x61, 0x72,
+ 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x56, 0x43, 0x53, 0x10, 0x19, 0x1a, 0x09,
+ 0xca, 0x93, 0x22, 0x05, 0x0a, 0x03, 0x76, 0x63, 0x73, 0x2a, 0x8b, 0x04, 0x0a, 0x07, 0x53, 0x75,
+ 0x62, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
+ 0x5f, 0x53, 0x55, 0x42, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x08, 0x43, 0x41,
+ 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0x01, 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08,
+ 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x05, 0x43, 0x4c, 0x41, 0x53,
+ 0x53, 0x10, 0x02, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x12, 0x22, 0x0a, 0x0b, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x4f, 0x52, 0x10,
+ 0x03, 0x1a, 0x11, 0xca, 0x93, 0x22, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54,
+ 0x4f, 0x52, 0x10, 0x04, 0x1a, 0x10, 0xca, 0x93, 0x22, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x74,
+ 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x04, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x05,
+ 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0a,
+ 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x06, 0x1a, 0x0f, 0xca, 0x93,
+ 0x22, 0x0b, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x16, 0x0a,
+ 0x05, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x07, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07, 0x0a, 0x05,
+ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49,
+ 0x54, 0x10, 0x08, 0x1a, 0x0e, 0xca, 0x93, 0x22, 0x0a, 0x0a, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69,
+ 0x63, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x09, 0x1a,
+ 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x0a,
+ 0x0b, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x52, 0x10, 0x0a, 0x1a, 0x11,
+ 0xca, 0x93, 0x22, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
+ 0x72, 0x12, 0x16, 0x0a, 0x05, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x0b, 0x1a, 0x0b, 0xca, 0x93,
+ 0x22, 0x07, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x4c, 0x4f, 0x43,
+ 0x41, 0x4c, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x0c, 0x1a, 0x15,
+ 0xca, 0x93, 0x22, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2f, 0x70, 0x61, 0x72, 0x61,
+ 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10,
+ 0x0d, 0x1a, 0x0c, 0xca, 0x93, 0x22, 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12,
+ 0x1e, 0x0a, 0x09, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x0e, 0x1a, 0x0f,
+ 0xca, 0x93, 0x22, 0x0b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x18, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x0f, 0x1a, 0x0c, 0xca, 0x93, 0x22,
+ 0x08, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x54, 0x59, 0x50,
+ 0x45, 0x10, 0x10, 0x1a, 0x0a, 0xca, 0x93, 0x22, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+ 0x16, 0x0a, 0x05, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0x11, 0x1a, 0x0b, 0xca, 0x93, 0x22, 0x07,
+ 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x2a, 0xae, 0x06, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x74,
+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f,
+ 0x46, 0x41, 0x43, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x04, 0x43,
+ 0x4f, 0x44, 0x45, 0x10, 0x01, 0x1a, 0x11, 0xca, 0x93, 0x22, 0x0d, 0x0a, 0x0b, 0x2f, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50,
+ 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x1a, 0x15, 0xca, 0x93, 0x22, 0x11, 0x0a, 0x0f, 0x2f, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x29, 0x0a,
+ 0x0b, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x03, 0x1a, 0x18,
+ 0xca, 0x93, 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x2f, 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x07, 0x44, 0x45, 0x54, 0x41,
+ 0x49, 0x4c, 0x53, 0x10, 0x04, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x07, 0x44,
+ 0x4f, 0x43, 0x5f, 0x55, 0x52, 0x49, 0x10, 0x05, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e,
+ 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x64, 0x6f, 0x63, 0x2f, 0x75, 0x72, 0x69, 0x12, 0x1d,
+ 0x0a, 0x05, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x06, 0x1a, 0x12, 0xca, 0x93, 0x22, 0x0e, 0x0a,
+ 0x0c, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x21, 0x0a,
+ 0x07, 0x4c, 0x4f, 0x43, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x07, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10,
+ 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x6c, 0x6f, 0x63, 0x2f, 0x65, 0x6e, 0x64,
+ 0x12, 0x25, 0x0a, 0x09, 0x4c, 0x4f, 0x43, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x08, 0x1a,
+ 0x16, 0xca, 0x93, 0x22, 0x12, 0x0a, 0x10, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x6c, 0x6f,
+ 0x63, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41,
+ 0x47, 0x45, 0x10, 0x09, 0x1a, 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x09, 0x4e, 0x4f,
+ 0x44, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x0a, 0x1a, 0x16, 0xca, 0x93, 0x22, 0x12, 0x0a,
+ 0x10, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x6b, 0x69, 0x6e,
+ 0x64, 0x12, 0x2d, 0x0a, 0x0d, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55,
+ 0x4c, 0x54, 0x10, 0x0b, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x12, 0x26, 0x0a, 0x0a, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x0c,
+ 0x1a, 0x16, 0xca, 0x93, 0x22, 0x12, 0x0a, 0x10, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x72,
+ 0x75, 0x6c, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x0b, 0x53, 0x4e, 0x49, 0x50,
+ 0x50, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x0d, 0x1a, 0x18, 0xca, 0x93, 0x22, 0x14, 0x0a,
+ 0x12, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x2f,
+ 0x65, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x0d, 0x53, 0x4e, 0x49, 0x50, 0x50, 0x45, 0x54, 0x5f, 0x53,
+ 0x54, 0x41, 0x52, 0x54, 0x10, 0x0e, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x2f, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x53, 0x55, 0x42, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x0f, 0x1a,
+ 0x14, 0xca, 0x93, 0x22, 0x10, 0x0a, 0x0e, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x73, 0x75,
+ 0x62, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x10, 0x1a,
+ 0x11, 0xca, 0x93, 0x22, 0x0d, 0x0a, 0x0b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x74, 0x65,
+ 0x78, 0x74, 0x12, 0x2d, 0x0a, 0x0d, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44,
+ 0x49, 0x4e, 0x47, 0x10, 0x11, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
+ 0x67, 0x12, 0x27, 0x0a, 0x0a, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10,
+ 0x12, 0x1a, 0x17, 0xca, 0x93, 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
+ 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x0c, 0x42, 0x55,
+ 0x49, 0x4c, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x13, 0x1a, 0x19, 0xca, 0x93,
+ 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
+ 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x0e, 0x54, 0x41, 0x47, 0x5f, 0x44,
+ 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x14, 0x1a, 0x1b, 0xca, 0x93, 0x22,
+ 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x74, 0x61, 0x67, 0x2f, 0x64, 0x65,
+ 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2a, 0xcb, 0x12, 0x0a, 0x08, 0x45, 0x64, 0x67,
+ 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
+ 0x5f, 0x45, 0x44, 0x47, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x07,
+ 0x41, 0x4c, 0x49, 0x41, 0x53, 0x45, 0x53, 0x10, 0x01, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a,
+ 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x61, 0x6c, 0x69,
+ 0x61, 0x73, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0c, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x45, 0x53, 0x5f,
+ 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x02, 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65,
+ 0x73, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x0c, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41,
+ 0x54, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x10, 0x03, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17,
+ 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x65, 0x64, 0x62, 0x79, 0x12, 0x32, 0x0a, 0x0d, 0x42, 0x4f, 0x55, 0x4e, 0x44,
+ 0x45, 0x44, 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x04, 0x1a, 0x1f, 0xca, 0x93, 0x22, 0x1b,
+ 0x0a, 0x19, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x62, 0x6f,
+ 0x75, 0x6e, 0x64, 0x65, 0x64, 0x2f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x0d, 0x42,
+ 0x4f, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x50, 0x45, 0x52, 0x10, 0x05, 0x1a, 0x1f,
+ 0xca, 0x93, 0x22, 0x1b, 0x0a, 0x19, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67,
+ 0x65, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x2f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x12,
+ 0x27, 0x0a, 0x08, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x4f, 0x46, 0x10, 0x06, 0x1a, 0x19, 0xca,
+ 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
+ 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x6f, 0x66, 0x12, 0x37, 0x0a, 0x10, 0x43, 0x48, 0x49, 0x4c,
+ 0x44, 0x5f, 0x4f, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x07, 0x1a, 0x21,
+ 0xca, 0x93, 0x22, 0x1d, 0x0a, 0x1b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67,
+ 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x6f, 0x66, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78,
+ 0x74, 0x12, 0x2f, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x5f, 0x42,
+ 0x59, 0x10, 0x31, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64,
+ 0x62, 0x79, 0x12, 0x2a, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x53, 0x10,
+ 0x08, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
+ 0x65, 0x64, 0x67, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x12, 0x3c,
+ 0x0a, 0x12, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x53, 0x5f, 0x55, 0x4e, 0x49, 0x51,
+ 0x55, 0x45, 0x4c, 0x59, 0x10, 0x09, 0x1a, 0x24, 0xca, 0x93, 0x22, 0x20, 0x0a, 0x1e, 0x2f, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+ 0x74, 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x07,
+ 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x53, 0x10, 0x0a, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a,
+ 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x53, 0x5f,
+ 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x1a, 0x21, 0xca, 0x93, 0x22, 0x1d, 0x0a,
+ 0x1b, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x07,
+ 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x53, 0x10, 0x0c, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a,
+ 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x65, 0x70,
+ 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x09, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54,
+ 0x53, 0x10, 0x0d, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+ 0x12, 0x26, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x0e, 0x1a, 0x19, 0xca,
+ 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
+ 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x45, 0x58, 0x54, 0x45,
+ 0x4e, 0x44, 0x53, 0x10, 0x0f, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73,
+ 0x12, 0x2a, 0x0a, 0x09, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x53, 0x10, 0x10, 0x1a,
0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64,
- 0x67, 0x65, 0x2f, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0b,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x53, 0x10, 0x27, 0x1a, 0x1d, 0xca,
- 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x17,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x53, 0x5f, 0x53, 0x50, 0x45, 0x43,
- 0x55, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x28, 0x1a, 0x29, 0xca, 0x93, 0x22, 0x25, 0x0a,
- 0x23, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x73, 0x70, 0x65,
- 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x73, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61,
- 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x29,
- 0x1a, 0x18, 0xca, 0x93, 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
- 0x64, 0x67, 0x65, 0x2f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x54, 0x59,
- 0x50, 0x45, 0x44, 0x10, 0x2a, 0x1a, 0x17, 0xca, 0x93, 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x12, 0x2a,
- 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x53, 0x10, 0x2b, 0x1a, 0x1b, 0xca,
- 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
- 0x2f, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x3a, 0x5d, 0x0a, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb9, 0xa2, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,
- 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x32, 0x0a, 0x1f, 0x63, 0x6f, 0x6d,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
- 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x0f, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x67, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x07,
+ 0x49, 0x4d, 0x50, 0x55, 0x54, 0x45, 0x53, 0x10, 0x11, 0x1a, 0x19, 0xca, 0x93, 0x22, 0x15, 0x0a,
+ 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x69, 0x6d, 0x70,
+ 0x75, 0x74, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0c, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x49,
+ 0x41, 0x54, 0x45, 0x53, 0x10, 0x12, 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x18, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e,
+ 0x54, 0x49, 0x41, 0x54, 0x45, 0x53, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x49,
+ 0x56, 0x45, 0x10, 0x13, 0x1a, 0x2a, 0xca, 0x93, 0x22, 0x26, 0x0a, 0x24, 0x2f, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69,
+ 0x61, 0x74, 0x65, 0x73, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65,
+ 0x12, 0x22, 0x0a, 0x05, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x14, 0x1a, 0x17, 0xca, 0x93, 0x22,
+ 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45,
+ 0x53, 0x10, 0x15, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73,
+ 0x12, 0x34, 0x0a, 0x0e, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53, 0x5f, 0x52, 0x4f,
+ 0x4f, 0x54, 0x10, 0x16, 0x1a, 0x20, 0xca, 0x93, 0x22, 0x1c, 0x0a, 0x1a, 0x2f, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+ 0x73, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x14, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49,
+ 0x44, 0x45, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x17,
+ 0x1a, 0x26, 0xca, 0x93, 0x22, 0x22, 0x0a, 0x20, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
+ 0x64, 0x67, 0x65, 0x2f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2f, 0x74, 0x72,
+ 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x50, 0x41, 0x52, 0x41,
+ 0x4d, 0x10, 0x18, 0x1a, 0x17, 0xca, 0x93, 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x34, 0x0a, 0x0e,
+ 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x53, 0x10, 0x2c,
+ 0x1a, 0x20, 0xca, 0x93, 0x22, 0x1c, 0x0a, 0x1a, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
+ 0x64, 0x67, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2f, 0x72, 0x65, 0x61,
+ 0x64, 0x73, 0x12, 0x36, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x57,
+ 0x52, 0x49, 0x54, 0x45, 0x53, 0x10, 0x2d, 0x1a, 0x21, 0xca, 0x93, 0x22, 0x1d, 0x0a, 0x1b, 0x2f,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x70, 0x65,
+ 0x72, 0x74, 0x79, 0x2f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x03, 0x52, 0x45,
+ 0x46, 0x10, 0x19, 0x1a, 0x15, 0xca, 0x93, 0x22, 0x11, 0x0a, 0x0f, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x12, 0x28, 0x0a, 0x08, 0x52, 0x45,
+ 0x46, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x1a, 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14,
+ 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f,
+ 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x3a, 0x0a, 0x11, 0x52, 0x45, 0x46, 0x5f, 0x43, 0x41, 0x4c, 0x4c,
+ 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x1b, 0x1a, 0x23, 0xca, 0x93, 0x22,
+ 0x1f, 0x0a, 0x1d, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72,
+ 0x65, 0x66, 0x2f, 0x63, 0x61, 0x6c, 0x6c, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74,
+ 0x12, 0x26, 0x0a, 0x07, 0x52, 0x45, 0x46, 0x5f, 0x44, 0x4f, 0x43, 0x10, 0x1c, 0x1a, 0x19, 0xca,
+ 0x93, 0x22, 0x15, 0x0a, 0x13, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65,
+ 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x64, 0x6f, 0x63, 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x45, 0x46, 0x5f,
+ 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x53, 0x10, 0x1d, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a,
+ 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66,
+ 0x2f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x16, 0x52, 0x45, 0x46, 0x5f,
+ 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49,
+ 0x56, 0x45, 0x10, 0x1e, 0x1a, 0x28, 0xca, 0x93, 0x22, 0x24, 0x0a, 0x22, 0x2f, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x65, 0x78, 0x70, 0x61,
+ 0x6e, 0x64, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x28,
+ 0x0a, 0x08, 0x52, 0x45, 0x46, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x1f, 0x1a, 0x1a, 0xca, 0x93,
+ 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f,
+ 0x72, 0x65, 0x66, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x52, 0x45, 0x46, 0x5f,
+ 0x49, 0x44, 0x10, 0x2e, 0x1a, 0x18, 0xca, 0x93, 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x64, 0x12, 0x30,
+ 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x20,
+ 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
+ 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74,
+ 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10,
+ 0x21, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
+ 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x12, 0x30, 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x53,
+ 0x10, 0x22, 0x1a, 0x1e, 0xca, 0x93, 0x22, 0x1a, 0x0a, 0x18, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65,
+ 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x73, 0x12, 0x28, 0x0a, 0x08, 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x23,
+ 0x1a, 0x1a, 0xca, 0x93, 0x22, 0x16, 0x0a, 0x14, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65,
+ 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x11,
+ 0x52, 0x45, 0x46, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49,
+ 0x54, 0x10, 0x24, 0x1a, 0x23, 0xca, 0x93, 0x22, 0x1f, 0x0a, 0x1d, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x2f,
+ 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x0b, 0x52, 0x45, 0x46, 0x5f,
+ 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x25, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a,
+ 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66,
+ 0x2f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0a, 0x52, 0x45, 0x46, 0x5f,
+ 0x57, 0x52, 0x49, 0x54, 0x45, 0x53, 0x10, 0x2f, 0x1a, 0x1c, 0xca, 0x93, 0x22, 0x18, 0x0a, 0x16,
+ 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x72, 0x65, 0x66, 0x2f,
+ 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x09, 0x53, 0x41, 0x54, 0x49, 0x53, 0x46,
+ 0x49, 0x45, 0x53, 0x10, 0x26, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a, 0x15, 0x2f, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69,
+ 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0b, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45,
+ 0x53, 0x10, 0x27, 0x1a, 0x1d, 0xca, 0x93, 0x22, 0x19, 0x0a, 0x17, 0x2f, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a,
+ 0x65, 0x73, 0x12, 0x46, 0x0a, 0x17, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45,
+ 0x53, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x28, 0x1a,
+ 0x29, 0xca, 0x93, 0x22, 0x25, 0x0a, 0x23, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64,
+ 0x67, 0x65, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x73, 0x2f, 0x73,
+ 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x54, 0x41,
+ 0x47, 0x47, 0x45, 0x44, 0x10, 0x29, 0x1a, 0x18, 0xca, 0x93, 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64,
+ 0x12, 0x24, 0x0a, 0x06, 0x54, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0x30, 0x1a, 0x18, 0xca, 0x93,
+ 0x22, 0x14, 0x0a, 0x12, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f,
+ 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x22, 0x0a, 0x05, 0x54, 0x59, 0x50, 0x45, 0x44, 0x10,
+ 0x2a, 0x1a, 0x17, 0xca, 0x93, 0x22, 0x13, 0x0a, 0x11, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f,
+ 0x65, 0x64, 0x67, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x09, 0x55, 0x4e,
+ 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x53, 0x10, 0x2b, 0x1a, 0x1b, 0xca, 0x93, 0x22, 0x17, 0x0a,
+ 0x15, 0x2f, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x75, 0x6e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x3a, 0x5d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb9, 0xa2, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x32, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
}
var (
diff --git a/kythe/proto/serving.proto b/kythe/proto/serving.proto
index fd50f42b0..97121d1c0 100644
--- a/kythe/proto/serving.proto
+++ b/kythe/proto/serving.proto
@@ -182,6 +182,14 @@ message FileInfo {
kythe.proto.common.CorpusPath corpus_path = 1;
string revision = 2;
+
+ // Hash of the file contents; the algorithm of the hash may differ between
+ // corpora based on the repository from which they were extracted.
+ kythe.proto.common.Hash hash = 3;
+
+ // Signifies whether there are restrictions for viewing this file in some
+ // context.
+ bool view_restricted = 4;
}
// FileDecorations stores a file's contents and all contained anchor edges.
diff --git a/kythe/proto/serving_go_proto/serving.pb.go b/kythe/proto/serving_go_proto/serving.pb.go
index 944c62e18..63268587c 100644
--- a/kythe/proto/serving_go_proto/serving.pb.go
+++ b/kythe/proto/serving_go_proto/serving.pb.go
@@ -1006,8 +1006,10 @@ type FileInfo struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- CorpusPath *common_go_proto.CorpusPath `protobuf:"bytes,1,opt,name=corpus_path,json=corpusPath,proto3" json:"corpus_path,omitempty"`
- Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
+ CorpusPath *common_go_proto.CorpusPath `protobuf:"bytes,1,opt,name=corpus_path,json=corpusPath,proto3" json:"corpus_path,omitempty"`
+ Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
+ Hash *common_go_proto.Hash `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
+ ViewRestricted bool `protobuf:"varint,4,opt,name=view_restricted,json=viewRestricted,proto3" json:"view_restricted,omitempty"`
}
func (x *FileInfo) Reset() {
@@ -1056,6 +1058,20 @@ func (x *FileInfo) GetRevision() string {
return ""
}
+func (x *FileInfo) GetHash() *common_go_proto.Hash {
+ if x != nil {
+ return x.Hash
+ }
+ return nil
+}
+
+func (x *FileInfo) GetViewRestricted() bool {
+ if x != nil {
+ return x.ViewRestricted
+ }
+ return false
+}
+
type FileDecorations struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2428,222 +2444,228 @@ var file_kythe_proto_serving_proto_rawDesc = []byte{
0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4a, 0x04,
- 0x08, 0x03, 0x10, 0x04, 0x22, 0x67, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75,
- 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74,
- 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x08,
- 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65,
- 0x12, 0x4f, 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44,
- 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x12, 0x52, 0x0a, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64,
- 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73,
- 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41,
- 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66,
- 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x6f,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
- 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
- 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18, 0x06,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f,
- 0x73, 0x74, 0x69, 0x63, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63,
- 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79,
- 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
- 0x64, 0x42, 0x79, 0x12, 0x3a, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
- 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c,
- 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a,
- 0xc4, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36,
- 0x0a, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x61, 0x77, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06,
- 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66,
- 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x73, 0x63, 0x6f, 0x70,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69,
- 0x63, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0xb2, 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72,
- 0x69, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6e,
- 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
- 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x64, 0x65,
- 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
- 0x64, 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x64, 0x65,
- 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x14, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x44, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c,
- 0x65, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x76, 0x65,
- 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
- 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72,
- 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65,
- 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12,
- 0x0d, 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53, 0x10, 0x00, 0x12, 0x0b,
- 0x0a, 0x07, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x53, 0x10, 0x01, 0x22, 0x81, 0x0b, 0x0a, 0x14,
- 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x77, 0x69,
- 0x74, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x57,
- 0x69, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43,
- 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x52, 0x0a, 0x0a, 0x70,
- 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x33, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49,
- 0x6e, 0x64, 0x65, 0x78, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
- 0x2d, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74,
- 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1e,
- 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x45,
- 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65,
- 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x56, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
- 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e,
- 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0xf6, 0x01,
- 0x0a, 0x06, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c,
- 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
+ 0x08, 0x03, 0x10, 0x04, 0x22, 0xbe, 0x01, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66,
+ 0x6f, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x72, 0x70,
+ 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61,
+ 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c,
+ 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x27, 0x0a, 0x0f,
+ 0x76, 0x69, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x74, 0x72,
+ 0x69, 0x63, 0x74, 0x65, 0x64, 0x22, 0x8b, 0x08, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65,
+ 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x66, 0x69, 0x6c,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69,
+ 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x6f,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+ 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64,
+ 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x52, 0x0a, 0x12,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45,
- 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x63,
- 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69,
- 0x63, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
- 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x45,
- 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65,
- 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74,
- 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x78,
- 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x08, 0x63, 0x61,
- 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x1a, 0xdb, 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c,
- 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f,
- 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x78,
- 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x6e,
- 0x63, 0x68, 0x6f, 0x72, 0x12, 0x58, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f,
- 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6b, 0x79, 0x74,
- 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67,
- 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64,
- 0x65, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x48,
- 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30,
+ 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x11, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x12, 0x56, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72,
+ 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e,
+ 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x69, 0x61, 0x67,
+ 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0a, 0x64, 0x69,
+ 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b,
+ 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x3a, 0x0a, 0x09, 0x66,
+ 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72,
- 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72,
- 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65,
- 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e,
- 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65,
- 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x8d, 0x01, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a,
- 0x08, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x70, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b,
- 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x73, 0x0a, 0x09, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65,
- 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70,
- 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
- 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75,
- 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x22,
- 0xa9, 0x02, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06,
- 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d,
- 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72,
- 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72,
- 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04,
- 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c,
- 0x64, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
- 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
+ 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66,
+ 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0xc4, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x61, 0x77,
+ 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x12,
+ 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e,
+ 0x74, 0x69, 0x63, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0xb2,
+ 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f,
+ 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x6f,
+ 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0a, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x6f,
+ 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x76, 0x65, 0x72,
+ 0x72, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x46, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32,
+ 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72,
+ 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x4b, 0x69,
+ 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b,
+ 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22,
+ 0x22, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x52,
+ 0x49, 0x44, 0x45, 0x53, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44,
+ 0x53, 0x10, 0x01, 0x22, 0x81, 0x0b, 0x0a, 0x14, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f,
+ 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x09, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74,
+ 0x12, 0x3a, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
- 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
- 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64,
- 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, 0xf4, 0x01, 0x0a, 0x0f,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12,
- 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69,
- 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x29, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
- 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f,
- 0x64, 0x65, 0x1a, 0x5e, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b,
- 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12,
- 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6b, 0x69, 0x6e, 0x64, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x75, 0x62, 0x6b, 0x69,
- 0x6e, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73,
- 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x52,
- 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
- 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x52, 0x45,
- 0x4e, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x52, 0x45,
- 0x4e, 0x10, 0x02, 0x22, 0x8b, 0x01, 0x0a, 0x09, 0x43, 0x61, 0x6c, 0x6c, 0x67, 0x72, 0x61, 0x70,
- 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x45, 0x0a, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e,
+ 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x52, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+ 0x67, 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x73, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x09, 0x70, 0x61,
+ 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6f,
+ 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64,
+ 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x56, 0x0a,
+ 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x04,
+ 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67,
+ 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f,
+ 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x72,
+ 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0xf6, 0x01, 0x0a, 0x06, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72,
+ 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41,
+ 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x27, 0x0a,
+ 0x0f, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63,
+ 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64,
+ 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x0a,
+ 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x6e,
+ 0x63, 0x68, 0x6f, 0x72, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x69, 0x74, 0x65, 0x1a, 0xdb,
+ 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+ 0x3b, 0x0a, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x6e,
+ 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x58, 0x0a, 0x0c,
+ 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x43, 0x72,
+ 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74,
+ 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72,
+ 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67,
+ 0x65, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x73, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72,
+ 0x12, 0x3a, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x8d, 0x01, 0x0a,
+ 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79,
+ 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65,
+ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54,
+ 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x64,
+ 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x73, 0x0a, 0x09,
+ 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a,
+ 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x21,
+ 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x22, 0xa9, 0x02, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75,
+ 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0d,
+ 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2c,
+ 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x0c,
+ 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12,
+ 0x2d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x23,
+ 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x65,
+ 0x64, 0x42, 0x79, 0x22, 0xf4, 0x01, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
+ 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x61, 0x6c, 0x69,
+ 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b,
+ 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e,
+ 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6b, 0x79, 0x74, 0x68,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e,
- 0x43, 0x61, 0x6c, 0x6c, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07,
- 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4c,
- 0x4c, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x45, 0x10,
- 0x02, 0x42, 0x33, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x6f,
- 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x1a, 0x5e, 0x0a, 0x04, 0x4e, 0x6f,
+ 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f,
+ 0x64, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e,
+ 0x6f, 0x64, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
+ 0x73, 0x75, 0x62, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e,
+ 0x6f, 0x64, 0x65, 0x53, 0x75, 0x62, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x09, 0x52,
+ 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b,
+ 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65,
+ 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73,
+ 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
+ 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a,
+ 0x08, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x52, 0x45, 0x4e, 0x10, 0x02, 0x22, 0x8b, 0x01, 0x0a, 0x09,
+ 0x43, 0x61, 0x6c, 0x6c, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x63,
+ 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b,
+ 0x65, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x67, 0x72, 0x61, 0x70,
+ 0x68, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x04,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+ 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a,
+ 0x06, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x45, 0x10, 0x02, 0x42, 0x33, 0x0a, 0x1f, 0x63, 0x6f, 0x6d,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
+ 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x10, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2697,9 +2719,10 @@ var file_kythe_proto_serving_proto_goTypes = []interface{}{
(*common_go_proto.Fact)(nil), // 33: kythe.proto.common.Fact
(*common_go_proto.Span)(nil), // 34: kythe.proto.common.Span
(*common_go_proto.CorpusPath)(nil), // 35: kythe.proto.common.CorpusPath
- (*common_go_proto.Diagnostic)(nil), // 36: kythe.proto.common.Diagnostic
- (*common_go_proto.MarkedSource)(nil), // 37: kythe.proto.common.MarkedSource
- (*common_go_proto.Link)(nil), // 38: kythe.proto.common.Link
+ (*common_go_proto.Hash)(nil), // 36: kythe.proto.common.Hash
+ (*common_go_proto.Diagnostic)(nil), // 37: kythe.proto.common.Diagnostic
+ (*common_go_proto.MarkedSource)(nil), // 38: kythe.proto.common.MarkedSource
+ (*common_go_proto.Link)(nil), // 39: kythe.proto.common.Link
}
var file_kythe_proto_serving_proto_depIdxs = []int32{
33, // 0: kythe.proto.serving.Node.fact:type_name -> kythe.proto.common.Fact
@@ -2719,42 +2742,43 @@ var file_kythe_proto_serving_proto_depIdxs = []int32{
34, // 14: kythe.proto.serving.ExpandedAnchor.snippet_span:type_name -> kythe.proto.common.Span
15, // 15: kythe.proto.serving.ExpandedAnchor.file_info:type_name -> kythe.proto.serving.FileInfo
35, // 16: kythe.proto.serving.FileInfo.corpus_path:type_name -> kythe.proto.common.CorpusPath
- 12, // 17: kythe.proto.serving.FileDecorations.file:type_name -> kythe.proto.serving.File
- 25, // 18: kythe.proto.serving.FileDecorations.decoration:type_name -> kythe.proto.serving.FileDecorations.Decoration
- 4, // 19: kythe.proto.serving.FileDecorations.target:type_name -> kythe.proto.serving.Node
- 14, // 20: kythe.proto.serving.FileDecorations.target_definitions:type_name -> kythe.proto.serving.ExpandedAnchor
- 26, // 21: kythe.proto.serving.FileDecorations.target_override:type_name -> kythe.proto.serving.FileDecorations.Override
- 36, // 22: kythe.proto.serving.FileDecorations.diagnostic:type_name -> kythe.proto.common.Diagnostic
- 15, // 23: kythe.proto.serving.FileDecorations.file_info:type_name -> kythe.proto.serving.FileInfo
- 4, // 24: kythe.proto.serving.PagedCrossReferences.source_node:type_name -> kythe.proto.serving.Node
- 29, // 25: kythe.proto.serving.PagedCrossReferences.group:type_name -> kythe.proto.serving.PagedCrossReferences.Group
- 31, // 26: kythe.proto.serving.PagedCrossReferences.page_index:type_name -> kythe.proto.serving.PagedCrossReferences.PageIndex
- 37, // 27: kythe.proto.serving.PagedCrossReferences.marked_source:type_name -> kythe.proto.common.MarkedSource
- 37, // 28: kythe.proto.serving.Document.marked_source:type_name -> kythe.proto.common.MarkedSource
- 38, // 29: kythe.proto.serving.Document.link:type_name -> kythe.proto.common.Link
- 4, // 30: kythe.proto.serving.Document.node:type_name -> kythe.proto.serving.Node
- 32, // 31: kythe.proto.serving.IdentifierMatch.node:type_name -> kythe.proto.serving.IdentifierMatch.Node
- 2, // 32: kythe.proto.serving.Relatives.type:type_name -> kythe.proto.serving.Relatives.Type
- 3, // 33: kythe.proto.serving.Callgraph.type:type_name -> kythe.proto.serving.Callgraph.Type
- 4, // 34: kythe.proto.serving.EdgeGroup.Edge.target:type_name -> kythe.proto.serving.Node
- 0, // 35: kythe.proto.serving.FileDirectory.Entry.kind:type_name -> kythe.proto.serving.FileDirectory.Kind
- 13, // 36: kythe.proto.serving.FileDecorations.Decoration.anchor:type_name -> kythe.proto.serving.RawAnchor
- 1, // 37: kythe.proto.serving.FileDecorations.Override.kind:type_name -> kythe.proto.serving.FileDecorations.Override.Kind
- 37, // 38: kythe.proto.serving.FileDecorations.Override.marked_source:type_name -> kythe.proto.common.MarkedSource
- 4, // 39: kythe.proto.serving.PagedCrossReferences.RelatedNode.node:type_name -> kythe.proto.serving.Node
- 14, // 40: kythe.proto.serving.PagedCrossReferences.Caller.caller:type_name -> kythe.proto.serving.ExpandedAnchor
- 37, // 41: kythe.proto.serving.PagedCrossReferences.Caller.marked_source:type_name -> kythe.proto.common.MarkedSource
- 14, // 42: kythe.proto.serving.PagedCrossReferences.Caller.callsite:type_name -> kythe.proto.serving.ExpandedAnchor
- 14, // 43: kythe.proto.serving.PagedCrossReferences.Group.anchor:type_name -> kythe.proto.serving.ExpandedAnchor
- 27, // 44: kythe.proto.serving.PagedCrossReferences.Group.related_node:type_name -> kythe.proto.serving.PagedCrossReferences.RelatedNode
- 28, // 45: kythe.proto.serving.PagedCrossReferences.Group.caller:type_name -> kythe.proto.serving.PagedCrossReferences.Caller
- 15, // 46: kythe.proto.serving.PagedCrossReferences.Group.file_info:type_name -> kythe.proto.serving.FileInfo
- 29, // 47: kythe.proto.serving.PagedCrossReferences.Page.group:type_name -> kythe.proto.serving.PagedCrossReferences.Group
- 48, // [48:48] is the sub-list for method output_type
- 48, // [48:48] is the sub-list for method input_type
- 48, // [48:48] is the sub-list for extension type_name
- 48, // [48:48] is the sub-list for extension extendee
- 0, // [0:48] is the sub-list for field type_name
+ 36, // 17: kythe.proto.serving.FileInfo.hash:type_name -> kythe.proto.common.Hash
+ 12, // 18: kythe.proto.serving.FileDecorations.file:type_name -> kythe.proto.serving.File
+ 25, // 19: kythe.proto.serving.FileDecorations.decoration:type_name -> kythe.proto.serving.FileDecorations.Decoration
+ 4, // 20: kythe.proto.serving.FileDecorations.target:type_name -> kythe.proto.serving.Node
+ 14, // 21: kythe.proto.serving.FileDecorations.target_definitions:type_name -> kythe.proto.serving.ExpandedAnchor
+ 26, // 22: kythe.proto.serving.FileDecorations.target_override:type_name -> kythe.proto.serving.FileDecorations.Override
+ 37, // 23: kythe.proto.serving.FileDecorations.diagnostic:type_name -> kythe.proto.common.Diagnostic
+ 15, // 24: kythe.proto.serving.FileDecorations.file_info:type_name -> kythe.proto.serving.FileInfo
+ 4, // 25: kythe.proto.serving.PagedCrossReferences.source_node:type_name -> kythe.proto.serving.Node
+ 29, // 26: kythe.proto.serving.PagedCrossReferences.group:type_name -> kythe.proto.serving.PagedCrossReferences.Group
+ 31, // 27: kythe.proto.serving.PagedCrossReferences.page_index:type_name -> kythe.proto.serving.PagedCrossReferences.PageIndex
+ 38, // 28: kythe.proto.serving.PagedCrossReferences.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 38, // 29: kythe.proto.serving.Document.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 39, // 30: kythe.proto.serving.Document.link:type_name -> kythe.proto.common.Link
+ 4, // 31: kythe.proto.serving.Document.node:type_name -> kythe.proto.serving.Node
+ 32, // 32: kythe.proto.serving.IdentifierMatch.node:type_name -> kythe.proto.serving.IdentifierMatch.Node
+ 2, // 33: kythe.proto.serving.Relatives.type:type_name -> kythe.proto.serving.Relatives.Type
+ 3, // 34: kythe.proto.serving.Callgraph.type:type_name -> kythe.proto.serving.Callgraph.Type
+ 4, // 35: kythe.proto.serving.EdgeGroup.Edge.target:type_name -> kythe.proto.serving.Node
+ 0, // 36: kythe.proto.serving.FileDirectory.Entry.kind:type_name -> kythe.proto.serving.FileDirectory.Kind
+ 13, // 37: kythe.proto.serving.FileDecorations.Decoration.anchor:type_name -> kythe.proto.serving.RawAnchor
+ 1, // 38: kythe.proto.serving.FileDecorations.Override.kind:type_name -> kythe.proto.serving.FileDecorations.Override.Kind
+ 38, // 39: kythe.proto.serving.FileDecorations.Override.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 4, // 40: kythe.proto.serving.PagedCrossReferences.RelatedNode.node:type_name -> kythe.proto.serving.Node
+ 14, // 41: kythe.proto.serving.PagedCrossReferences.Caller.caller:type_name -> kythe.proto.serving.ExpandedAnchor
+ 38, // 42: kythe.proto.serving.PagedCrossReferences.Caller.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 14, // 43: kythe.proto.serving.PagedCrossReferences.Caller.callsite:type_name -> kythe.proto.serving.ExpandedAnchor
+ 14, // 44: kythe.proto.serving.PagedCrossReferences.Group.anchor:type_name -> kythe.proto.serving.ExpandedAnchor
+ 27, // 45: kythe.proto.serving.PagedCrossReferences.Group.related_node:type_name -> kythe.proto.serving.PagedCrossReferences.RelatedNode
+ 28, // 46: kythe.proto.serving.PagedCrossReferences.Group.caller:type_name -> kythe.proto.serving.PagedCrossReferences.Caller
+ 15, // 47: kythe.proto.serving.PagedCrossReferences.Group.file_info:type_name -> kythe.proto.serving.FileInfo
+ 29, // 48: kythe.proto.serving.PagedCrossReferences.Page.group:type_name -> kythe.proto.serving.PagedCrossReferences.Group
+ 49, // [49:49] is the sub-list for method output_type
+ 49, // [49:49] is the sub-list for method input_type
+ 49, // [49:49] is the sub-list for extension type_name
+ 49, // [49:49] is the sub-list for extension extendee
+ 0, // [0:49] is the sub-list for field type_name
}
func init() { file_kythe_proto_serving_proto_init() }
diff --git a/kythe/proto/xref.proto b/kythe/proto/xref.proto
index ff2360d72..4ef67e480 100644
--- a/kythe/proto/xref.proto
+++ b/kythe/proto/xref.proto
@@ -163,6 +163,13 @@ message DecorationsRequest {
// Whether to return known semantic scopes per Reference.
bool semantic_scopes = 12;
+
+ // The user's Workspace. May be used as a target for patching spans to match
+ // the current state of the referenced files.
+ Workspace workspace = 13;
+
+ // Whether to patch spans against the given Workspace.
+ bool patch_against_workspace = 14;
}
// File represents a whole file
@@ -416,10 +423,46 @@ message CrossReferencesRequest {
// nodes will be returned.
repeated string build_config = 15;
+ // The user's Workspace. May be used as a target for patching spans to match
+ // the current state of the referenced files.
+ Workspace workspace = 17;
+
+ // Whether to patch spans against the given Workspace.
+ bool patch_against_workspace = 18;
+
+ // Set of filters to apply to each xref's parent file.
+ CorpusPathFilters corpus_path_filters = 19;
+
reserved 4;
reserved 100;
}
+message CorpusPathFilters {
+ repeated CorpusPathFilter filter = 1;
+}
+
+// A filter for CorpusPaths. The filter matches if each component pattern
+// matches (an empty pattern implies no filtering on that component).
+message CorpusPathFilter {
+ enum Type {
+ DEFAULT = 0;
+ INCLUDE_ONLY = 1;
+ EXCLUDE = 2;
+ }
+ Type type = 1;
+
+ // Corpus pattern to match against.
+ string corpus = 2;
+ // Root pattern to match against.
+ string root = 3;
+ // Path pattern to match against.
+ string path = 4;
+
+ // Fully resolved path pattern to match against. The resolved path is
+ // determined by the server implementation.
+ string resolved_path = 5;
+}
+
// TODO(schroederc): eliminate duplicate serving.ExpandedAnchor message
// defintion
@@ -557,6 +600,13 @@ message DocumentationRequest {
// If set, this DocumentationRequest will return documents for the requested
// tickets as well as their immediate semantic descendants.
bool include_children = 3;
+
+ // The user's Workspace. May be used as a target for patching spans to match
+ // the current state of the referenced files.
+ Workspace workspace = 4;
+
+ // Whether to patch spans against the given Workspace.
+ bool patch_against_workspace = 5;
}
message DocumentationReply {
@@ -584,3 +634,11 @@ message DocumentationReply {
// A unique identifier for the underlying dataset serving this reply.
string build_id = 4;
}
+
+// A Workspace is a pointer to the root of a user's workspace. This is
+// typically the root of a source repository.
+message Workspace {
+ // The root of a user workspace encoded as a uri. The uri format is dependent
+ // on the capabilities of the server.
+ string uri = 1;
+}
diff --git a/kythe/proto/xref_go_proto/xref.pb.go b/kythe/proto/xref_go_proto/xref.pb.go
index 449107861..2d09722bb 100644
--- a/kythe/proto/xref_go_proto/xref.pb.go
+++ b/kythe/proto/xref_go_proto/xref.pb.go
@@ -453,6 +453,55 @@ func (CrossReferencesRequest_TotalsQuality) EnumDescriptor() ([]byte, []int) {
return file_kythe_proto_xref_proto_rawDescGZIP(), []int{4, 4}
}
+type CorpusPathFilter_Type int32
+
+const (
+ CorpusPathFilter_DEFAULT CorpusPathFilter_Type = 0
+ CorpusPathFilter_INCLUDE_ONLY CorpusPathFilter_Type = 1
+ CorpusPathFilter_EXCLUDE CorpusPathFilter_Type = 2
+)
+
+// Enum value maps for CorpusPathFilter_Type.
+var (
+ CorpusPathFilter_Type_name = map[int32]string{
+ 0: "DEFAULT",
+ 1: "INCLUDE_ONLY",
+ 2: "EXCLUDE",
+ }
+ CorpusPathFilter_Type_value = map[string]int32{
+ "DEFAULT": 0,
+ "INCLUDE_ONLY": 1,
+ "EXCLUDE": 2,
+ }
+)
+
+func (x CorpusPathFilter_Type) Enum() *CorpusPathFilter_Type {
+ p := new(CorpusPathFilter_Type)
+ *p = x
+ return p
+}
+
+func (x CorpusPathFilter_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (CorpusPathFilter_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_kythe_proto_xref_proto_enumTypes[9].Descriptor()
+}
+
+func (CorpusPathFilter_Type) Type() protoreflect.EnumType {
+ return &file_kythe_proto_xref_proto_enumTypes[9]
+}
+
+func (x CorpusPathFilter_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CorpusPathFilter_Type.Descriptor instead.
+func (CorpusPathFilter_Type) EnumDescriptor() ([]byte, []int) {
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{6, 0}
+}
+
type Location struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -521,18 +570,20 @@ type DecorationsRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Location *Location `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"`
- SpanKind DecorationsRequest_SpanKind `protobuf:"varint,10,opt,name=span_kind,json=spanKind,proto3,enum=kythe.proto.DecorationsRequest_SpanKind" json:"span_kind,omitempty"`
- DirtyBuffer []byte `protobuf:"bytes,2,opt,name=dirty_buffer,json=dirtyBuffer,proto3" json:"dirty_buffer,omitempty"`
- SourceText bool `protobuf:"varint,3,opt,name=source_text,json=sourceText,proto3" json:"source_text,omitempty"`
- References bool `protobuf:"varint,4,opt,name=references,proto3" json:"references,omitempty"`
- TargetDefinitions bool `protobuf:"varint,6,opt,name=target_definitions,json=targetDefinitions,proto3" json:"target_definitions,omitempty"`
- Filter []string `protobuf:"bytes,5,rep,name=filter,proto3" json:"filter,omitempty"`
- ExtendsOverrides bool `protobuf:"varint,7,opt,name=extends_overrides,json=extendsOverrides,proto3" json:"extends_overrides,omitempty"`
- Diagnostics bool `protobuf:"varint,8,opt,name=diagnostics,proto3" json:"diagnostics,omitempty"`
- Snippets SnippetsKind `protobuf:"varint,9,opt,name=snippets,proto3,enum=kythe.proto.SnippetsKind" json:"snippets,omitempty"`
- BuildConfig []string `protobuf:"bytes,11,rep,name=build_config,json=buildConfig,proto3" json:"build_config,omitempty"`
- SemanticScopes bool `protobuf:"varint,12,opt,name=semantic_scopes,json=semanticScopes,proto3" json:"semantic_scopes,omitempty"`
+ Location *Location `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"`
+ SpanKind DecorationsRequest_SpanKind `protobuf:"varint,10,opt,name=span_kind,json=spanKind,proto3,enum=kythe.proto.DecorationsRequest_SpanKind" json:"span_kind,omitempty"`
+ DirtyBuffer []byte `protobuf:"bytes,2,opt,name=dirty_buffer,json=dirtyBuffer,proto3" json:"dirty_buffer,omitempty"`
+ SourceText bool `protobuf:"varint,3,opt,name=source_text,json=sourceText,proto3" json:"source_text,omitempty"`
+ References bool `protobuf:"varint,4,opt,name=references,proto3" json:"references,omitempty"`
+ TargetDefinitions bool `protobuf:"varint,6,opt,name=target_definitions,json=targetDefinitions,proto3" json:"target_definitions,omitempty"`
+ Filter []string `protobuf:"bytes,5,rep,name=filter,proto3" json:"filter,omitempty"`
+ ExtendsOverrides bool `protobuf:"varint,7,opt,name=extends_overrides,json=extendsOverrides,proto3" json:"extends_overrides,omitempty"`
+ Diagnostics bool `protobuf:"varint,8,opt,name=diagnostics,proto3" json:"diagnostics,omitempty"`
+ Snippets SnippetsKind `protobuf:"varint,9,opt,name=snippets,proto3,enum=kythe.proto.SnippetsKind" json:"snippets,omitempty"`
+ BuildConfig []string `protobuf:"bytes,11,rep,name=build_config,json=buildConfig,proto3" json:"build_config,omitempty"`
+ SemanticScopes bool `protobuf:"varint,12,opt,name=semantic_scopes,json=semanticScopes,proto3" json:"semantic_scopes,omitempty"`
+ Workspace *Workspace `protobuf:"bytes,13,opt,name=workspace,proto3" json:"workspace,omitempty"`
+ PatchAgainstWorkspace bool `protobuf:"varint,14,opt,name=patch_against_workspace,json=patchAgainstWorkspace,proto3" json:"patch_against_workspace,omitempty"`
}
func (x *DecorationsRequest) Reset() {
@@ -651,6 +702,20 @@ func (x *DecorationsRequest) GetSemanticScopes() bool {
return false
}
+func (x *DecorationsRequest) GetWorkspace() *Workspace {
+ if x != nil {
+ return x.Workspace
+ }
+ return nil
+}
+
+func (x *DecorationsRequest) GetPatchAgainstWorkspace() bool {
+ if x != nil {
+ return x.PatchAgainstWorkspace
+ }
+ return false
+}
+
type File struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -838,20 +903,23 @@ type CrossReferencesRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Ticket []string `protobuf:"bytes,1,rep,name=ticket,proto3" json:"ticket,omitempty"`
- DefinitionKind CrossReferencesRequest_DefinitionKind `protobuf:"varint,2,opt,name=definition_kind,json=definitionKind,proto3,enum=kythe.proto.CrossReferencesRequest_DefinitionKind" json:"definition_kind,omitempty"`
- DeclarationKind CrossReferencesRequest_DeclarationKind `protobuf:"varint,7,opt,name=declaration_kind,json=declarationKind,proto3,enum=kythe.proto.CrossReferencesRequest_DeclarationKind" json:"declaration_kind,omitempty"`
- ReferenceKind CrossReferencesRequest_ReferenceKind `protobuf:"varint,3,opt,name=reference_kind,json=referenceKind,proto3,enum=kythe.proto.CrossReferencesRequest_ReferenceKind" json:"reference_kind,omitempty"`
- CallerKind CrossReferencesRequest_CallerKind `protobuf:"varint,12,opt,name=caller_kind,json=callerKind,proto3,enum=kythe.proto.CrossReferencesRequest_CallerKind" json:"caller_kind,omitempty"`
- Filter []string `protobuf:"bytes,5,rep,name=filter,proto3" json:"filter,omitempty"`
- RelatedNodeKind []string `protobuf:"bytes,14,rep,name=related_node_kind,json=relatedNodeKind,proto3" json:"related_node_kind,omitempty"`
- AnchorText bool `protobuf:"varint,6,opt,name=anchor_text,json=anchorText,proto3" json:"anchor_text,omitempty"`
- NodeDefinitions bool `protobuf:"varint,8,opt,name=node_definitions,json=nodeDefinitions,proto3" json:"node_definitions,omitempty"`
- TotalsQuality CrossReferencesRequest_TotalsQuality `protobuf:"varint,16,opt,name=totals_quality,json=totalsQuality,proto3,enum=kythe.proto.CrossReferencesRequest_TotalsQuality" json:"totals_quality,omitempty"`
- PageSize int32 `protobuf:"varint,10,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
- PageToken string `protobuf:"bytes,11,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
- Snippets SnippetsKind `protobuf:"varint,13,opt,name=snippets,proto3,enum=kythe.proto.SnippetsKind" json:"snippets,omitempty"`
- BuildConfig []string `protobuf:"bytes,15,rep,name=build_config,json=buildConfig,proto3" json:"build_config,omitempty"`
+ Ticket []string `protobuf:"bytes,1,rep,name=ticket,proto3" json:"ticket,omitempty"`
+ DefinitionKind CrossReferencesRequest_DefinitionKind `protobuf:"varint,2,opt,name=definition_kind,json=definitionKind,proto3,enum=kythe.proto.CrossReferencesRequest_DefinitionKind" json:"definition_kind,omitempty"`
+ DeclarationKind CrossReferencesRequest_DeclarationKind `protobuf:"varint,7,opt,name=declaration_kind,json=declarationKind,proto3,enum=kythe.proto.CrossReferencesRequest_DeclarationKind" json:"declaration_kind,omitempty"`
+ ReferenceKind CrossReferencesRequest_ReferenceKind `protobuf:"varint,3,opt,name=reference_kind,json=referenceKind,proto3,enum=kythe.proto.CrossReferencesRequest_ReferenceKind" json:"reference_kind,omitempty"`
+ CallerKind CrossReferencesRequest_CallerKind `protobuf:"varint,12,opt,name=caller_kind,json=callerKind,proto3,enum=kythe.proto.CrossReferencesRequest_CallerKind" json:"caller_kind,omitempty"`
+ Filter []string `protobuf:"bytes,5,rep,name=filter,proto3" json:"filter,omitempty"`
+ RelatedNodeKind []string `protobuf:"bytes,14,rep,name=related_node_kind,json=relatedNodeKind,proto3" json:"related_node_kind,omitempty"`
+ AnchorText bool `protobuf:"varint,6,opt,name=anchor_text,json=anchorText,proto3" json:"anchor_text,omitempty"`
+ NodeDefinitions bool `protobuf:"varint,8,opt,name=node_definitions,json=nodeDefinitions,proto3" json:"node_definitions,omitempty"`
+ TotalsQuality CrossReferencesRequest_TotalsQuality `protobuf:"varint,16,opt,name=totals_quality,json=totalsQuality,proto3,enum=kythe.proto.CrossReferencesRequest_TotalsQuality" json:"totals_quality,omitempty"`
+ PageSize int32 `protobuf:"varint,10,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+ PageToken string `protobuf:"bytes,11,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+ Snippets SnippetsKind `protobuf:"varint,13,opt,name=snippets,proto3,enum=kythe.proto.SnippetsKind" json:"snippets,omitempty"`
+ BuildConfig []string `protobuf:"bytes,15,rep,name=build_config,json=buildConfig,proto3" json:"build_config,omitempty"`
+ Workspace *Workspace `protobuf:"bytes,17,opt,name=workspace,proto3" json:"workspace,omitempty"`
+ PatchAgainstWorkspace bool `protobuf:"varint,18,opt,name=patch_against_workspace,json=patchAgainstWorkspace,proto3" json:"patch_against_workspace,omitempty"`
+ CorpusPathFilters *CorpusPathFilters `protobuf:"bytes,19,opt,name=corpus_path_filters,json=corpusPathFilters,proto3" json:"corpus_path_filters,omitempty"`
}
func (x *CrossReferencesRequest) Reset() {
@@ -984,6 +1052,153 @@ func (x *CrossReferencesRequest) GetBuildConfig() []string {
return nil
}
+func (x *CrossReferencesRequest) GetWorkspace() *Workspace {
+ if x != nil {
+ return x.Workspace
+ }
+ return nil
+}
+
+func (x *CrossReferencesRequest) GetPatchAgainstWorkspace() bool {
+ if x != nil {
+ return x.PatchAgainstWorkspace
+ }
+ return false
+}
+
+func (x *CrossReferencesRequest) GetCorpusPathFilters() *CorpusPathFilters {
+ if x != nil {
+ return x.CorpusPathFilters
+ }
+ return nil
+}
+
+type CorpusPathFilters struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Filter []*CorpusPathFilter `protobuf:"bytes,1,rep,name=filter,proto3" json:"filter,omitempty"`
+}
+
+func (x *CorpusPathFilters) Reset() {
+ *x = CorpusPathFilters{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_kythe_proto_xref_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CorpusPathFilters) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CorpusPathFilters) ProtoMessage() {}
+
+func (x *CorpusPathFilters) ProtoReflect() protoreflect.Message {
+ mi := &file_kythe_proto_xref_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CorpusPathFilters.ProtoReflect.Descriptor instead.
+func (*CorpusPathFilters) Descriptor() ([]byte, []int) {
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *CorpusPathFilters) GetFilter() []*CorpusPathFilter {
+ if x != nil {
+ return x.Filter
+ }
+ return nil
+}
+
+type CorpusPathFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Type CorpusPathFilter_Type `protobuf:"varint,1,opt,name=type,proto3,enum=kythe.proto.CorpusPathFilter_Type" json:"type,omitempty"`
+ Corpus string `protobuf:"bytes,2,opt,name=corpus,proto3" json:"corpus,omitempty"`
+ Root string `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"`
+ Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"`
+ ResolvedPath string `protobuf:"bytes,5,opt,name=resolved_path,json=resolvedPath,proto3" json:"resolved_path,omitempty"`
+}
+
+func (x *CorpusPathFilter) Reset() {
+ *x = CorpusPathFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_kythe_proto_xref_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CorpusPathFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CorpusPathFilter) ProtoMessage() {}
+
+func (x *CorpusPathFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_kythe_proto_xref_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CorpusPathFilter.ProtoReflect.Descriptor instead.
+func (*CorpusPathFilter) Descriptor() ([]byte, []int) {
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *CorpusPathFilter) GetType() CorpusPathFilter_Type {
+ if x != nil {
+ return x.Type
+ }
+ return CorpusPathFilter_DEFAULT
+}
+
+func (x *CorpusPathFilter) GetCorpus() string {
+ if x != nil {
+ return x.Corpus
+ }
+ return ""
+}
+
+func (x *CorpusPathFilter) GetRoot() string {
+ if x != nil {
+ return x.Root
+ }
+ return ""
+}
+
+func (x *CorpusPathFilter) GetPath() string {
+ if x != nil {
+ return x.Path
+ }
+ return ""
+}
+
+func (x *CorpusPathFilter) GetResolvedPath() string {
+ if x != nil {
+ return x.ResolvedPath
+ }
+ return ""
+}
+
type Anchor struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1003,7 +1218,7 @@ type Anchor struct {
func (x *Anchor) Reset() {
*x = Anchor{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[5]
+ mi := &file_kythe_proto_xref_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1016,7 +1231,7 @@ func (x *Anchor) String() string {
func (*Anchor) ProtoMessage() {}
func (x *Anchor) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[5]
+ mi := &file_kythe_proto_xref_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1029,7 +1244,7 @@ func (x *Anchor) ProtoReflect() protoreflect.Message {
// Deprecated: Use Anchor.ProtoReflect.Descriptor instead.
func (*Anchor) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{5}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{7}
}
func (x *Anchor) GetTicket() string {
@@ -1107,7 +1322,7 @@ type Printable struct {
func (x *Printable) Reset() {
*x = Printable{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[6]
+ mi := &file_kythe_proto_xref_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1120,7 +1335,7 @@ func (x *Printable) String() string {
func (*Printable) ProtoMessage() {}
func (x *Printable) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[6]
+ mi := &file_kythe_proto_xref_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1133,7 +1348,7 @@ func (x *Printable) ProtoReflect() protoreflect.Message {
// Deprecated: Use Printable.ProtoReflect.Descriptor instead.
func (*Printable) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{6}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{8}
}
func (x *Printable) GetRawText() string {
@@ -1166,7 +1381,7 @@ type CrossReferencesReply struct {
func (x *CrossReferencesReply) Reset() {
*x = CrossReferencesReply{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[7]
+ mi := &file_kythe_proto_xref_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1179,7 +1394,7 @@ func (x *CrossReferencesReply) String() string {
func (*CrossReferencesReply) ProtoMessage() {}
func (x *CrossReferencesReply) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[7]
+ mi := &file_kythe_proto_xref_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1192,7 +1407,7 @@ func (x *CrossReferencesReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use CrossReferencesReply.ProtoReflect.Descriptor instead.
func (*CrossReferencesReply) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{7}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9}
}
func (x *CrossReferencesReply) GetTotal() *CrossReferencesReply_Total {
@@ -1242,15 +1457,17 @@ type DocumentationRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Ticket []string `protobuf:"bytes,1,rep,name=ticket,proto3" json:"ticket,omitempty"`
- Filter []string `protobuf:"bytes,2,rep,name=filter,proto3" json:"filter,omitempty"`
- IncludeChildren bool `protobuf:"varint,3,opt,name=include_children,json=includeChildren,proto3" json:"include_children,omitempty"`
+ Ticket []string `protobuf:"bytes,1,rep,name=ticket,proto3" json:"ticket,omitempty"`
+ Filter []string `protobuf:"bytes,2,rep,name=filter,proto3" json:"filter,omitempty"`
+ IncludeChildren bool `protobuf:"varint,3,opt,name=include_children,json=includeChildren,proto3" json:"include_children,omitempty"`
+ Workspace *Workspace `protobuf:"bytes,4,opt,name=workspace,proto3" json:"workspace,omitempty"`
+ PatchAgainstWorkspace bool `protobuf:"varint,5,opt,name=patch_against_workspace,json=patchAgainstWorkspace,proto3" json:"patch_against_workspace,omitempty"`
}
func (x *DocumentationRequest) Reset() {
*x = DocumentationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[8]
+ mi := &file_kythe_proto_xref_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1263,7 +1480,7 @@ func (x *DocumentationRequest) String() string {
func (*DocumentationRequest) ProtoMessage() {}
func (x *DocumentationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[8]
+ mi := &file_kythe_proto_xref_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1276,7 +1493,7 @@ func (x *DocumentationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DocumentationRequest.ProtoReflect.Descriptor instead.
func (*DocumentationRequest) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{8}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{10}
}
func (x *DocumentationRequest) GetTicket() []string {
@@ -1300,6 +1517,20 @@ func (x *DocumentationRequest) GetIncludeChildren() bool {
return false
}
+func (x *DocumentationRequest) GetWorkspace() *Workspace {
+ if x != nil {
+ return x.Workspace
+ }
+ return nil
+}
+
+func (x *DocumentationRequest) GetPatchAgainstWorkspace() bool {
+ if x != nil {
+ return x.PatchAgainstWorkspace
+ }
+ return false
+}
+
type DocumentationReply struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1314,7 +1545,7 @@ type DocumentationReply struct {
func (x *DocumentationReply) Reset() {
*x = DocumentationReply{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[9]
+ mi := &file_kythe_proto_xref_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1327,7 +1558,7 @@ func (x *DocumentationReply) String() string {
func (*DocumentationReply) ProtoMessage() {}
func (x *DocumentationReply) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[9]
+ mi := &file_kythe_proto_xref_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1340,7 +1571,7 @@ func (x *DocumentationReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use DocumentationReply.ProtoReflect.Descriptor instead.
func (*DocumentationReply) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{11}
}
func (x *DocumentationReply) GetDocument() []*DocumentationReply_Document {
@@ -1371,6 +1602,53 @@ func (x *DocumentationReply) GetBuildId() string {
return ""
}
+type Workspace struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
+}
+
+func (x *Workspace) Reset() {
+ *x = Workspace{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_kythe_proto_xref_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Workspace) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Workspace) ProtoMessage() {}
+
+func (x *Workspace) ProtoReflect() protoreflect.Message {
+ mi := &file_kythe_proto_xref_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Workspace.ProtoReflect.Descriptor instead.
+func (*Workspace) Descriptor() ([]byte, []int) {
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *Workspace) GetUri() string {
+ if x != nil {
+ return x.Uri
+ }
+ return ""
+}
+
type DecorationsReply_Reference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1388,7 +1666,7 @@ type DecorationsReply_Reference struct {
func (x *DecorationsReply_Reference) Reset() {
*x = DecorationsReply_Reference{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[10]
+ mi := &file_kythe_proto_xref_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1401,7 +1679,7 @@ func (x *DecorationsReply_Reference) String() string {
func (*DecorationsReply_Reference) ProtoMessage() {}
func (x *DecorationsReply_Reference) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[10]
+ mi := &file_kythe_proto_xref_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1480,7 +1758,7 @@ type DecorationsReply_Override struct {
func (x *DecorationsReply_Override) Reset() {
*x = DecorationsReply_Override{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[11]
+ mi := &file_kythe_proto_xref_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1493,7 +1771,7 @@ func (x *DecorationsReply_Override) String() string {
func (*DecorationsReply_Override) ProtoMessage() {}
func (x *DecorationsReply_Override) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[11]
+ mi := &file_kythe_proto_xref_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1548,7 +1826,7 @@ type DecorationsReply_Overrides struct {
func (x *DecorationsReply_Overrides) Reset() {
*x = DecorationsReply_Overrides{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[12]
+ mi := &file_kythe_proto_xref_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1561,7 +1839,7 @@ func (x *DecorationsReply_Overrides) String() string {
func (*DecorationsReply_Overrides) ProtoMessage() {}
func (x *DecorationsReply_Overrides) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[12]
+ mi := &file_kythe_proto_xref_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1597,7 +1875,7 @@ type CrossReferencesReply_RelatedNode struct {
func (x *CrossReferencesReply_RelatedNode) Reset() {
*x = CrossReferencesReply_RelatedNode{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[16]
+ mi := &file_kythe_proto_xref_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1610,7 +1888,7 @@ func (x *CrossReferencesReply_RelatedNode) String() string {
func (*CrossReferencesReply_RelatedNode) ProtoMessage() {}
func (x *CrossReferencesReply_RelatedNode) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[16]
+ mi := &file_kythe_proto_xref_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1623,7 +1901,7 @@ func (x *CrossReferencesReply_RelatedNode) ProtoReflect() protoreflect.Message {
// Deprecated: Use CrossReferencesReply_RelatedNode.ProtoReflect.Descriptor instead.
func (*CrossReferencesReply_RelatedNode) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{7, 0}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9, 0}
}
func (x *CrossReferencesReply_RelatedNode) GetTicket() string {
@@ -1661,7 +1939,7 @@ type CrossReferencesReply_RelatedAnchor struct {
func (x *CrossReferencesReply_RelatedAnchor) Reset() {
*x = CrossReferencesReply_RelatedAnchor{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[17]
+ mi := &file_kythe_proto_xref_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1674,7 +1952,7 @@ func (x *CrossReferencesReply_RelatedAnchor) String() string {
func (*CrossReferencesReply_RelatedAnchor) ProtoMessage() {}
func (x *CrossReferencesReply_RelatedAnchor) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[17]
+ mi := &file_kythe_proto_xref_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1687,7 +1965,7 @@ func (x *CrossReferencesReply_RelatedAnchor) ProtoReflect() protoreflect.Message
// Deprecated: Use CrossReferencesReply_RelatedAnchor.ProtoReflect.Descriptor instead.
func (*CrossReferencesReply_RelatedAnchor) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{7, 1}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9, 1}
}
func (x *CrossReferencesReply_RelatedAnchor) GetAnchor() *Anchor {
@@ -1735,7 +2013,7 @@ type CrossReferencesReply_CrossReferenceSet struct {
func (x *CrossReferencesReply_CrossReferenceSet) Reset() {
*x = CrossReferencesReply_CrossReferenceSet{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[18]
+ mi := &file_kythe_proto_xref_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1748,7 +2026,7 @@ func (x *CrossReferencesReply_CrossReferenceSet) String() string {
func (*CrossReferencesReply_CrossReferenceSet) ProtoMessage() {}
func (x *CrossReferencesReply_CrossReferenceSet) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[18]
+ mi := &file_kythe_proto_xref_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1761,7 +2039,7 @@ func (x *CrossReferencesReply_CrossReferenceSet) ProtoReflect() protoreflect.Mes
// Deprecated: Use CrossReferencesReply_CrossReferenceSet.ProtoReflect.Descriptor instead.
func (*CrossReferencesReply_CrossReferenceSet) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{7, 2}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9, 2}
}
func (x *CrossReferencesReply_CrossReferenceSet) GetTicket() string {
@@ -1829,7 +2107,7 @@ type CrossReferencesReply_Total struct {
func (x *CrossReferencesReply_Total) Reset() {
*x = CrossReferencesReply_Total{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[19]
+ mi := &file_kythe_proto_xref_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1842,7 +2120,7 @@ func (x *CrossReferencesReply_Total) String() string {
func (*CrossReferencesReply_Total) ProtoMessage() {}
func (x *CrossReferencesReply_Total) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[19]
+ mi := &file_kythe_proto_xref_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1855,7 +2133,7 @@ func (x *CrossReferencesReply_Total) ProtoReflect() protoreflect.Message {
// Deprecated: Use CrossReferencesReply_Total.ProtoReflect.Descriptor instead.
func (*CrossReferencesReply_Total) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{7, 3}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9, 3}
}
func (x *CrossReferencesReply_Total) GetDefinitions() int64 {
@@ -1914,7 +2192,7 @@ type DocumentationReply_Document struct {
func (x *DocumentationReply_Document) Reset() {
*x = DocumentationReply_Document{}
if protoimpl.UnsafeEnabled {
- mi := &file_kythe_proto_xref_proto_msgTypes[24]
+ mi := &file_kythe_proto_xref_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1927,7 +2205,7 @@ func (x *DocumentationReply_Document) String() string {
func (*DocumentationReply_Document) ProtoMessage() {}
func (x *DocumentationReply_Document) ProtoReflect() protoreflect.Message {
- mi := &file_kythe_proto_xref_proto_msgTypes[24]
+ mi := &file_kythe_proto_xref_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1940,7 +2218,7 @@ func (x *DocumentationReply_Document) ProtoReflect() protoreflect.Message {
// Deprecated: Use DocumentationReply_Document.ProtoReflect.Descriptor instead.
func (*DocumentationReply_Document) Descriptor() ([]byte, []int) {
- return file_kythe_proto_xref_proto_rawDescGZIP(), []int{9, 0}
+ return file_kythe_proto_xref_proto_rawDescGZIP(), []int{11, 0}
}
func (x *DocumentationReply_Document) GetTicket() string {
@@ -1988,7 +2266,7 @@ var file_kythe_proto_xref_proto_rawDesc = []byte{
0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70,
0x61, 0x6e, 0x22, 0x1a, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x49,
0x4c, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x50, 0x41, 0x4e, 0x10, 0x01, 0x4a, 0x04,
- 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xb9, 0x04, 0x0a, 0x12, 0x44,
+ 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xa7, 0x05, 0x0a, 0x12, 0x44,
0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x31, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
@@ -2021,416 +2299,463 @@ var file_kythe_proto_xref_proto_rawDesc = []byte{
0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x27, 0x0a, 0x0f, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x73, 0x63, 0x6f, 0x70,
0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74,
- 0x69, 0x63, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x70, 0x61, 0x6e,
- 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x49, 0x54, 0x48, 0x49, 0x4e, 0x5f, 0x53,
- 0x50, 0x41, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f,
- 0x53, 0x50, 0x41, 0x4e, 0x10, 0x01, 0x22, 0x63, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3f,
- 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50,
- 0x61, 0x74, 0x68, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12,
- 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb1, 0x0c, 0x0a, 0x10,
- 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x12, 0x31, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12,
- 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x65, 0x78, 0x74,
- 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x45, 0x0a, 0x09,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x27, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65,
- 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69,
- 0x63, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x61,
- 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73,
- 0x74, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64,
- 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11,
- 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x69, 0x6c,
- 0x65, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x46, 0x69,
- 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e, 0x6f, 0x64,
- 0x65, 0x73, 0x12, 0x69, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x36, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44,
- 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e,
+ 0x69, 0x63, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x36,
+ 0x0a, 0x17, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x5f,
+ 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x15, 0x70, 0x61, 0x74, 0x63, 0x68, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x70, 0x61, 0x6e, 0x4b, 0x69,
+ 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x49, 0x54, 0x48, 0x49, 0x4e, 0x5f, 0x53, 0x50, 0x41,
+ 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x53, 0x50,
+ 0x41, 0x4e, 0x10, 0x01, 0x22, 0x63, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0b,
+ 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74,
+ 0x68, 0x52, 0x0a, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a,
+ 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb1, 0x0c, 0x0a, 0x10, 0x44, 0x65,
+ 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x31,
+ 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x15, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1a,
+ 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x45, 0x0a, 0x09, 0x72, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e,
+ 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69,
+ 0x63, 0x12, 0x3d, 0x0a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62,
+ 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52,
+ 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x46, 0x69, 0x6c, 0x65,
+ 0x12, 0x3e, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x28, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65,
+ 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73,
+ 0x12, 0x69, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36,
+ 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63,
+ 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x65,
+ 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x11, 0x65,
+ 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73,
+ 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x76, 0x65,
+ 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x65, 0x78, 0x74,
+ 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x19, 0x0a,
+ 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0xa4, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12,
+ 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x04,
+ 0x73, 0x70, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a,
+ 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x53,
+ 0x63, 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72,
+ 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08,
+ 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x1a,
+ 0x81, 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x3f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x2b, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65,
+ 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x4f,
+ 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d,
+ 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72,
+ 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x04, 0x4b, 0x69, 0x6e,
+ 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53, 0x10, 0x00,
+ 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x53, 0x10, 0x01, 0x4a, 0x04, 0x08,
+ 0x03, 0x10, 0x04, 0x1a, 0x4f, 0x0a, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73,
+ 0x12, 0x42, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c,
+ 0x79, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72,
+ 0x72, 0x69, 0x64, 0x65, 0x1a, 0x56, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
+ 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x18,
0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a,
- 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
- 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x4f,
- 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x65,
- 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12,
- 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0xa4, 0x02, 0x0a, 0x09, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69,
- 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c,
- 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b,
- 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x21, 0x0a, 0x0c,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x73, 0x63, 0x6f, 0x70,
- 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69,
- 0x63, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4a,
- 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, 0x10,
- 0x0c, 0x1a, 0x81, 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x16,
- 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
- 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x2b, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04,
- 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d,
- 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x04, 0x4b,
- 0x69, 0x6e, 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x53,
- 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x53, 0x10, 0x01, 0x4a,
- 0x04, 0x08, 0x03, 0x10, 0x04, 0x1a, 0x4f, 0x0a, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
- 0x65, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76,
- 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x1a, 0x56, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49,
- 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b,
- 0x0a, 0x18, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6c, 0x0a, 0x15, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
- 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22,
- 0xcf, 0x09, 0x0a, 0x16, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b,
- 0x65, 0x74, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6b, 0x79,
- 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52,
- 0x0e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12,
- 0x5e, 0x0a, 0x10, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b,
- 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6c, 0x0a, 0x15, 0x45, 0x78, 0x74,
+ 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70,
+ 0x6c, 0x79, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x8d, 0x0b,
+ 0x0a, 0x16, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b,
+ 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74,
+ 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6b, 0x79, 0x74, 0x68,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66,
0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44,
- 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0f,
- 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12,
- 0x58, 0x0a, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e,
- 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x5e, 0x0a,
+ 0x10, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x63, 0x61, 0x6c,
- 0x6c, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e,
- 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f,
- 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a,
- 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f,
- 0x64, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72,
- 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x12,
- 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x44,
- 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x73, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x51, 0x75,
- 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x51, 0x75, 0x61,
- 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
- 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
- 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
- 0x12, 0x35, 0x0a, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x08, 0x73,
- 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x68, 0x0a, 0x0e, 0x44, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x0e,
- 0x4e, 0x4f, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x00,
- 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x4c, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49,
- 0x4f, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x44, 0x45,
- 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x42,
- 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x10, 0x03, 0x22, 0x3c, 0x0a, 0x0f, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x44, 0x45,
- 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
- 0x41, 0x4c, 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53,
- 0x10, 0x01, 0x22, 0x64, 0x0a, 0x0d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4b,
- 0x69, 0x6e, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45,
- 0x4e, 0x43, 0x45, 0x53, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x52,
- 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e,
- 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43,
- 0x45, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45,
- 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x03, 0x22, 0x46, 0x0a, 0x0a, 0x43, 0x61, 0x6c, 0x6c,
- 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x43, 0x41, 0x4c,
- 0x4c, 0x45, 0x52, 0x53, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54,
- 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x56,
- 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x53, 0x10, 0x02,
- 0x22, 0x53, 0x0a, 0x0d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74,
- 0x79, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
- 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x53, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x45,
- 0x43, 0x49, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a,
- 0x12, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x4f, 0x54,
- 0x41, 0x4c, 0x53, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x64, 0x10,
- 0x65, 0x22, 0xbc, 0x02, 0x0a, 0x06, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06,
- 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x12, 0x2c, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
- 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x12,
- 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65,
- 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0c,
- 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x0b, 0x73, 0x6e,
- 0x69, 0x70, 0x70, 0x65, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69,
- 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08,
- 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04,
- 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a,
- 0x22, 0x54, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x19, 0x0a,
- 0x08, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x72, 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b,
- 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x99, 0x0f, 0x0a, 0x14, 0x43, 0x72, 0x6f, 0x73, 0x73,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12,
- 0x3d, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
+ 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x63,
+ 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0f, 0x64, 0x65,
+ 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x58, 0x0a,
+ 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x65,
+ 0x72, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x63, 0x61,
+ 0x6c, 0x6c, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x6c,
+ 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0a, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x12, 0x29, 0x0a,
+ 0x10, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61,
+ 0x6c, 0x73, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x31, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43,
+ 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x51, 0x75, 0x61, 0x6c,
+ 0x69, 0x74, 0x79, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x51, 0x75, 0x61, 0x6c, 0x69,
+ 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
+ 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35,
+ 0x0a, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x19, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53,
+ 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x08, 0x73, 0x6e, 0x69,
+ 0x70, 0x70, 0x65, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69,
+ 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x36,
+ 0x0a, 0x17, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x5f,
+ 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x15, 0x70, 0x61, 0x74, 0x63, 0x68, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x13, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73,
+ 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x68, 0x0a, 0x0e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x5f, 0x44,
+ 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f,
+ 0x41, 0x4c, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10,
+ 0x01, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49,
+ 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x49, 0x4e, 0x44, 0x49,
+ 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03,
+ 0x22, 0x3c, 0x0a, 0x0f, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b,
+ 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52,
+ 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4c, 0x4c, 0x5f,
+ 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x01, 0x22, 0x64,
+ 0x0a, 0x0d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12,
+ 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53,
+ 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52,
+ 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x4f, 0x4e, 0x5f, 0x43,
+ 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x02,
+ 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43,
+ 0x45, 0x53, 0x10, 0x03, 0x22, 0x46, 0x0a, 0x0a, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x4b, 0x69,
+ 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x53,
+ 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x41, 0x4c,
+ 0x4c, 0x45, 0x52, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49,
+ 0x44, 0x45, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x53, 0x10, 0x02, 0x22, 0x53, 0x0a, 0x0d,
+ 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a,
+ 0x12, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x54,
+ 0x41, 0x4c, 0x53, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x45, 0x43, 0x49, 0x53, 0x45,
+ 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x50,
+ 0x52, 0x4f, 0x58, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x53, 0x10,
+ 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x64, 0x10, 0x65, 0x22, 0x4a, 0x0a,
+ 0x11, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x10, 0x43, 0x6f,
+ 0x72, 0x70, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x36,
+ 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x72, 0x70, 0x75,
+ 0x73, 0x50, 0x61, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65,
+ 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x72, 0x70, 0x75, 0x73, 0x12, 0x12,
+ 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f,
+ 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76,
+ 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72,
+ 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x22, 0x32, 0x0a, 0x04, 0x54,
+ 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00,
+ 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59,
+ 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x10, 0x02, 0x22,
+ 0xbc, 0x02, 0x0a, 0x06, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69,
+ 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b,
+ 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2c,
+ 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04,
+ 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74,
+ 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0c, 0x73, 0x6e,
+ 0x69, 0x70, 0x70, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x0b, 0x73, 0x6e, 0x69, 0x70,
+ 0x70, 0x65, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05,
+ 0x10, 0x06, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x54,
+ 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72,
+ 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72,
+ 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x99, 0x0f, 0x0a, 0x14, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a,
+ 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e,
+ 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x61, 0x0a, 0x10,
+ 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
+ 0x63, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12,
+ 0x42, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c,
0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f,
0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c,
- 0x79, 0x2e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x61,
- 0x0a, 0x10, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x6f, 0x73,
- 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x0f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x73, 0x12, 0x42, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x2c, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43,
- 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
- 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x13, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
- 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
- 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x64, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x74,
- 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23,
- 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b,
- 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0xca, 0x01,
- 0x0a, 0x0d, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12,
- 0x2b, 0x0a, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e, 0x6f,
+ 0x64, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x3a, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52,
+ 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f,
+ 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78,
+ 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x64, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
+ 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d,
+ 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e,
+ 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0xca, 0x01, 0x0a, 0x0d,
+ 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x2b, 0x0a,
+ 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6e, 0x63, 0x68,
+ 0x6f, 0x72, 0x52, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61,
+ 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x13, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6e,
- 0x63, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x0d,
- 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x13, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06,
- 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x8c, 0x04, 0x0a, 0x11, 0x43,
- 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74,
- 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b,
- 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
- 0x4f, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+ 0x63, 0x68, 0x6f, 0x72, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69,
+ 0x63, 0x6b, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b,
+ 0x65, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x8c, 0x04, 0x0a, 0x11, 0x43, 0x72, 0x6f,
+ 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x12, 0x16,
+ 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64,
+ 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+ 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a,
+ 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52,
+ 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68,
+ 0x6f, 0x72, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51,
+ 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e,
- 0x63, 0x68, 0x6f, 0x72, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x51, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
- 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65,
- 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
- 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x63,
- 0x68, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0c, 0x72,
- 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52,
- 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65,
- 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08,
- 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x1a, 0xf8, 0x02, 0x0a, 0x05, 0x54, 0x6f,
- 0x74, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x65, 0x63,
- 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x63,
- 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x18, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x7e, 0x0a, 0x19, 0x72, 0x65, 0x6c,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65,
- 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6b,
- 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e,
- 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64,
- 0x65, 0x73, 0x42, 0x79, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x16, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42,
- 0x79, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x49, 0x0a, 0x1b, 0x52, 0x65, 0x6c,
- 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x52, 0x65, 0x6c, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x77, 0x0a, 0x14, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73,
- 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53,
- 0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a,
- 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b,
- 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x18, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0x71, 0x0a, 0x14, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b,
- 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x68, 0x69,
- 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0xd5, 0x05, 0x0a, 0x12, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65,
- 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x44, 0x0a, 0x08,
- 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
+ 0x63, 0x68, 0x6f, 0x72, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41,
+ 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x12, 0x47, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x2f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43,
+ 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65,
+ 0x70, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x63, 0x68, 0x6f,
+ 0x72, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0c, 0x72, 0x65, 0x6c,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72,
+ 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70,
+ 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b,
+ 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10,
+ 0x05, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x1a, 0xf8, 0x02, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61,
+ 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x6c, 0x61,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
+ 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
+ 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
+ 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x7e, 0x0a, 0x19, 0x72, 0x65, 0x6c, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x6c, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x54, 0x6f,
+ 0x74, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73,
+ 0x42, 0x79, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x16, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x52,
+ 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x49, 0x0a, 0x1b, 0x52, 0x65, 0x6c, 0x61, 0x74,
+ 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x79, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x1a, 0x77, 0x0a, 0x14, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x43,
+ 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0a, 0x4e,
+ 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x18, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x13, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41,
+ 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x22, 0xdf, 0x01, 0x0a, 0x14, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63,
+ 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65,
+ 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x68, 0x69, 0x6c,
+ 0x64, 0x72, 0x65, 0x6e, 0x12, 0x34, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,
+ 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x70, 0x61, 0x74,
+ 0x63, 0x68, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x22, 0xd5, 0x05, 0x0a, 0x12, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x44, 0x0a, 0x08, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x79,
+ 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12,
+ 0x40, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a,
0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63,
0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e,
- 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
- 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2a, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
- 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70,
- 0x6c, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e,
- 0x6f, 0x64, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0xf9, 0x01, 0x0a,
- 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63,
- 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65,
- 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x16, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72,
- 0x69, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x45, 0x0a,
- 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64,
- 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
- 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
- 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04,
- 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06,
- 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x1a, 0x56, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x6f, 0x64,
- 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x1a, 0x5b, 0x0a, 0x18, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6e, 0x63, 0x68,
- 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x25, 0x0a,
- 0x0c, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a,
- 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55,
- 0x4c, 0x54, 0x10, 0x01, 0x32, 0x92, 0x02, 0x0a, 0x0b, 0x58, 0x52, 0x65, 0x66, 0x53, 0x65, 0x72,
- 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0f, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e,
- 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73,
- 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
- 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0d, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65,
+ 0x73, 0x12, 0x6b, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x38, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79,
+ 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19,
+ 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0xf9, 0x01, 0x0a, 0x08, 0x44, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2a,
+ 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b,
+ 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x61,
+ 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x20, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x12, 0x44, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x09, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x32, 0x0a, 0x1f, 0x63, 0x6f, 0x6d,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
- 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0d,
- 0x78, 0x72, 0x65, 0x66, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x63,
+ 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08,
+ 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a,
+ 0x04, 0x08, 0x07, 0x10, 0x08, 0x1a, 0x56, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e,
+ 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a,
+ 0x18, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1d, 0x0a, 0x09, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x2a, 0x25, 0x0a, 0x0c, 0x53, 0x6e, 0x69,
+ 0x70, 0x70, 0x65, 0x74, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
+ 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01,
+ 0x32, 0x92, 0x02, 0x0a, 0x0b, 0x58, 0x52, 0x65, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x12, 0x4f, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x1f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65,
+ 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x1d, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44,
+ 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
+ 0x00, 0x12, 0x5b, 0x0a, 0x0f, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6b, 0x79, 0x74, 0x68,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x55,
+ 0x0a, 0x0d, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x21, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6b, 0x79, 0x74, 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x32, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x6b, 0x79, 0x74,
+ 0x68, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0d, 0x78, 0x72, 0x65, 0x66,
+ 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
}
var (
@@ -2445,8 +2770,8 @@ func file_kythe_proto_xref_proto_rawDescGZIP() []byte {
return file_kythe_proto_xref_proto_rawDescData
}
-var file_kythe_proto_xref_proto_enumTypes = make([]protoimpl.EnumInfo, 9)
-var file_kythe_proto_xref_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
+var file_kythe_proto_xref_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_kythe_proto_xref_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_kythe_proto_xref_proto_goTypes = []interface{}{
(SnippetsKind)(0), // 0: kythe.proto.SnippetsKind
(Location_Kind)(0), // 1: kythe.proto.Location.Kind
@@ -2457,106 +2782,116 @@ var file_kythe_proto_xref_proto_goTypes = []interface{}{
(CrossReferencesRequest_ReferenceKind)(0), // 6: kythe.proto.CrossReferencesRequest.ReferenceKind
(CrossReferencesRequest_CallerKind)(0), // 7: kythe.proto.CrossReferencesRequest.CallerKind
(CrossReferencesRequest_TotalsQuality)(0), // 8: kythe.proto.CrossReferencesRequest.TotalsQuality
- (*Location)(nil), // 9: kythe.proto.Location
- (*DecorationsRequest)(nil), // 10: kythe.proto.DecorationsRequest
- (*File)(nil), // 11: kythe.proto.File
- (*DecorationsReply)(nil), // 12: kythe.proto.DecorationsReply
- (*CrossReferencesRequest)(nil), // 13: kythe.proto.CrossReferencesRequest
- (*Anchor)(nil), // 14: kythe.proto.Anchor
- (*Printable)(nil), // 15: kythe.proto.Printable
- (*CrossReferencesReply)(nil), // 16: kythe.proto.CrossReferencesReply
- (*DocumentationRequest)(nil), // 17: kythe.proto.DocumentationRequest
- (*DocumentationReply)(nil), // 18: kythe.proto.DocumentationReply
- (*DecorationsReply_Reference)(nil), // 19: kythe.proto.DecorationsReply.Reference
- (*DecorationsReply_Override)(nil), // 20: kythe.proto.DecorationsReply.Override
- (*DecorationsReply_Overrides)(nil), // 21: kythe.proto.DecorationsReply.Overrides
- nil, // 22: kythe.proto.DecorationsReply.NodesEntry
- nil, // 23: kythe.proto.DecorationsReply.DefinitionLocationsEntry
- nil, // 24: kythe.proto.DecorationsReply.ExtendsOverridesEntry
- (*CrossReferencesReply_RelatedNode)(nil), // 25: kythe.proto.CrossReferencesReply.RelatedNode
- (*CrossReferencesReply_RelatedAnchor)(nil), // 26: kythe.proto.CrossReferencesReply.RelatedAnchor
- (*CrossReferencesReply_CrossReferenceSet)(nil), // 27: kythe.proto.CrossReferencesReply.CrossReferenceSet
- (*CrossReferencesReply_Total)(nil), // 28: kythe.proto.CrossReferencesReply.Total
- nil, // 29: kythe.proto.CrossReferencesReply.CrossReferencesEntry
- nil, // 30: kythe.proto.CrossReferencesReply.NodesEntry
- nil, // 31: kythe.proto.CrossReferencesReply.DefinitionLocationsEntry
- nil, // 32: kythe.proto.CrossReferencesReply.Total.RelatedNodesByRelationEntry
- (*DocumentationReply_Document)(nil), // 33: kythe.proto.DocumentationReply.Document
- nil, // 34: kythe.proto.DocumentationReply.NodesEntry
- nil, // 35: kythe.proto.DocumentationReply.DefinitionLocationsEntry
- (*common_go_proto.Span)(nil), // 36: kythe.proto.common.Span
- (*common_go_proto.CorpusPath)(nil), // 37: kythe.proto.common.CorpusPath
- (*common_go_proto.Diagnostic)(nil), // 38: kythe.proto.common.Diagnostic
- (*common_go_proto.Link)(nil), // 39: kythe.proto.common.Link
- (*common_go_proto.MarkedSource)(nil), // 40: kythe.proto.common.MarkedSource
- (*common_go_proto.NodeInfo)(nil), // 41: kythe.proto.common.NodeInfo
+ (CorpusPathFilter_Type)(0), // 9: kythe.proto.CorpusPathFilter.Type
+ (*Location)(nil), // 10: kythe.proto.Location
+ (*DecorationsRequest)(nil), // 11: kythe.proto.DecorationsRequest
+ (*File)(nil), // 12: kythe.proto.File
+ (*DecorationsReply)(nil), // 13: kythe.proto.DecorationsReply
+ (*CrossReferencesRequest)(nil), // 14: kythe.proto.CrossReferencesRequest
+ (*CorpusPathFilters)(nil), // 15: kythe.proto.CorpusPathFilters
+ (*CorpusPathFilter)(nil), // 16: kythe.proto.CorpusPathFilter
+ (*Anchor)(nil), // 17: kythe.proto.Anchor
+ (*Printable)(nil), // 18: kythe.proto.Printable
+ (*CrossReferencesReply)(nil), // 19: kythe.proto.CrossReferencesReply
+ (*DocumentationRequest)(nil), // 20: kythe.proto.DocumentationRequest
+ (*DocumentationReply)(nil), // 21: kythe.proto.DocumentationReply
+ (*Workspace)(nil), // 22: kythe.proto.Workspace
+ (*DecorationsReply_Reference)(nil), // 23: kythe.proto.DecorationsReply.Reference
+ (*DecorationsReply_Override)(nil), // 24: kythe.proto.DecorationsReply.Override
+ (*DecorationsReply_Overrides)(nil), // 25: kythe.proto.DecorationsReply.Overrides
+ nil, // 26: kythe.proto.DecorationsReply.NodesEntry
+ nil, // 27: kythe.proto.DecorationsReply.DefinitionLocationsEntry
+ nil, // 28: kythe.proto.DecorationsReply.ExtendsOverridesEntry
+ (*CrossReferencesReply_RelatedNode)(nil), // 29: kythe.proto.CrossReferencesReply.RelatedNode
+ (*CrossReferencesReply_RelatedAnchor)(nil), // 30: kythe.proto.CrossReferencesReply.RelatedAnchor
+ (*CrossReferencesReply_CrossReferenceSet)(nil), // 31: kythe.proto.CrossReferencesReply.CrossReferenceSet
+ (*CrossReferencesReply_Total)(nil), // 32: kythe.proto.CrossReferencesReply.Total
+ nil, // 33: kythe.proto.CrossReferencesReply.CrossReferencesEntry
+ nil, // 34: kythe.proto.CrossReferencesReply.NodesEntry
+ nil, // 35: kythe.proto.CrossReferencesReply.DefinitionLocationsEntry
+ nil, // 36: kythe.proto.CrossReferencesReply.Total.RelatedNodesByRelationEntry
+ (*DocumentationReply_Document)(nil), // 37: kythe.proto.DocumentationReply.Document
+ nil, // 38: kythe.proto.DocumentationReply.NodesEntry
+ nil, // 39: kythe.proto.DocumentationReply.DefinitionLocationsEntry
+ (*common_go_proto.Span)(nil), // 40: kythe.proto.common.Span
+ (*common_go_proto.CorpusPath)(nil), // 41: kythe.proto.common.CorpusPath
+ (*common_go_proto.Diagnostic)(nil), // 42: kythe.proto.common.Diagnostic
+ (*common_go_proto.Link)(nil), // 43: kythe.proto.common.Link
+ (*common_go_proto.MarkedSource)(nil), // 44: kythe.proto.common.MarkedSource
+ (*common_go_proto.NodeInfo)(nil), // 45: kythe.proto.common.NodeInfo
}
var file_kythe_proto_xref_proto_depIdxs = []int32{
1, // 0: kythe.proto.Location.kind:type_name -> kythe.proto.Location.Kind
- 36, // 1: kythe.proto.Location.span:type_name -> kythe.proto.common.Span
- 9, // 2: kythe.proto.DecorationsRequest.location:type_name -> kythe.proto.Location
+ 40, // 1: kythe.proto.Location.span:type_name -> kythe.proto.common.Span
+ 10, // 2: kythe.proto.DecorationsRequest.location:type_name -> kythe.proto.Location
2, // 3: kythe.proto.DecorationsRequest.span_kind:type_name -> kythe.proto.DecorationsRequest.SpanKind
0, // 4: kythe.proto.DecorationsRequest.snippets:type_name -> kythe.proto.SnippetsKind
- 37, // 5: kythe.proto.File.corpus_path:type_name -> kythe.proto.common.CorpusPath
- 9, // 6: kythe.proto.DecorationsReply.location:type_name -> kythe.proto.Location
- 19, // 7: kythe.proto.DecorationsReply.reference:type_name -> kythe.proto.DecorationsReply.Reference
- 38, // 8: kythe.proto.DecorationsReply.diagnostic:type_name -> kythe.proto.common.Diagnostic
- 11, // 9: kythe.proto.DecorationsReply.generated_by_file:type_name -> kythe.proto.File
- 22, // 10: kythe.proto.DecorationsReply.nodes:type_name -> kythe.proto.DecorationsReply.NodesEntry
- 23, // 11: kythe.proto.DecorationsReply.definition_locations:type_name -> kythe.proto.DecorationsReply.DefinitionLocationsEntry
- 24, // 12: kythe.proto.DecorationsReply.extends_overrides:type_name -> kythe.proto.DecorationsReply.ExtendsOverridesEntry
- 4, // 13: kythe.proto.CrossReferencesRequest.definition_kind:type_name -> kythe.proto.CrossReferencesRequest.DefinitionKind
- 5, // 14: kythe.proto.CrossReferencesRequest.declaration_kind:type_name -> kythe.proto.CrossReferencesRequest.DeclarationKind
- 6, // 15: kythe.proto.CrossReferencesRequest.reference_kind:type_name -> kythe.proto.CrossReferencesRequest.ReferenceKind
- 7, // 16: kythe.proto.CrossReferencesRequest.caller_kind:type_name -> kythe.proto.CrossReferencesRequest.CallerKind
- 8, // 17: kythe.proto.CrossReferencesRequest.totals_quality:type_name -> kythe.proto.CrossReferencesRequest.TotalsQuality
- 0, // 18: kythe.proto.CrossReferencesRequest.snippets:type_name -> kythe.proto.SnippetsKind
- 36, // 19: kythe.proto.Anchor.span:type_name -> kythe.proto.common.Span
- 36, // 20: kythe.proto.Anchor.snippet_span:type_name -> kythe.proto.common.Span
- 39, // 21: kythe.proto.Printable.link:type_name -> kythe.proto.common.Link
- 28, // 22: kythe.proto.CrossReferencesReply.total:type_name -> kythe.proto.CrossReferencesReply.Total
- 29, // 23: kythe.proto.CrossReferencesReply.cross_references:type_name -> kythe.proto.CrossReferencesReply.CrossReferencesEntry
- 30, // 24: kythe.proto.CrossReferencesReply.nodes:type_name -> kythe.proto.CrossReferencesReply.NodesEntry
- 31, // 25: kythe.proto.CrossReferencesReply.definition_locations:type_name -> kythe.proto.CrossReferencesReply.DefinitionLocationsEntry
- 33, // 26: kythe.proto.DocumentationReply.document:type_name -> kythe.proto.DocumentationReply.Document
- 34, // 27: kythe.proto.DocumentationReply.nodes:type_name -> kythe.proto.DocumentationReply.NodesEntry
- 35, // 28: kythe.proto.DocumentationReply.definition_locations:type_name -> kythe.proto.DocumentationReply.DefinitionLocationsEntry
- 36, // 29: kythe.proto.DecorationsReply.Reference.span:type_name -> kythe.proto.common.Span
- 3, // 30: kythe.proto.DecorationsReply.Override.kind:type_name -> kythe.proto.DecorationsReply.Override.Kind
- 40, // 31: kythe.proto.DecorationsReply.Override.marked_source:type_name -> kythe.proto.common.MarkedSource
- 20, // 32: kythe.proto.DecorationsReply.Overrides.override:type_name -> kythe.proto.DecorationsReply.Override
- 41, // 33: kythe.proto.DecorationsReply.NodesEntry.value:type_name -> kythe.proto.common.NodeInfo
- 14, // 34: kythe.proto.DecorationsReply.DefinitionLocationsEntry.value:type_name -> kythe.proto.Anchor
- 21, // 35: kythe.proto.DecorationsReply.ExtendsOverridesEntry.value:type_name -> kythe.proto.DecorationsReply.Overrides
- 14, // 36: kythe.proto.CrossReferencesReply.RelatedAnchor.anchor:type_name -> kythe.proto.Anchor
- 40, // 37: kythe.proto.CrossReferencesReply.RelatedAnchor.marked_source:type_name -> kythe.proto.common.MarkedSource
- 14, // 38: kythe.proto.CrossReferencesReply.RelatedAnchor.site:type_name -> kythe.proto.Anchor
- 40, // 39: kythe.proto.CrossReferencesReply.CrossReferenceSet.marked_source:type_name -> kythe.proto.common.MarkedSource
- 26, // 40: kythe.proto.CrossReferencesReply.CrossReferenceSet.definition:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
- 26, // 41: kythe.proto.CrossReferencesReply.CrossReferenceSet.declaration:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
- 26, // 42: kythe.proto.CrossReferencesReply.CrossReferenceSet.reference:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
- 26, // 43: kythe.proto.CrossReferencesReply.CrossReferenceSet.caller:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
- 25, // 44: kythe.proto.CrossReferencesReply.CrossReferenceSet.related_node:type_name -> kythe.proto.CrossReferencesReply.RelatedNode
- 32, // 45: kythe.proto.CrossReferencesReply.Total.related_nodes_by_relation:type_name -> kythe.proto.CrossReferencesReply.Total.RelatedNodesByRelationEntry
- 27, // 46: kythe.proto.CrossReferencesReply.CrossReferencesEntry.value:type_name -> kythe.proto.CrossReferencesReply.CrossReferenceSet
- 41, // 47: kythe.proto.CrossReferencesReply.NodesEntry.value:type_name -> kythe.proto.common.NodeInfo
- 14, // 48: kythe.proto.CrossReferencesReply.DefinitionLocationsEntry.value:type_name -> kythe.proto.Anchor
- 15, // 49: kythe.proto.DocumentationReply.Document.text:type_name -> kythe.proto.Printable
- 40, // 50: kythe.proto.DocumentationReply.Document.marked_source:type_name -> kythe.proto.common.MarkedSource
- 33, // 51: kythe.proto.DocumentationReply.Document.children:type_name -> kythe.proto.DocumentationReply.Document
- 41, // 52: kythe.proto.DocumentationReply.NodesEntry.value:type_name -> kythe.proto.common.NodeInfo
- 14, // 53: kythe.proto.DocumentationReply.DefinitionLocationsEntry.value:type_name -> kythe.proto.Anchor
- 10, // 54: kythe.proto.XRefService.Decorations:input_type -> kythe.proto.DecorationsRequest
- 13, // 55: kythe.proto.XRefService.CrossReferences:input_type -> kythe.proto.CrossReferencesRequest
- 17, // 56: kythe.proto.XRefService.Documentation:input_type -> kythe.proto.DocumentationRequest
- 12, // 57: kythe.proto.XRefService.Decorations:output_type -> kythe.proto.DecorationsReply
- 16, // 58: kythe.proto.XRefService.CrossReferences:output_type -> kythe.proto.CrossReferencesReply
- 18, // 59: kythe.proto.XRefService.Documentation:output_type -> kythe.proto.DocumentationReply
- 57, // [57:60] is the sub-list for method output_type
- 54, // [54:57] is the sub-list for method input_type
- 54, // [54:54] is the sub-list for extension type_name
- 54, // [54:54] is the sub-list for extension extendee
- 0, // [0:54] is the sub-list for field type_name
+ 22, // 5: kythe.proto.DecorationsRequest.workspace:type_name -> kythe.proto.Workspace
+ 41, // 6: kythe.proto.File.corpus_path:type_name -> kythe.proto.common.CorpusPath
+ 10, // 7: kythe.proto.DecorationsReply.location:type_name -> kythe.proto.Location
+ 23, // 8: kythe.proto.DecorationsReply.reference:type_name -> kythe.proto.DecorationsReply.Reference
+ 42, // 9: kythe.proto.DecorationsReply.diagnostic:type_name -> kythe.proto.common.Diagnostic
+ 12, // 10: kythe.proto.DecorationsReply.generated_by_file:type_name -> kythe.proto.File
+ 26, // 11: kythe.proto.DecorationsReply.nodes:type_name -> kythe.proto.DecorationsReply.NodesEntry
+ 27, // 12: kythe.proto.DecorationsReply.definition_locations:type_name -> kythe.proto.DecorationsReply.DefinitionLocationsEntry
+ 28, // 13: kythe.proto.DecorationsReply.extends_overrides:type_name -> kythe.proto.DecorationsReply.ExtendsOverridesEntry
+ 4, // 14: kythe.proto.CrossReferencesRequest.definition_kind:type_name -> kythe.proto.CrossReferencesRequest.DefinitionKind
+ 5, // 15: kythe.proto.CrossReferencesRequest.declaration_kind:type_name -> kythe.proto.CrossReferencesRequest.DeclarationKind
+ 6, // 16: kythe.proto.CrossReferencesRequest.reference_kind:type_name -> kythe.proto.CrossReferencesRequest.ReferenceKind
+ 7, // 17: kythe.proto.CrossReferencesRequest.caller_kind:type_name -> kythe.proto.CrossReferencesRequest.CallerKind
+ 8, // 18: kythe.proto.CrossReferencesRequest.totals_quality:type_name -> kythe.proto.CrossReferencesRequest.TotalsQuality
+ 0, // 19: kythe.proto.CrossReferencesRequest.snippets:type_name -> kythe.proto.SnippetsKind
+ 22, // 20: kythe.proto.CrossReferencesRequest.workspace:type_name -> kythe.proto.Workspace
+ 15, // 21: kythe.proto.CrossReferencesRequest.corpus_path_filters:type_name -> kythe.proto.CorpusPathFilters
+ 16, // 22: kythe.proto.CorpusPathFilters.filter:type_name -> kythe.proto.CorpusPathFilter
+ 9, // 23: kythe.proto.CorpusPathFilter.type:type_name -> kythe.proto.CorpusPathFilter.Type
+ 40, // 24: kythe.proto.Anchor.span:type_name -> kythe.proto.common.Span
+ 40, // 25: kythe.proto.Anchor.snippet_span:type_name -> kythe.proto.common.Span
+ 43, // 26: kythe.proto.Printable.link:type_name -> kythe.proto.common.Link
+ 32, // 27: kythe.proto.CrossReferencesReply.total:type_name -> kythe.proto.CrossReferencesReply.Total
+ 33, // 28: kythe.proto.CrossReferencesReply.cross_references:type_name -> kythe.proto.CrossReferencesReply.CrossReferencesEntry
+ 34, // 29: kythe.proto.CrossReferencesReply.nodes:type_name -> kythe.proto.CrossReferencesReply.NodesEntry
+ 35, // 30: kythe.proto.CrossReferencesReply.definition_locations:type_name -> kythe.proto.CrossReferencesReply.DefinitionLocationsEntry
+ 22, // 31: kythe.proto.DocumentationRequest.workspace:type_name -> kythe.proto.Workspace
+ 37, // 32: kythe.proto.DocumentationReply.document:type_name -> kythe.proto.DocumentationReply.Document
+ 38, // 33: kythe.proto.DocumentationReply.nodes:type_name -> kythe.proto.DocumentationReply.NodesEntry
+ 39, // 34: kythe.proto.DocumentationReply.definition_locations:type_name -> kythe.proto.DocumentationReply.DefinitionLocationsEntry
+ 40, // 35: kythe.proto.DecorationsReply.Reference.span:type_name -> kythe.proto.common.Span
+ 3, // 36: kythe.proto.DecorationsReply.Override.kind:type_name -> kythe.proto.DecorationsReply.Override.Kind
+ 44, // 37: kythe.proto.DecorationsReply.Override.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 24, // 38: kythe.proto.DecorationsReply.Overrides.override:type_name -> kythe.proto.DecorationsReply.Override
+ 45, // 39: kythe.proto.DecorationsReply.NodesEntry.value:type_name -> kythe.proto.common.NodeInfo
+ 17, // 40: kythe.proto.DecorationsReply.DefinitionLocationsEntry.value:type_name -> kythe.proto.Anchor
+ 25, // 41: kythe.proto.DecorationsReply.ExtendsOverridesEntry.value:type_name -> kythe.proto.DecorationsReply.Overrides
+ 17, // 42: kythe.proto.CrossReferencesReply.RelatedAnchor.anchor:type_name -> kythe.proto.Anchor
+ 44, // 43: kythe.proto.CrossReferencesReply.RelatedAnchor.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 17, // 44: kythe.proto.CrossReferencesReply.RelatedAnchor.site:type_name -> kythe.proto.Anchor
+ 44, // 45: kythe.proto.CrossReferencesReply.CrossReferenceSet.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 30, // 46: kythe.proto.CrossReferencesReply.CrossReferenceSet.definition:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
+ 30, // 47: kythe.proto.CrossReferencesReply.CrossReferenceSet.declaration:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
+ 30, // 48: kythe.proto.CrossReferencesReply.CrossReferenceSet.reference:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
+ 30, // 49: kythe.proto.CrossReferencesReply.CrossReferenceSet.caller:type_name -> kythe.proto.CrossReferencesReply.RelatedAnchor
+ 29, // 50: kythe.proto.CrossReferencesReply.CrossReferenceSet.related_node:type_name -> kythe.proto.CrossReferencesReply.RelatedNode
+ 36, // 51: kythe.proto.CrossReferencesReply.Total.related_nodes_by_relation:type_name -> kythe.proto.CrossReferencesReply.Total.RelatedNodesByRelationEntry
+ 31, // 52: kythe.proto.CrossReferencesReply.CrossReferencesEntry.value:type_name -> kythe.proto.CrossReferencesReply.CrossReferenceSet
+ 45, // 53: kythe.proto.CrossReferencesReply.NodesEntry.value:type_name -> kythe.proto.common.NodeInfo
+ 17, // 54: kythe.proto.CrossReferencesReply.DefinitionLocationsEntry.value:type_name -> kythe.proto.Anchor
+ 18, // 55: kythe.proto.DocumentationReply.Document.text:type_name -> kythe.proto.Printable
+ 44, // 56: kythe.proto.DocumentationReply.Document.marked_source:type_name -> kythe.proto.common.MarkedSource
+ 37, // 57: kythe.proto.DocumentationReply.Document.children:type_name -> kythe.proto.DocumentationReply.Document
+ 45, // 58: kythe.proto.DocumentationReply.NodesEntry.value:type_name -> kythe.proto.common.NodeInfo
+ 17, // 59: kythe.proto.DocumentationReply.DefinitionLocationsEntry.value:type_name -> kythe.proto.Anchor
+ 11, // 60: kythe.proto.XRefService.Decorations:input_type -> kythe.proto.DecorationsRequest
+ 14, // 61: kythe.proto.XRefService.CrossReferences:input_type -> kythe.proto.CrossReferencesRequest
+ 20, // 62: kythe.proto.XRefService.Documentation:input_type -> kythe.proto.DocumentationRequest
+ 13, // 63: kythe.proto.XRefService.Decorations:output_type -> kythe.proto.DecorationsReply
+ 19, // 64: kythe.proto.XRefService.CrossReferences:output_type -> kythe.proto.CrossReferencesReply
+ 21, // 65: kythe.proto.XRefService.Documentation:output_type -> kythe.proto.DocumentationReply
+ 63, // [63:66] is the sub-list for method output_type
+ 60, // [60:63] is the sub-list for method input_type
+ 60, // [60:60] is the sub-list for extension type_name
+ 60, // [60:60] is the sub-list for extension extendee
+ 0, // [0:60] is the sub-list for field type_name
}
func init() { file_kythe_proto_xref_proto_init() }
@@ -2626,7 +2961,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Anchor); i {
+ switch v := v.(*CorpusPathFilters); i {
case 0:
return &v.state
case 1:
@@ -2638,7 +2973,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Printable); i {
+ switch v := v.(*CorpusPathFilter); i {
case 0:
return &v.state
case 1:
@@ -2650,7 +2985,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CrossReferencesReply); i {
+ switch v := v.(*Anchor); i {
case 0:
return &v.state
case 1:
@@ -2662,7 +2997,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DocumentationRequest); i {
+ switch v := v.(*Printable); i {
case 0:
return &v.state
case 1:
@@ -2674,7 +3009,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DocumentationReply); i {
+ switch v := v.(*CrossReferencesReply); i {
case 0:
return &v.state
case 1:
@@ -2686,7 +3021,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DecorationsReply_Reference); i {
+ switch v := v.(*DocumentationRequest); i {
case 0:
return &v.state
case 1:
@@ -2698,7 +3033,7 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DecorationsReply_Override); i {
+ switch v := v.(*DocumentationReply); i {
case 0:
return &v.state
case 1:
@@ -2710,6 +3045,42 @@ func file_kythe_proto_xref_proto_init() {
}
}
file_kythe_proto_xref_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Workspace); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_kythe_proto_xref_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DecorationsReply_Reference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_kythe_proto_xref_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DecorationsReply_Override); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_kythe_proto_xref_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DecorationsReply_Overrides); i {
case 0:
return &v.state
@@ -2721,7 +3092,7 @@ func file_kythe_proto_xref_proto_init() {
return nil
}
}
- file_kythe_proto_xref_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ file_kythe_proto_xref_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CrossReferencesReply_RelatedNode); i {
case 0:
return &v.state
@@ -2733,7 +3104,7 @@ func file_kythe_proto_xref_proto_init() {
return nil
}
}
- file_kythe_proto_xref_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ file_kythe_proto_xref_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CrossReferencesReply_RelatedAnchor); i {
case 0:
return &v.state
@@ -2745,7 +3116,7 @@ func file_kythe_proto_xref_proto_init() {
return nil
}
}
- file_kythe_proto_xref_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ file_kythe_proto_xref_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CrossReferencesReply_CrossReferenceSet); i {
case 0:
return &v.state
@@ -2757,7 +3128,7 @@ func file_kythe_proto_xref_proto_init() {
return nil
}
}
- file_kythe_proto_xref_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ file_kythe_proto_xref_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CrossReferencesReply_Total); i {
case 0:
return &v.state
@@ -2769,7 +3140,7 @@ func file_kythe_proto_xref_proto_init() {
return nil
}
}
- file_kythe_proto_xref_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ file_kythe_proto_xref_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DocumentationReply_Document); i {
case 0:
return &v.state
@@ -2787,8 +3158,8 @@ func file_kythe_proto_xref_proto_init() {
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_kythe_proto_xref_proto_rawDesc,
- NumEnums: 9,
- NumMessages: 27,
+ NumEnums: 10,
+ NumMessages: 30,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/kythe/release/BUILD b/kythe/release/BUILD
index 0616672b7..deb649e3f 100644
--- a/kythe/release/BUILD
+++ b/kythe/release/BUILD
@@ -15,7 +15,6 @@ docker_build(
"//kythe/java/com/google/devtools/kythe/analyzers/java:indexer_deploy.jar",
"//kythe/java/com/google/devtools/kythe/analyzers/jvm:class_file_indexer_deploy.jar",
"//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac_extractor_deploy.jar",
- "//third_party/javac:javac_jar",
],
image_name = "google/kythe",
tags = ["manual"],
@@ -23,7 +22,7 @@ docker_build(
deps = ["//kythe/release/base"],
)
-release_version = "v0.0.55"
+release_version = "v0.0.60"
genrule(
name = "release",
@@ -141,7 +140,6 @@ sh_test(
"//kythe/testdata:entries",
"//kythe/testdata:test.kzip",
"//third_party/guava",
- "//third_party/javac:javac_jar",
"@com_github_stedolan_jq//:jq",
],
tags = [
diff --git a/kythe/release/Dockerfile b/kythe/release/Dockerfile
index 22c88c103..625baf3fd 100644
--- a/kythe/release/Dockerfile
+++ b/kythe/release/Dockerfile
@@ -45,8 +45,7 @@ RUN echo 'exec /kythe/bin/c++_indexer.bin --flush_after_each_entry --ignore_unim
# Java
ADD kythe/java/com/google/devtools/kythe/analyzers/java/indexer_deploy.jar /kythe/bin/java_indexer_deploy.jar
-ADD third_party/javac/javac-9-dev-r4023-1.jar /kythe/bin/javac9.jar
-RUN echo 'exec java -Xbootclasspath/p:/kythe/bin/javac9.jar -jar /kythe/bin/java_indexer_deploy.jar "$@"' > /kythe/bin/java_indexer
+RUN echo 'exec java -jar /kythe/bin/java_indexer_deploy.jar "$@"' > /kythe/bin/java_indexer
# Go
ADD kythe/go/indexer/cmd/go_indexer/go_indexer /kythe/bin/go_indexer
diff --git a/kythe/release/bazel_rust_extractor_script.sh b/kythe/release/bazel_rust_extractor_script.sh
index 9c1015c7a..9c1015c7a 100644..100755
--- a/kythe/release/bazel_rust_extractor_script.sh
+++ b/kythe/release/bazel_rust_extractor_script.sh
diff --git a/kythe/release/cloudbuild/go-builder/Dockerfile b/kythe/release/cloudbuild/go-builder/Dockerfile
index bb45c9e50..0ff2894c8 100644
--- a/kythe/release/cloudbuild/go-builder/Dockerfile
+++ b/kythe/release/cloudbuild/go-builder/Dockerfile
@@ -15,7 +15,7 @@
# A minimal image for building Kythe using go.
# docker build -t gcr.io/kythe-repo/go-builder
-FROM golang
+FROM golang:1.18beta1
RUN apt-get update && apt-get install -y --no-install-recommends \
libleveldb-dev libbrotli-dev && \
diff --git a/kythe/release/release.BUILD b/kythe/release/release.BUILD
index 4f67e5a43..fb4fb27aa 100644
--- a/kythe/release/release.BUILD
+++ b/kythe/release/release.BUILD
@@ -3,13 +3,13 @@ load(":vnames.bzl", "construct_vnames_config")
package(default_visibility = ["//visibility:public"])
-exports_files([
+exports_files(glob([
"LICENSE",
"extractors/*",
"indexers/*",
"proto/*",
"tools/*",
-])
+]))
config_setting(
name = "assign_external_projects_to_separate_corpora",
diff --git a/kythe/release/release_test.sh b/kythe/release/release_test.sh
index 40a07222a..a9170f33b 100755
--- a/kythe/release/release_test.sh
+++ b/kythe/release/release_test.sh
@@ -21,8 +21,6 @@ export TMPDIR=${TEST_TMPDIR:?}
SHASUM_TOOL="$PWD/$1"
shift
-JAVA_LANGTOOLS="$PWD/$(ls third_party/javac/javac*.jar)"
-
TEST_PORT=9898
ADDR=localhost:$TEST_PORT
TEST_REPOSRCDIR="$PWD"
@@ -62,12 +60,6 @@ tools/triples < "$TEST_REPOSRCDIR/kythe/testdata/test.entries" >/dev/null
rm -rf "$TMPDIR/java_compilation"
export KYTHE_OUTPUT_FILE="$TMPDIR/java_compilation/util.kzip"
-if (java -version |& head -1 | grep 1.8 >/dev/null);
-then
- export KYTHE_JAVA_RUNTIME_OPTIONS="-Xbootclasspath/p:$JAVA_LANGTOOLS"
-else
- export KYTHE_JAVA_RUNTIME_OPTIONS="-Xbootclasspath/a:$JAVA_LANGTOOLS"
-fi
JAVAC_EXTRACTOR_JAR=$PWD/extractors/javac_extractor.jar \
KYTHE_ROOT_DIRECTORY="$TEST_REPOSRCDIR" \
KYTHE_EXTRACT_ONLY=1 \
diff --git a/kythe/release/setup_release.sh b/kythe/release/setup_release.sh
index a0b321162..e142b413e 100755
--- a/kythe/release/setup_release.sh
+++ b/kythe/release/setup_release.sh
@@ -51,7 +51,13 @@ elif [[ -n "$(git diff --name-only)" ]]; then
fi
# Make sure https://github.com/clog-tool/clog-cli is installed.
-hash clog || { echo "ERROR: Please install clog"; exit 1; }
+hash clog || { echo "ERROR: Please install clog-cli"; exit 1; }
+
+if ! clog --setversion VERSION </dev/null 2>/dev/null | grep -q VERSION; then
+ echo "ERROR: clog appears to not be functioning" >&2
+ echo "ERROR: you may have 'colorized log filter' on your PATH rather than clog-cli" >&2
+ echo "ERROR: please check https://github.com/clog-tool/clog-cli for installation instructions" >&2
+fi
previous_version=$(awk '/^release_version =/ { print substr($3, 2, length($3)-2) }' kythe/release/BUILD)
@@ -102,7 +108,7 @@ if ! diff -q <(git diff --name-only) <(echo RELEASES.md; echo kythe/release/BUIL
fi
git checkout -b "release-$version"
-git commit -am "release: $version"
+git commit -anm "release: $version"
# Build and test the Kythe release archive.
bazel --bazelrc=/dev/null test --config=release //kythe/release:release_test
diff --git a/kythe/rust/cargo/BUILD.bazel b/kythe/rust/cargo/BUILD.bazel
deleted file mode 100644
index 0f42d113f..000000000
--- a/kythe/rust/cargo/BUILD.bazel
+++ /dev/null
@@ -1,174 +0,0 @@
-"""
-@generated
-cargo-raze generated Bazel file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-package(default_visibility = ["//visibility:public"])
-
-licenses([
- "notice", # See individual crates for specific licenses
-])
-
-# Aliased targets
-alias(
- name = "anyhow",
- actual = "@raze__anyhow__1_0_43//:anyhow",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "base64",
- actual = "@raze__base64__0_13_0//:base64",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "clap",
- actual = "@raze__clap__2_33_3//:clap",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "colored",
- actual = "@raze__colored__2_0_0//:colored",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "hex",
- actual = "@raze__hex__0_4_3//:hex",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "lazy_static",
- actual = "@raze__lazy_static__1_4_0//:lazy_static",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "quick_error",
- actual = "@raze__quick_error__2_0_1//:quick_error",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "rayon",
- actual = "@raze__rayon__1_5_1//:rayon",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "regex",
- actual = "@raze__regex__1_5_4//:regex",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "rls_analysis",
- actual = "@raze__rls_analysis__0_18_2//:rls_analysis",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "rls_data",
- actual = "@raze__rls_data__0_19_1//:rls_data",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "serde",
- actual = "@raze__serde__1_0_130//:serde",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "serde_json",
- actual = "@raze__serde_json__1_0_67//:serde_json",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "serial_test",
- actual = "@raze__serial_test__0_4_0//:serial_test",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "sha2",
- actual = "@raze__sha2__0_9_6//:sha2",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "tempdir",
- actual = "@raze__tempdir__0_3_7//:tempdir",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-alias(
- name = "zip",
- actual = "@raze__zip__0_5_13//:zip",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-# Export file for Stardoc support
-exports_files(
- [
- "crates.bzl",
- ],
- visibility = ["//visibility:public"],
-)
diff --git a/kythe/rust/cargo/Cargo.lock b/kythe/rust/cargo/Cargo.lock
deleted file mode 100644
index 16bd2e069..000000000
--- a/kythe/rust/cargo/Cargo.lock
+++ /dev/null
@@ -1,919 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "aho-corasick"
-version = "0.7.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "ansi_term"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15af2628f6890fe2609a3b91bef4c83450512802e59489f9c1cb1fa5df064a61"
-
-[[package]]
-name = "assert_cmd"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a88b6bd5df287567ffdf4ddf4d33060048e1068308e5f62d81c6f9824a045a48"
-dependencies = [
- "bstr",
- "doc-comment",
- "predicates",
- "predicates-core",
- "predicates-tree",
- "wait-timeout",
-]
-
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi",
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
-
-[[package]]
-name = "bitflags"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
-
-[[package]]
-name = "block-buffer"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "bstr"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279"
-dependencies = [
- "lazy_static",
- "memchr",
- "regex-automata",
-]
-
-[[package]]
-name = "byteorder"
-version = "1.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
-
-[[package]]
-name = "bzip2"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0"
-dependencies = [
- "bzip2-sys",
- "libc",
-]
-
-[[package]]
-name = "bzip2-sys"
-version = "0.1.11+1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
-]
-
-[[package]]
-name = "cc"
-version = "1.0.68"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787"
-
-[[package]]
-name = "cfg-if"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "clap"
-version = "2.33.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
-dependencies = [
- "ansi_term",
- "atty",
- "bitflags",
- "strsim",
- "textwrap",
- "unicode-width",
- "vec_map",
-]
-
-[[package]]
-name = "cloudabi"
-version = "0.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
-dependencies = [
- "bitflags",
-]
-
-[[package]]
-name = "colored"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
-dependencies = [
- "atty",
- "lazy_static",
- "winapi",
-]
-
-[[package]]
-name = "cpufeatures"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "crc32fast"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
-dependencies = [
- "cfg-if 1.0.0",
-]
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-utils",
- "lazy_static",
- "memoffset",
- "scopeguard",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
-dependencies = [
- "cfg-if 1.0.0",
- "lazy_static",
-]
-
-[[package]]
-name = "derive-new"
-version = "0.5.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "difference"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
-
-[[package]]
-name = "digest"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "doc-comment"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
-
-[[package]]
-name = "either"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
-
-[[package]]
-name = "flate2"
-version = "1.0.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0"
-dependencies = [
- "cfg-if 1.0.0",
- "crc32fast",
- "libc",
- "miniz_oxide",
-]
-
-[[package]]
-name = "float-cmp"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "fst"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927fb434ff9f0115b215dc0efd2e4fbdd7448522a92a1aa37c77d6a2f8f1ebd6"
-dependencies = [
- "byteorder",
-]
-
-[[package]]
-name = "fuchsia-cprng"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
-
-[[package]]
-name = "generic-array"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
-dependencies = [
- "typenum",
- "version_check",
-]
-
-[[package]]
-name = "hermit-abi"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "hex"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-
-[[package]]
-name = "itertools"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itoa"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
-
-[[package]]
-name = "json"
-version = "0.11.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92c245af8786f6ac35f95ca14feca9119e71339aaab41e878e7cdd655c97e9e5"
-
-[[package]]
-name = "kythe_rust"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "assert_cmd",
- "clap",
- "colored",
- "hex",
- "lazy_static",
- "predicates",
- "quick-error",
- "rayon",
- "regex",
- "rls-analysis",
- "rls-data",
- "serde",
- "serde_json",
- "serial_test",
- "sha2",
- "tempdir",
- "zip",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "libc"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6"
-
-[[package]]
-name = "lock_api"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
-dependencies = [
- "scopeguard",
-]
-
-[[package]]
-name = "log"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
-dependencies = [
- "cfg-if 1.0.0",
-]
-
-[[package]]
-name = "memchr"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
-
-[[package]]
-name = "memoffset"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
-dependencies = [
- "adler",
- "autocfg",
-]
-
-[[package]]
-name = "normalize-line-endings"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
-
-[[package]]
-name = "num-traits"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
-dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "opaque-debug"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
-
-[[package]]
-name = "parking_lot"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"
-dependencies = [
- "cfg-if 0.1.10",
- "cloudabi",
- "libc",
- "redox_syscall",
- "smallvec",
- "winapi",
-]
-
-[[package]]
-name = "pkg-config"
-version = "0.3.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
-
-[[package]]
-name = "predicates"
-version = "1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f49cfaf7fdaa3bfacc6fa3e7054e65148878354a5cfddcf661df4c851f8021df"
-dependencies = [
- "difference",
- "float-cmp",
- "normalize-line-endings",
- "predicates-core",
- "regex",
-]
-
-[[package]]
-name = "predicates-core"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451"
-
-[[package]]
-name = "predicates-tree"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15f553275e5721409451eb85e15fd9a860a6e5ab4496eb215987502b5f5391f2"
-dependencies = [
- "predicates-core",
- "treeline",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
-dependencies = [
- "unicode-xid",
-]
-
-[[package]]
-name = "quick-error"
-version = "1.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-
-[[package]]
-name = "quote"
-version = "1.0.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rand"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
-dependencies = [
- "fuchsia-cprng",
- "libc",
- "rand_core 0.3.1",
- "rdrand",
- "winapi",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
-dependencies = [
- "rand_core 0.4.2",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
-
-[[package]]
-name = "rayon"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
-dependencies = [
- "autocfg",
- "crossbeam-deque",
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
-dependencies = [
- "crossbeam-channel",
- "crossbeam-deque",
- "crossbeam-utils",
- "lazy_static",
- "num_cpus",
-]
-
-[[package]]
-name = "rdrand"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
-dependencies = [
- "rand_core 0.3.1",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.1.57"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
-
-[[package]]
-name = "regex"
-version = "1.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
-
-[[package]]
-name = "remove_dir_all"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "rls-analysis"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "534032993e1b60e5db934eab2dde54da7afd1e46c3465fddb2b29eb47cb1ed3a"
-dependencies = [
- "derive-new",
- "fst",
- "itertools",
- "json",
- "log",
- "rls-data",
- "rls-span",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "rls-data"
-version = "0.19.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a58135eb039f3a3279a33779192f0ee78b56f57ae636e25cec83530e41debb99"
-dependencies = [
- "rls-span",
- "serde",
-]
-
-[[package]]
-name = "rls-span"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6e80f614ad4b37910bfe9b029af19c6f92612bb8e1af66e37d35829bf4ef6d1"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
-
-[[package]]
-name = "scopeguard"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-
-[[package]]
-name = "serde"
-version = "1.0.126"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.126"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serial_test"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fef5f7c7434b2f2c598adc6f9494648a1e41274a75c0ba4056f680ae0c117fd6"
-dependencies = [
- "lazy_static",
- "parking_lot",
- "serial_test_derive",
-]
-
-[[package]]
-name = "serial_test_derive"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d08338d8024b227c62bd68a12c7c9883f5c66780abaef15c550dc56f46ee6515"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "sha2"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12"
-dependencies = [
- "block-buffer",
- "cfg-if 1.0.0",
- "cpufeatures",
- "digest",
- "opaque-debug",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
-
-[[package]]
-name = "strsim"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
-
-[[package]]
-name = "syn"
-version = "1.0.73"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-xid",
-]
-
-[[package]]
-name = "tempdir"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
-dependencies = [
- "rand",
- "remove_dir_all",
-]
-
-[[package]]
-name = "textwrap"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-dependencies = [
- "unicode-width",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "time"
-version = "0.1.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
-dependencies = [
- "libc",
- "wasi",
- "winapi",
-]
-
-[[package]]
-name = "treeline"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
-
-[[package]]
-name = "typenum"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
-
-[[package]]
-name = "unicode-width"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
-
-[[package]]
-name = "vec_map"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
-
-[[package]]
-name = "version_check"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
-
-[[package]]
-name = "wait-timeout"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "wasi"
-version = "0.10.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-[[package]]
-name = "zip"
-version = "0.5.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815"
-dependencies = [
- "byteorder",
- "bzip2",
- "crc32fast",
- "flate2",
- "thiserror",
- "time",
-]
diff --git a/kythe/rust/cargo/Cargo.toml b/kythe/rust/cargo/Cargo.toml
deleted file mode 100644
index d24f939ce..000000000
--- a/kythe/rust/cargo/Cargo.toml
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2020 The Kythe Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-[package]
-name = "kythe_rust"
-version = "0.1.0"
-authors = [ "The Kythe Authors" ]
-edition = "2018"
-
-# Mandatory (or Cargo tooling is unhappy)
-[lib]
-path = "fake_lib.rs"
-
-[dependencies]
-anyhow = "1.0"
-base64 = "0.13"
-clap = "2.33.1"
-colored = "2.0.0"
-hex = "0.4.3"
-quick-error = "2.0.1"
-regex = "1.5.4"
-rls-analysis = "0.18.2"
-rls-data = "0.19"
-serde = "1.0.114"
-serde_json = "1.0"
-sha2 = "0.9.5"
-tempdir = "0.3"
-zip = "0.5.6"
-lazy_static = "1.4.0"
-rayon = "1.5.0"
-
-[dev-dependencies]
-serial_test = "0.4.0"
-
-[package.metadata.raze]
-workspace_path = "//kythe/rust/cargo"
-genmode = "Remote"
-targets = ["x86_64-unknown-linux-gnu", "x86_64-apple-darwin"]
-package_aliases_dir = "."
-
-#
-# cargo-raze crate configuration
-# NOTE: If the build starts failing after a dependency is updated, ensure
-# that the version numbers below match the updated dependencies.
-#
-
-[package.metadata.raze.crates.bzip2-sys.'0.1.9+1.0.8']
-gen_buildrs = true
-
-[package.metadata.raze.crates.proc-macro2.'1.0.19']
-gen_buildrs = true
diff --git a/kythe/rust/cargo/crates.bzl b/kythe/rust/cargo/crates.bzl
deleted file mode 100644
index 0a736a7de..000000000
--- a/kythe/rust/cargo/crates.bzl
+++ /dev/null
@@ -1,912 +0,0 @@
-"""
-@generated
-cargo-raze generated Bazel file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository") # buildifier: disable=load
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # buildifier: disable=load
-load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") # buildifier: disable=load
-
-def raze_fetch_remote_crates():
- """This function defines a collection of repos and should be called in a WORKSPACE file"""
- maybe(
- http_archive,
- name = "raze__adler__1_0_2",
- url = "https://crates.io/api/v1/crates/adler/1.0.2/download",
- type = "tar.gz",
- sha256 = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe",
- strip_prefix = "adler-1.0.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.adler-1.0.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__aho_corasick__0_7_18",
- url = "https://crates.io/api/v1/crates/aho-corasick/0.7.18/download",
- type = "tar.gz",
- sha256 = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f",
- strip_prefix = "aho-corasick-0.7.18",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.aho-corasick-0.7.18.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__ansi_term__0_11_0",
- url = "https://crates.io/api/v1/crates/ansi_term/0.11.0/download",
- type = "tar.gz",
- sha256 = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b",
- strip_prefix = "ansi_term-0.11.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.ansi_term-0.11.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__anyhow__1_0_43",
- url = "https://crates.io/api/v1/crates/anyhow/1.0.43/download",
- type = "tar.gz",
- sha256 = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf",
- strip_prefix = "anyhow-1.0.43",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.anyhow-1.0.43.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__atty__0_2_14",
- url = "https://crates.io/api/v1/crates/atty/0.2.14/download",
- type = "tar.gz",
- sha256 = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8",
- strip_prefix = "atty-0.2.14",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.atty-0.2.14.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__autocfg__1_0_1",
- url = "https://crates.io/api/v1/crates/autocfg/1.0.1/download",
- type = "tar.gz",
- sha256 = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a",
- strip_prefix = "autocfg-1.0.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.autocfg-1.0.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__base64__0_13_0",
- url = "https://crates.io/api/v1/crates/base64/0.13.0/download",
- type = "tar.gz",
- sha256 = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd",
- strip_prefix = "base64-0.13.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.base64-0.13.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__bitflags__1_3_2",
- url = "https://crates.io/api/v1/crates/bitflags/1.3.2/download",
- type = "tar.gz",
- sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
- strip_prefix = "bitflags-1.3.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.bitflags-1.3.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__block_buffer__0_9_0",
- url = "https://crates.io/api/v1/crates/block-buffer/0.9.0/download",
- type = "tar.gz",
- sha256 = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4",
- strip_prefix = "block-buffer-0.9.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.block-buffer-0.9.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__byteorder__1_4_3",
- url = "https://crates.io/api/v1/crates/byteorder/1.4.3/download",
- type = "tar.gz",
- sha256 = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610",
- strip_prefix = "byteorder-1.4.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.byteorder-1.4.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__bzip2__0_4_3",
- url = "https://crates.io/api/v1/crates/bzip2/0.4.3/download",
- type = "tar.gz",
- sha256 = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0",
- strip_prefix = "bzip2-0.4.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.bzip2-0.4.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__bzip2_sys__0_1_11_1_0_8",
- url = "https://crates.io/api/v1/crates/bzip2-sys/0.1.11+1.0.8/download",
- type = "tar.gz",
- sha256 = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc",
- strip_prefix = "bzip2-sys-0.1.11+1.0.8",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.bzip2-sys-0.1.11+1.0.8.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__cc__1_0_70",
- url = "https://crates.io/api/v1/crates/cc/1.0.70/download",
- type = "tar.gz",
- sha256 = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0",
- strip_prefix = "cc-1.0.70",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.cc-1.0.70.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__cfg_if__0_1_10",
- url = "https://crates.io/api/v1/crates/cfg-if/0.1.10/download",
- type = "tar.gz",
- sha256 = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822",
- strip_prefix = "cfg-if-0.1.10",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.cfg-if-0.1.10.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__cfg_if__1_0_0",
- url = "https://crates.io/api/v1/crates/cfg-if/1.0.0/download",
- type = "tar.gz",
- sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
- strip_prefix = "cfg-if-1.0.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.cfg-if-1.0.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__clap__2_33_3",
- url = "https://crates.io/api/v1/crates/clap/2.33.3/download",
- type = "tar.gz",
- sha256 = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002",
- strip_prefix = "clap-2.33.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.clap-2.33.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__cloudabi__0_0_3",
- url = "https://crates.io/api/v1/crates/cloudabi/0.0.3/download",
- type = "tar.gz",
- sha256 = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f",
- strip_prefix = "cloudabi-0.0.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.cloudabi-0.0.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__colored__2_0_0",
- url = "https://crates.io/api/v1/crates/colored/2.0.0/download",
- type = "tar.gz",
- sha256 = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd",
- strip_prefix = "colored-2.0.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.colored-2.0.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__cpufeatures__0_2_1",
- url = "https://crates.io/api/v1/crates/cpufeatures/0.2.1/download",
- type = "tar.gz",
- sha256 = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469",
- strip_prefix = "cpufeatures-0.2.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.cpufeatures-0.2.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__crc32fast__1_2_1",
- url = "https://crates.io/api/v1/crates/crc32fast/1.2.1/download",
- type = "tar.gz",
- sha256 = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a",
- strip_prefix = "crc32fast-1.2.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.crc32fast-1.2.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__crossbeam_channel__0_5_1",
- url = "https://crates.io/api/v1/crates/crossbeam-channel/0.5.1/download",
- type = "tar.gz",
- sha256 = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4",
- strip_prefix = "crossbeam-channel-0.5.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.crossbeam-channel-0.5.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__crossbeam_deque__0_8_1",
- url = "https://crates.io/api/v1/crates/crossbeam-deque/0.8.1/download",
- type = "tar.gz",
- sha256 = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e",
- strip_prefix = "crossbeam-deque-0.8.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.crossbeam-deque-0.8.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__crossbeam_epoch__0_9_5",
- url = "https://crates.io/api/v1/crates/crossbeam-epoch/0.9.5/download",
- type = "tar.gz",
- sha256 = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd",
- strip_prefix = "crossbeam-epoch-0.9.5",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.crossbeam-epoch-0.9.5.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__crossbeam_utils__0_8_5",
- url = "https://crates.io/api/v1/crates/crossbeam-utils/0.8.5/download",
- type = "tar.gz",
- sha256 = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db",
- strip_prefix = "crossbeam-utils-0.8.5",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.crossbeam-utils-0.8.5.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__derive_new__0_5_9",
- url = "https://crates.io/api/v1/crates/derive-new/0.5.9/download",
- type = "tar.gz",
- sha256 = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535",
- strip_prefix = "derive-new-0.5.9",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.derive-new-0.5.9.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__digest__0_9_0",
- url = "https://crates.io/api/v1/crates/digest/0.9.0/download",
- type = "tar.gz",
- sha256 = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066",
- strip_prefix = "digest-0.9.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.digest-0.9.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__either__1_6_1",
- url = "https://crates.io/api/v1/crates/either/1.6.1/download",
- type = "tar.gz",
- sha256 = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457",
- strip_prefix = "either-1.6.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.either-1.6.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__flate2__1_0_21",
- url = "https://crates.io/api/v1/crates/flate2/1.0.21/download",
- type = "tar.gz",
- sha256 = "80edafed416a46fb378521624fab1cfa2eb514784fd8921adbe8a8d8321da811",
- strip_prefix = "flate2-1.0.21",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.flate2-1.0.21.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__fst__0_4_7",
- url = "https://crates.io/api/v1/crates/fst/0.4.7/download",
- type = "tar.gz",
- sha256 = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a",
- strip_prefix = "fst-0.4.7",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.fst-0.4.7.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__fuchsia_cprng__0_1_1",
- url = "https://crates.io/api/v1/crates/fuchsia-cprng/0.1.1/download",
- type = "tar.gz",
- sha256 = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba",
- strip_prefix = "fuchsia-cprng-0.1.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.fuchsia-cprng-0.1.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__generic_array__0_14_4",
- url = "https://crates.io/api/v1/crates/generic-array/0.14.4/download",
- type = "tar.gz",
- sha256 = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817",
- strip_prefix = "generic-array-0.14.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.generic-array-0.14.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__hermit_abi__0_1_19",
- url = "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download",
- type = "tar.gz",
- sha256 = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33",
- strip_prefix = "hermit-abi-0.1.19",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.hermit-abi-0.1.19.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__hex__0_4_3",
- url = "https://crates.io/api/v1/crates/hex/0.4.3/download",
- type = "tar.gz",
- sha256 = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70",
- strip_prefix = "hex-0.4.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.hex-0.4.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__itertools__0_9_0",
- url = "https://crates.io/api/v1/crates/itertools/0.9.0/download",
- type = "tar.gz",
- sha256 = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b",
- strip_prefix = "itertools-0.9.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.itertools-0.9.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__itoa__0_4_8",
- url = "https://crates.io/api/v1/crates/itoa/0.4.8/download",
- type = "tar.gz",
- sha256 = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4",
- strip_prefix = "itoa-0.4.8",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.itoa-0.4.8.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__json__0_12_4",
- url = "https://crates.io/api/v1/crates/json/0.12.4/download",
- type = "tar.gz",
- sha256 = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd",
- strip_prefix = "json-0.12.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.json-0.12.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__lazy_static__1_4_0",
- url = "https://crates.io/api/v1/crates/lazy_static/1.4.0/download",
- type = "tar.gz",
- sha256 = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646",
- strip_prefix = "lazy_static-1.4.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.lazy_static-1.4.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__libc__0_2_101",
- url = "https://crates.io/api/v1/crates/libc/0.2.101/download",
- type = "tar.gz",
- sha256 = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21",
- strip_prefix = "libc-0.2.101",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.libc-0.2.101.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__lock_api__0_3_4",
- url = "https://crates.io/api/v1/crates/lock_api/0.3.4/download",
- type = "tar.gz",
- sha256 = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75",
- strip_prefix = "lock_api-0.3.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.lock_api-0.3.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__log__0_4_14",
- url = "https://crates.io/api/v1/crates/log/0.4.14/download",
- type = "tar.gz",
- sha256 = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710",
- strip_prefix = "log-0.4.14",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.log-0.4.14.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__memchr__2_4_1",
- url = "https://crates.io/api/v1/crates/memchr/2.4.1/download",
- type = "tar.gz",
- sha256 = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a",
- strip_prefix = "memchr-2.4.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.memchr-2.4.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__memoffset__0_6_4",
- url = "https://crates.io/api/v1/crates/memoffset/0.6.4/download",
- type = "tar.gz",
- sha256 = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9",
- strip_prefix = "memoffset-0.6.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.memoffset-0.6.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__miniz_oxide__0_4_4",
- url = "https://crates.io/api/v1/crates/miniz_oxide/0.4.4/download",
- type = "tar.gz",
- sha256 = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b",
- strip_prefix = "miniz_oxide-0.4.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.miniz_oxide-0.4.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__num_cpus__1_13_0",
- url = "https://crates.io/api/v1/crates/num_cpus/1.13.0/download",
- type = "tar.gz",
- sha256 = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3",
- strip_prefix = "num_cpus-1.13.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.num_cpus-1.13.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__opaque_debug__0_3_0",
- url = "https://crates.io/api/v1/crates/opaque-debug/0.3.0/download",
- type = "tar.gz",
- sha256 = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5",
- strip_prefix = "opaque-debug-0.3.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.opaque-debug-0.3.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__parking_lot__0_10_2",
- url = "https://crates.io/api/v1/crates/parking_lot/0.10.2/download",
- type = "tar.gz",
- sha256 = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e",
- strip_prefix = "parking_lot-0.10.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.parking_lot-0.10.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__parking_lot_core__0_7_2",
- url = "https://crates.io/api/v1/crates/parking_lot_core/0.7.2/download",
- type = "tar.gz",
- sha256 = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3",
- strip_prefix = "parking_lot_core-0.7.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.parking_lot_core-0.7.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__pkg_config__0_3_19",
- url = "https://crates.io/api/v1/crates/pkg-config/0.3.19/download",
- type = "tar.gz",
- sha256 = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c",
- strip_prefix = "pkg-config-0.3.19",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.pkg-config-0.3.19.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__proc_macro2__1_0_29",
- url = "https://crates.io/api/v1/crates/proc-macro2/1.0.29/download",
- type = "tar.gz",
- sha256 = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d",
- strip_prefix = "proc-macro2-1.0.29",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.proc-macro2-1.0.29.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__quick_error__2_0_1",
- url = "https://crates.io/api/v1/crates/quick-error/2.0.1/download",
- type = "tar.gz",
- sha256 = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3",
- strip_prefix = "quick-error-2.0.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.quick-error-2.0.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__quote__1_0_9",
- url = "https://crates.io/api/v1/crates/quote/1.0.9/download",
- type = "tar.gz",
- sha256 = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7",
- strip_prefix = "quote-1.0.9",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.quote-1.0.9.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rand__0_4_6",
- url = "https://crates.io/api/v1/crates/rand/0.4.6/download",
- type = "tar.gz",
- sha256 = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293",
- strip_prefix = "rand-0.4.6",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rand-0.4.6.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rand_core__0_3_1",
- url = "https://crates.io/api/v1/crates/rand_core/0.3.1/download",
- type = "tar.gz",
- sha256 = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b",
- strip_prefix = "rand_core-0.3.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rand_core-0.3.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rand_core__0_4_2",
- url = "https://crates.io/api/v1/crates/rand_core/0.4.2/download",
- type = "tar.gz",
- sha256 = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc",
- strip_prefix = "rand_core-0.4.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rand_core-0.4.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rayon__1_5_1",
- url = "https://crates.io/api/v1/crates/rayon/1.5.1/download",
- type = "tar.gz",
- sha256 = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90",
- strip_prefix = "rayon-1.5.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rayon-1.5.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rayon_core__1_9_1",
- url = "https://crates.io/api/v1/crates/rayon-core/1.9.1/download",
- type = "tar.gz",
- sha256 = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e",
- strip_prefix = "rayon-core-1.9.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rayon-core-1.9.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rdrand__0_4_0",
- url = "https://crates.io/api/v1/crates/rdrand/0.4.0/download",
- type = "tar.gz",
- sha256 = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2",
- strip_prefix = "rdrand-0.4.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rdrand-0.4.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__redox_syscall__0_1_57",
- url = "https://crates.io/api/v1/crates/redox_syscall/0.1.57/download",
- type = "tar.gz",
- sha256 = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce",
- strip_prefix = "redox_syscall-0.1.57",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.redox_syscall-0.1.57.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__regex__1_5_4",
- url = "https://crates.io/api/v1/crates/regex/1.5.4/download",
- type = "tar.gz",
- sha256 = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461",
- strip_prefix = "regex-1.5.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.regex-1.5.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__regex_syntax__0_6_25",
- url = "https://crates.io/api/v1/crates/regex-syntax/0.6.25/download",
- type = "tar.gz",
- sha256 = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b",
- strip_prefix = "regex-syntax-0.6.25",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.regex-syntax-0.6.25.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__remove_dir_all__0_5_3",
- url = "https://crates.io/api/v1/crates/remove_dir_all/0.5.3/download",
- type = "tar.gz",
- sha256 = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7",
- strip_prefix = "remove_dir_all-0.5.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.remove_dir_all-0.5.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rls_analysis__0_18_2",
- url = "https://crates.io/api/v1/crates/rls-analysis/0.18.2/download",
- type = "tar.gz",
- sha256 = "3c3f485c06c41fd839ea396dd1491615a1286916ade1e3d3cc0b1e7146f5c424",
- strip_prefix = "rls-analysis-0.18.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rls-analysis-0.18.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rls_data__0_19_1",
- url = "https://crates.io/api/v1/crates/rls-data/0.19.1/download",
- type = "tar.gz",
- sha256 = "a58135eb039f3a3279a33779192f0ee78b56f57ae636e25cec83530e41debb99",
- strip_prefix = "rls-data-0.19.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rls-data-0.19.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__rls_span__0_5_4",
- url = "https://crates.io/api/v1/crates/rls-span/0.5.4/download",
- type = "tar.gz",
- sha256 = "b6e80f614ad4b37910bfe9b029af19c6f92612bb8e1af66e37d35829bf4ef6d1",
- strip_prefix = "rls-span-0.5.4",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.rls-span-0.5.4.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__ryu__1_0_5",
- url = "https://crates.io/api/v1/crates/ryu/1.0.5/download",
- type = "tar.gz",
- sha256 = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e",
- strip_prefix = "ryu-1.0.5",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.ryu-1.0.5.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__scopeguard__1_1_0",
- url = "https://crates.io/api/v1/crates/scopeguard/1.1.0/download",
- type = "tar.gz",
- sha256 = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd",
- strip_prefix = "scopeguard-1.1.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.scopeguard-1.1.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__serde__1_0_130",
- url = "https://crates.io/api/v1/crates/serde/1.0.130/download",
- type = "tar.gz",
- sha256 = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913",
- strip_prefix = "serde-1.0.130",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.serde-1.0.130.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__serde_derive__1_0_130",
- url = "https://crates.io/api/v1/crates/serde_derive/1.0.130/download",
- type = "tar.gz",
- sha256 = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b",
- strip_prefix = "serde_derive-1.0.130",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.serde_derive-1.0.130.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__serde_json__1_0_67",
- url = "https://crates.io/api/v1/crates/serde_json/1.0.67/download",
- type = "tar.gz",
- sha256 = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950",
- strip_prefix = "serde_json-1.0.67",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.serde_json-1.0.67.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__serial_test__0_4_0",
- url = "https://crates.io/api/v1/crates/serial_test/0.4.0/download",
- type = "tar.gz",
- sha256 = "fef5f7c7434b2f2c598adc6f9494648a1e41274a75c0ba4056f680ae0c117fd6",
- strip_prefix = "serial_test-0.4.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.serial_test-0.4.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__serial_test_derive__0_4_0",
- url = "https://crates.io/api/v1/crates/serial_test_derive/0.4.0/download",
- type = "tar.gz",
- sha256 = "d08338d8024b227c62bd68a12c7c9883f5c66780abaef15c550dc56f46ee6515",
- strip_prefix = "serial_test_derive-0.4.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.serial_test_derive-0.4.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__sha2__0_9_6",
- url = "https://crates.io/api/v1/crates/sha2/0.9.6/download",
- type = "tar.gz",
- sha256 = "9204c41a1597a8c5af23c82d1c921cb01ec0a4c59e07a9c7306062829a3903f3",
- strip_prefix = "sha2-0.9.6",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.sha2-0.9.6.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__smallvec__1_6_1",
- url = "https://crates.io/api/v1/crates/smallvec/1.6.1/download",
- type = "tar.gz",
- sha256 = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e",
- strip_prefix = "smallvec-1.6.1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.smallvec-1.6.1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__strsim__0_8_0",
- url = "https://crates.io/api/v1/crates/strsim/0.8.0/download",
- type = "tar.gz",
- sha256 = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a",
- strip_prefix = "strsim-0.8.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.strsim-0.8.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__syn__1_0_75",
- url = "https://crates.io/api/v1/crates/syn/1.0.75/download",
- type = "tar.gz",
- sha256 = "b7f58f7e8eaa0009c5fec437aabf511bd9933e4b2d7407bd05273c01a8906ea7",
- strip_prefix = "syn-1.0.75",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.syn-1.0.75.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__tempdir__0_3_7",
- url = "https://crates.io/api/v1/crates/tempdir/0.3.7/download",
- type = "tar.gz",
- sha256 = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8",
- strip_prefix = "tempdir-0.3.7",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.tempdir-0.3.7.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__textwrap__0_11_0",
- url = "https://crates.io/api/v1/crates/textwrap/0.11.0/download",
- type = "tar.gz",
- sha256 = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060",
- strip_prefix = "textwrap-0.11.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.textwrap-0.11.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__thiserror__1_0_28",
- url = "https://crates.io/api/v1/crates/thiserror/1.0.28/download",
- type = "tar.gz",
- sha256 = "283d5230e63df9608ac7d9691adc1dfb6e701225436eb64d0b9a7f0a5a04f6ec",
- strip_prefix = "thiserror-1.0.28",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.thiserror-1.0.28.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__thiserror_impl__1_0_28",
- url = "https://crates.io/api/v1/crates/thiserror-impl/1.0.28/download",
- type = "tar.gz",
- sha256 = "fa3884228611f5cd3608e2d409bf7dce832e4eb3135e3f11addbd7e41bd68e71",
- strip_prefix = "thiserror-impl-1.0.28",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.thiserror-impl-1.0.28.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__time__0_1_44",
- url = "https://crates.io/api/v1/crates/time/0.1.44/download",
- type = "tar.gz",
- sha256 = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255",
- strip_prefix = "time-0.1.44",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.time-0.1.44.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__typenum__1_14_0",
- url = "https://crates.io/api/v1/crates/typenum/1.14.0/download",
- type = "tar.gz",
- sha256 = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec",
- strip_prefix = "typenum-1.14.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.typenum-1.14.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__unicode_width__0_1_8",
- url = "https://crates.io/api/v1/crates/unicode-width/0.1.8/download",
- type = "tar.gz",
- sha256 = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3",
- strip_prefix = "unicode-width-0.1.8",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.unicode-width-0.1.8.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__unicode_xid__0_2_2",
- url = "https://crates.io/api/v1/crates/unicode-xid/0.2.2/download",
- type = "tar.gz",
- sha256 = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3",
- strip_prefix = "unicode-xid-0.2.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.unicode-xid-0.2.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__vec_map__0_8_2",
- url = "https://crates.io/api/v1/crates/vec_map/0.8.2/download",
- type = "tar.gz",
- sha256 = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191",
- strip_prefix = "vec_map-0.8.2",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.vec_map-0.8.2.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__version_check__0_9_3",
- url = "https://crates.io/api/v1/crates/version_check/0.9.3/download",
- type = "tar.gz",
- sha256 = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe",
- strip_prefix = "version_check-0.9.3",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.version_check-0.9.3.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__wasi__0_10_0_wasi_snapshot_preview1",
- url = "https://crates.io/api/v1/crates/wasi/0.10.0+wasi-snapshot-preview1/download",
- type = "tar.gz",
- sha256 = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f",
- strip_prefix = "wasi-0.10.0+wasi-snapshot-preview1",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__winapi__0_3_9",
- url = "https://crates.io/api/v1/crates/winapi/0.3.9/download",
- type = "tar.gz",
- sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
- strip_prefix = "winapi-0.3.9",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.winapi-0.3.9.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__winapi_i686_pc_windows_gnu__0_4_0",
- url = "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download",
- type = "tar.gz",
- sha256 = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
- strip_prefix = "winapi-i686-pc-windows-gnu-0.4.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__winapi_x86_64_pc_windows_gnu__0_4_0",
- url = "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download",
- type = "tar.gz",
- sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
- strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"),
- )
-
- maybe(
- http_archive,
- name = "raze__zip__0_5_13",
- url = "https://crates.io/api/v1/crates/zip/0.5.13/download",
- type = "tar.gz",
- sha256 = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815",
- strip_prefix = "zip-0.5.13",
- build_file = Label("//kythe/rust/cargo/remote:BUILD.zip-0.5.13.bazel"),
- )
diff --git a/kythe/rust/cargo/remote/BUILD.adler-1.0.2.bazel b/kythe/rust/cargo/remote/BUILD.adler-1.0.2.bazel
deleted file mode 100644
index 1e9d3e6dd..000000000
--- a/kythe/rust/cargo/remote/BUILD.adler-1.0.2.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "0BSD OR (MIT OR Apache-2.0)"
-])
-
-# Generated Targets
-
-# Unsupported target "bench" with type "bench" omitted
-
-rust_library(
- name = "adler",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.2",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.aho-corasick-0.7.18.bazel b/kythe/rust/cargo/remote/BUILD.aho-corasick-0.7.18.bazel
deleted file mode 100644
index 1a1f7f436..000000000
--- a/kythe/rust/cargo/remote/BUILD.aho-corasick-0.7.18.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "unencumbered", # Unlicense from expression "Unlicense OR MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "aho_corasick",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.7.18",
- # buildifier: leave-alone
- deps = [
- "@raze__memchr__2_4_1//:memchr",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.ansi_term-0.11.0.bazel b/kythe/rust/cargo/remote/BUILD.ansi_term-0.11.0.bazel
deleted file mode 100644
index 827945106..000000000
--- a/kythe/rust/cargo/remote/BUILD.ansi_term-0.11.0.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "colours" with type "example" omitted
-
-rust_library(
- name = "ansi_term",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.11.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.anyhow-1.0.43.bazel b/kythe/rust/cargo/remote/BUILD.anyhow-1.0.43.bazel
deleted file mode 100644
index be1ce0486..000000000
--- a/kythe/rust/cargo/remote/BUILD.anyhow-1.0.43.bazel
+++ /dev/null
@@ -1,113 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "anyhow_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.43",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "anyhow",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.43",
- # buildifier: leave-alone
- deps = [
- ":anyhow_build_script",
- ],
-)
-
-# Unsupported target "compiletest" with type "test" omitted
-
-# Unsupported target "test_autotrait" with type "test" omitted
-
-# Unsupported target "test_backtrace" with type "test" omitted
-
-# Unsupported target "test_boxed" with type "test" omitted
-
-# Unsupported target "test_chain" with type "test" omitted
-
-# Unsupported target "test_context" with type "test" omitted
-
-# Unsupported target "test_convert" with type "test" omitted
-
-# Unsupported target "test_downcast" with type "test" omitted
-
-# Unsupported target "test_ffi" with type "test" omitted
-
-# Unsupported target "test_fmt" with type "test" omitted
-
-# Unsupported target "test_macros" with type "test" omitted
-
-# Unsupported target "test_repr" with type "test" omitted
-
-# Unsupported target "test_source" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.atty-0.2.14.bazel b/kythe/rust/cargo/remote/BUILD.atty-0.2.14.bazel
deleted file mode 100644
index 2fef6ec9c..000000000
--- a/kythe/rust/cargo/remote/BUILD.atty-0.2.14.bazel
+++ /dev/null
@@ -1,66 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "atty" with type "example" omitted
-
-rust_library(
- name = "atty",
- srcs = glob(["**/*.rs"]),
- aliases = {
- },
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.2.14",
- # buildifier: leave-alone
- deps = [
- ] + selects.with_or({
- # cfg(unix)
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- "@raze__libc__0_2_101//:libc",
- ],
- "//conditions:default": [],
- }),
-)
diff --git a/kythe/rust/cargo/remote/BUILD.autocfg-1.0.1.bazel b/kythe/rust/cargo/remote/BUILD.autocfg-1.0.1.bazel
deleted file mode 100644
index 89f51bdce..000000000
--- a/kythe/rust/cargo/remote/BUILD.autocfg-1.0.1.bazel
+++ /dev/null
@@ -1,63 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "integers" with type "example" omitted
-
-# Unsupported target "paths" with type "example" omitted
-
-# Unsupported target "traits" with type "example" omitted
-
-# Unsupported target "versions" with type "example" omitted
-
-rust_library(
- name = "autocfg",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.1",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "rustflags" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.base64-0.13.0.bazel b/kythe/rust/cargo/remote/BUILD.base64-0.13.0.bazel
deleted file mode 100644
index 62045e302..000000000
--- a/kythe/rust/cargo/remote/BUILD.base64-0.13.0.bazel
+++ /dev/null
@@ -1,69 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "benchmarks" with type "bench" omitted
-
-# Unsupported target "base64" with type "example" omitted
-
-# Unsupported target "make_tables" with type "example" omitted
-
-rust_library(
- name = "base64",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.13.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "decode" with type "test" omitted
-
-# Unsupported target "encode" with type "test" omitted
-
-# Unsupported target "helpers" with type "test" omitted
-
-# Unsupported target "tests" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.bazel b/kythe/rust/cargo/remote/BUILD.bazel
deleted file mode 100644
index e69de29bb..000000000
--- a/kythe/rust/cargo/remote/BUILD.bazel
+++ /dev/null
diff --git a/kythe/rust/cargo/remote/BUILD.bitflags-1.3.2.bazel b/kythe/rust/cargo/remote/BUILD.bitflags-1.3.2.bazel
deleted file mode 100644
index 7c5f77434..000000000
--- a/kythe/rust/cargo/remote/BUILD.bitflags-1.3.2.bazel
+++ /dev/null
@@ -1,58 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "bitflags",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.3.2",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "basic" with type "test" omitted
-
-# Unsupported target "compile" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.block-buffer-0.9.0.bazel b/kythe/rust/cargo/remote/BUILD.block-buffer-0.9.0.bazel
deleted file mode 100644
index 3ed497df4..000000000
--- a/kythe/rust/cargo/remote/BUILD.block-buffer-0.9.0.bazel
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "block_buffer",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.0",
- # buildifier: leave-alone
- deps = [
- "@raze__generic_array__0_14_4//:generic_array",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.byteorder-1.4.3.bazel b/kythe/rust/cargo/remote/BUILD.byteorder-1.4.3.bazel
deleted file mode 100644
index 1b7893a19..000000000
--- a/kythe/rust/cargo/remote/BUILD.byteorder-1.4.3.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "unencumbered", # Unlicense from expression "Unlicense OR MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "bench" with type "bench" omitted
-
-rust_library(
- name = "byteorder",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.4.3",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.bzip2-0.4.3.bazel b/kythe/rust/cargo/remote/BUILD.bzip2-0.4.3.bazel
deleted file mode 100644
index ba9ba4de5..000000000
--- a/kythe/rust/cargo/remote/BUILD.bzip2-0.4.3.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "bzip2",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.3",
- # buildifier: leave-alone
- deps = [
- "@raze__bzip2_sys__0_1_11_1_0_8//:bzip2_sys",
- "@raze__libc__0_2_101//:libc",
- ],
-)
-
-# Unsupported target "tokio" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.bzip2-sys-0.1.11+1.0.8.bazel b/kythe/rust/cargo/remote/BUILD.bzip2-sys-0.1.11+1.0.8.bazel
deleted file mode 100644
index 5f5d0cf5e..000000000
--- a/kythe/rust/cargo/remote/BUILD.bzip2-sys-0.1.11+1.0.8.bazel
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "bzip2_sys_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- links = "bzip2",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.11+1.0.8",
- visibility = ["//visibility:private"],
- deps = [
- "@raze__cc__1_0_70//:cc",
- "@raze__pkg_config__0_3_19//:pkg_config",
- ],
-)
-
-rust_library(
- name = "bzip2_sys",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.11+1.0.8",
- # buildifier: leave-alone
- deps = [
- ":bzip2_sys_build_script",
- "@raze__libc__0_2_101//:libc",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.cc-1.0.70.bazel b/kythe/rust/cargo/remote/BUILD.cc-1.0.70.bazel
deleted file mode 100644
index 898a9c753..000000000
--- a/kythe/rust/cargo/remote/BUILD.cc-1.0.70.bazel
+++ /dev/null
@@ -1,85 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_binary(
- # Prefix bin name to disambiguate from (probable) collision with lib name
- # N.B.: The exact form of this is subject to change.
- name = "cargo_bin_gcc_shim",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/bin/gcc-shim.rs",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.70",
- # buildifier: leave-alone
- deps = [
- ":cc",
- ],
-)
-
-rust_library(
- name = "cc",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.70",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "cc_env" with type "test" omitted
-
-# Unsupported target "cflags" with type "test" omitted
-
-# Unsupported target "cxxflags" with type "test" omitted
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.cfg-if-0.1.10.bazel b/kythe/rust/cargo/remote/BUILD.cfg-if-0.1.10.bazel
deleted file mode 100644
index 737f77982..000000000
--- a/kythe/rust/cargo/remote/BUILD.cfg-if-0.1.10.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "cfg_if",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.10",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "xcrate" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.cfg-if-1.0.0.bazel b/kythe/rust/cargo/remote/BUILD.cfg-if-1.0.0.bazel
deleted file mode 100644
index 2a0db7554..000000000
--- a/kythe/rust/cargo/remote/BUILD.cfg-if-1.0.0.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "cfg_if",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "xcrate" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.clap-2.33.3.bazel b/kythe/rust/cargo/remote/BUILD.clap-2.33.3.bazel
deleted file mode 100644
index 03e2a105c..000000000
--- a/kythe/rust/cargo/remote/BUILD.clap-2.33.3.bazel
+++ /dev/null
@@ -1,77 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "clap",
- srcs = glob(["**/*.rs"]),
- aliases = {
- },
- crate_features = [
- "ansi_term",
- "atty",
- "color",
- "default",
- "strsim",
- "suggestions",
- "vec_map",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "2.33.3",
- # buildifier: leave-alone
- deps = [
- "@raze__atty__0_2_14//:atty",
- "@raze__bitflags__1_3_2//:bitflags",
- "@raze__strsim__0_8_0//:strsim",
- "@raze__textwrap__0_11_0//:textwrap",
- "@raze__unicode_width__0_1_8//:unicode_width",
- "@raze__vec_map__0_8_2//:vec_map",
- ] + selects.with_or({
- # cfg(not(windows))
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- "@raze__ansi_term__0_11_0//:ansi_term",
- ],
- "//conditions:default": [],
- }),
-)
diff --git a/kythe/rust/cargo/remote/BUILD.cloudabi-0.0.3.bazel b/kythe/rust/cargo/remote/BUILD.cloudabi-0.0.3.bazel
deleted file mode 100644
index ebdb9b130..000000000
--- a/kythe/rust/cargo/remote/BUILD.cloudabi-0.0.3.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "restricted", # BSD-2-Clause from expression "BSD-2-Clause"
-])
-
-# Generated Targets
-
-rust_library(
- name = "cloudabi",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "bitflags",
- "default",
- ],
- crate_root = "cloudabi.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.0.3",
- # buildifier: leave-alone
- deps = [
- "@raze__bitflags__1_3_2//:bitflags",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.colored-2.0.0.bazel b/kythe/rust/cargo/remote/BUILD.colored-2.0.0.bazel
deleted file mode 100644
index 68d76d7dd..000000000
--- a/kythe/rust/cargo/remote/BUILD.colored-2.0.0.bazel
+++ /dev/null
@@ -1,65 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "reciprocal", # MPL-2.0 from expression "MPL-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "control" with type "example" omitted
-
-# Unsupported target "dynamic_colors" with type "example" omitted
-
-# Unsupported target "most_simple" with type "example" omitted
-
-# Unsupported target "nested_colors" with type "example" omitted
-
-rust_library(
- name = "colored",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "2.0.0",
- # buildifier: leave-alone
- deps = [
- "@raze__atty__0_2_14//:atty",
- "@raze__lazy_static__1_4_0//:lazy_static",
- ],
-)
-
-# Unsupported target "ansi_term_compat" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.cpufeatures-0.2.1.bazel b/kythe/rust/cargo/remote/BUILD.cpufeatures-0.2.1.bazel
deleted file mode 100644
index 32dc1bed9..000000000
--- a/kythe/rust/cargo/remote/BUILD.cpufeatures-0.2.1.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "cpufeatures",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.2.1",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "aarch64" with type "test" omitted
-
-# Unsupported target "x86" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.crc32fast-1.2.1.bazel b/kythe/rust/cargo/remote/BUILD.crc32fast-1.2.1.bazel
deleted file mode 100644
index 95a7ee5c6..000000000
--- a/kythe/rust/cargo/remote/BUILD.crc32fast-1.2.1.bazel
+++ /dev/null
@@ -1,90 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "crc32fast_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.2.1",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-# Unsupported target "bench" with type "bench" omitted
-
-rust_library(
- name = "crc32fast",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.2.1",
- # buildifier: leave-alone
- deps = [
- ":crc32fast_build_script",
- "@raze__cfg_if__1_0_0//:cfg_if",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.crossbeam-channel-0.5.1.bazel b/kythe/rust/cargo/remote/BUILD.crossbeam-channel-0.5.1.bazel
deleted file mode 100644
index a1a0398ba..000000000
--- a/kythe/rust/cargo/remote/BUILD.crossbeam-channel-0.5.1.bazel
+++ /dev/null
@@ -1,94 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "crossbeam" with type "bench" omitted
-
-# Unsupported target "fibonacci" with type "example" omitted
-
-# Unsupported target "matching" with type "example" omitted
-
-# Unsupported target "stopwatch" with type "example" omitted
-
-rust_library(
- name = "crossbeam_channel",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "crossbeam-utils",
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.5.1",
- # buildifier: leave-alone
- deps = [
- "@raze__cfg_if__1_0_0//:cfg_if",
- "@raze__crossbeam_utils__0_8_5//:crossbeam_utils",
- ],
-)
-
-# Unsupported target "after" with type "test" omitted
-
-# Unsupported target "array" with type "test" omitted
-
-# Unsupported target "golang" with type "test" omitted
-
-# Unsupported target "iter" with type "test" omitted
-
-# Unsupported target "list" with type "test" omitted
-
-# Unsupported target "mpsc" with type "test" omitted
-
-# Unsupported target "never" with type "test" omitted
-
-# Unsupported target "ready" with type "test" omitted
-
-# Unsupported target "same_channel" with type "test" omitted
-
-# Unsupported target "select" with type "test" omitted
-
-# Unsupported target "select_macro" with type "test" omitted
-
-# Unsupported target "thread_locals" with type "test" omitted
-
-# Unsupported target "tick" with type "test" omitted
-
-# Unsupported target "zero" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.crossbeam-deque-0.8.1.bazel b/kythe/rust/cargo/remote/BUILD.crossbeam-deque-0.8.1.bazel
deleted file mode 100644
index f400be43c..000000000
--- a/kythe/rust/cargo/remote/BUILD.crossbeam-deque-0.8.1.bazel
+++ /dev/null
@@ -1,68 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "crossbeam_deque",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "crossbeam-epoch",
- "crossbeam-utils",
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.8.1",
- # buildifier: leave-alone
- deps = [
- "@raze__cfg_if__1_0_0//:cfg_if",
- "@raze__crossbeam_epoch__0_9_5//:crossbeam_epoch",
- "@raze__crossbeam_utils__0_8_5//:crossbeam_utils",
- ],
-)
-
-# Unsupported target "fifo" with type "test" omitted
-
-# Unsupported target "injector" with type "test" omitted
-
-# Unsupported target "lifo" with type "test" omitted
-
-# Unsupported target "steal" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.crossbeam-epoch-0.9.5.bazel b/kythe/rust/cargo/remote/BUILD.crossbeam-epoch-0.9.5.bazel
deleted file mode 100644
index fa444ad9e..000000000
--- a/kythe/rust/cargo/remote/BUILD.crossbeam-epoch-0.9.5.bazel
+++ /dev/null
@@ -1,104 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "crossbeam_epoch_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "alloc",
- "lazy_static",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.5",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-# Unsupported target "defer" with type "bench" omitted
-
-# Unsupported target "flush" with type "bench" omitted
-
-# Unsupported target "pin" with type "bench" omitted
-
-# Unsupported target "sanitize" with type "example" omitted
-
-rust_library(
- name = "crossbeam_epoch",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "alloc",
- "lazy_static",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.5",
- # buildifier: leave-alone
- deps = [
- ":crossbeam_epoch_build_script",
- "@raze__cfg_if__1_0_0//:cfg_if",
- "@raze__crossbeam_utils__0_8_5//:crossbeam_utils",
- "@raze__lazy_static__1_4_0//:lazy_static",
- "@raze__memoffset__0_6_4//:memoffset",
- "@raze__scopeguard__1_1_0//:scopeguard",
- ],
-)
-
-# Unsupported target "loom" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.crossbeam-utils-0.8.5.bazel b/kythe/rust/cargo/remote/BUILD.crossbeam-utils-0.8.5.bazel
deleted file mode 100644
index b006e3f33..000000000
--- a/kythe/rust/cargo/remote/BUILD.crossbeam-utils-0.8.5.bazel
+++ /dev/null
@@ -1,105 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "crossbeam_utils_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "lazy_static",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.8.5",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-# Unsupported target "atomic_cell" with type "bench" omitted
-
-rust_library(
- name = "crossbeam_utils",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "lazy_static",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.8.5",
- # buildifier: leave-alone
- deps = [
- ":crossbeam_utils_build_script",
- "@raze__cfg_if__1_0_0//:cfg_if",
- "@raze__lazy_static__1_4_0//:lazy_static",
- ],
-)
-
-# Unsupported target "atomic_cell" with type "test" omitted
-
-# Unsupported target "cache_padded" with type "test" omitted
-
-# Unsupported target "parker" with type "test" omitted
-
-# Unsupported target "sharded_lock" with type "test" omitted
-
-# Unsupported target "thread" with type "test" omitted
-
-# Unsupported target "wait_group" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.derive-new-0.5.9.bazel b/kythe/rust/cargo/remote/BUILD.derive-new-0.5.9.bazel
deleted file mode 100644
index 63718f8c0..000000000
--- a/kythe/rust/cargo/remote/BUILD.derive-new-0.5.9.bazel
+++ /dev/null
@@ -1,60 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "derive_new",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "proc-macro",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.5.9",
- # buildifier: leave-alone
- deps = [
- "@raze__proc_macro2__1_0_29//:proc_macro2",
- "@raze__quote__1_0_9//:quote",
- "@raze__syn__1_0_75//:syn",
- ],
-)
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.digest-0.9.0.bazel b/kythe/rust/cargo/remote/BUILD.digest-0.9.0.bazel
deleted file mode 100644
index d0bd07142..000000000
--- a/kythe/rust/cargo/remote/BUILD.digest-0.9.0.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "digest",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "alloc",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.0",
- # buildifier: leave-alone
- deps = [
- "@raze__generic_array__0_14_4//:generic_array",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.either-1.6.1.bazel b/kythe/rust/cargo/remote/BUILD.either-1.6.1.bazel
deleted file mode 100644
index 740bf3282..000000000
--- a/kythe/rust/cargo/remote/BUILD.either-1.6.1.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "either",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.6.1",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.flate2-1.0.21.bazel b/kythe/rust/cargo/remote/BUILD.flate2-1.0.21.bazel
deleted file mode 100644
index 489cd312e..000000000
--- a/kythe/rust/cargo/remote/BUILD.flate2-1.0.21.bazel
+++ /dev/null
@@ -1,115 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "compress_file" with type "example" omitted
-
-# Unsupported target "deflatedecoder-bufread" with type "example" omitted
-
-# Unsupported target "deflatedecoder-read" with type "example" omitted
-
-# Unsupported target "deflatedecoder-write" with type "example" omitted
-
-# Unsupported target "deflateencoder-bufread" with type "example" omitted
-
-# Unsupported target "deflateencoder-read" with type "example" omitted
-
-# Unsupported target "deflateencoder-write" with type "example" omitted
-
-# Unsupported target "gzbuilder" with type "example" omitted
-
-# Unsupported target "gzdecoder-bufread" with type "example" omitted
-
-# Unsupported target "gzdecoder-read" with type "example" omitted
-
-# Unsupported target "gzdecoder-write" with type "example" omitted
-
-# Unsupported target "gzencoder-bufread" with type "example" omitted
-
-# Unsupported target "gzencoder-read" with type "example" omitted
-
-# Unsupported target "gzencoder-write" with type "example" omitted
-
-# Unsupported target "gzmultidecoder-bufread" with type "example" omitted
-
-# Unsupported target "gzmultidecoder-read" with type "example" omitted
-
-# Unsupported target "zlibdecoder-bufread" with type "example" omitted
-
-# Unsupported target "zlibdecoder-read" with type "example" omitted
-
-# Unsupported target "zlibdecoder-write" with type "example" omitted
-
-# Unsupported target "zlibencoder-bufread" with type "example" omitted
-
-# Unsupported target "zlibencoder-read" with type "example" omitted
-
-# Unsupported target "zlibencoder-write" with type "example" omitted
-
-rust_library(
- name = "flate2",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "miniz_oxide",
- "rust_backend",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.21",
- # buildifier: leave-alone
- deps = [
- "@raze__cfg_if__1_0_0//:cfg_if",
- "@raze__crc32fast__1_2_1//:crc32fast",
- "@raze__libc__0_2_101//:libc",
- "@raze__miniz_oxide__0_4_4//:miniz_oxide",
- ],
-)
-
-# Unsupported target "async-reader" with type "test" omitted
-
-# Unsupported target "early-flush" with type "test" omitted
-
-# Unsupported target "empty-read" with type "test" omitted
-
-# Unsupported target "gunzip" with type "test" omitted
-
-# Unsupported target "tokio" with type "test" omitted
-
-# Unsupported target "zero-write" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.fst-0.4.7.bazel b/kythe/rust/cargo/remote/BUILD.fst-0.4.7.bazel
deleted file mode 100644
index 2d265b692..000000000
--- a/kythe/rust/cargo/remote/BUILD.fst-0.4.7.bazel
+++ /dev/null
@@ -1,85 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "unencumbered", # Unlicense from expression "Unlicense OR MIT"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "fst_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.7",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "fst",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.7",
- # buildifier: leave-alone
- deps = [
- ":fst_build_script",
- ],
-)
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.fuchsia-cprng-0.1.1.bazel b/kythe/rust/cargo/remote/BUILD.fuchsia-cprng-0.1.1.bazel
deleted file mode 100644
index 7bf4824c8..000000000
--- a/kythe/rust/cargo/remote/BUILD.fuchsia-cprng-0.1.1.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "restricted", # no license
-])
-
-# Generated Targets
-
-rust_library(
- name = "fuchsia_cprng",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.1",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.generic-array-0.14.4.bazel b/kythe/rust/cargo/remote/BUILD.generic-array-0.14.4.bazel
deleted file mode 100644
index 147399f95..000000000
--- a/kythe/rust/cargo/remote/BUILD.generic-array-0.14.4.bazel
+++ /dev/null
@@ -1,97 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "generic_array_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.14.4",
- visibility = ["//visibility:private"],
- deps = [
- "@raze__version_check__0_9_3//:version_check",
- ],
-)
-
-rust_library(
- name = "generic_array",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.14.4",
- # buildifier: leave-alone
- deps = [
- ":generic_array_build_script",
- "@raze__typenum__1_14_0//:typenum",
- ],
-)
-
-# Unsupported target "arr" with type "test" omitted
-
-# Unsupported target "generics" with type "test" omitted
-
-# Unsupported target "hex" with type "test" omitted
-
-# Unsupported target "import_name" with type "test" omitted
-
-# Unsupported target "iter" with type "test" omitted
-
-# Unsupported target "mod" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.hermit-abi-0.1.19.bazel b/kythe/rust/cargo/remote/BUILD.hermit-abi-0.1.19.bazel
deleted file mode 100644
index 5973876a5..000000000
--- a/kythe/rust/cargo/remote/BUILD.hermit-abi-0.1.19.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "hermit_abi",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.19",
- # buildifier: leave-alone
- deps = [
- "@raze__libc__0_2_101//:libc",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.hex-0.4.3.bazel b/kythe/rust/cargo/remote/BUILD.hex-0.4.3.bazel
deleted file mode 100644
index 6fb70627a..000000000
--- a/kythe/rust/cargo/remote/BUILD.hex-0.4.3.bazel
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "hex" with type "bench" omitted
-
-rust_library(
- name = "hex",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "alloc",
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.3",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "serde" with type "test" omitted
-
-# Unsupported target "version-number" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.itertools-0.9.0.bazel b/kythe/rust/cargo/remote/BUILD.itertools-0.9.0.bazel
deleted file mode 100644
index c32b0b194..000000000
--- a/kythe/rust/cargo/remote/BUILD.itertools-0.9.0.bazel
+++ /dev/null
@@ -1,90 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "bench1" with type "bench" omitted
-
-# Unsupported target "combinations_with_replacement" with type "bench" omitted
-
-# Unsupported target "fold_specialization" with type "bench" omitted
-
-# Unsupported target "tree_fold1" with type "bench" omitted
-
-# Unsupported target "tuple_combinations" with type "bench" omitted
-
-# Unsupported target "tuples" with type "bench" omitted
-
-# Unsupported target "iris" with type "example" omitted
-
-rust_library(
- name = "itertools",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "use_std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.0",
- # buildifier: leave-alone
- deps = [
- "@raze__either__1_6_1//:either",
- ],
-)
-
-# Unsupported target "adaptors_no_collect" with type "test" omitted
-
-# Unsupported target "fold_specialization" with type "test" omitted
-
-# Unsupported target "merge_join" with type "test" omitted
-
-# Unsupported target "peeking_take_while" with type "test" omitted
-
-# Unsupported target "quick" with type "test" omitted
-
-# Unsupported target "specializations" with type "test" omitted
-
-# Unsupported target "test_core" with type "test" omitted
-
-# Unsupported target "test_std" with type "test" omitted
-
-# Unsupported target "tuples" with type "test" omitted
-
-# Unsupported target "zip" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.itoa-0.4.8.bazel b/kythe/rust/cargo/remote/BUILD.itoa-0.4.8.bazel
deleted file mode 100644
index f34494a22..000000000
--- a/kythe/rust/cargo/remote/BUILD.itoa-0.4.8.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "bench" with type "bench" omitted
-
-rust_library(
- name = "itoa",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.8",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.json-0.12.4.bazel b/kythe/rust/cargo/remote/BUILD.json-0.12.4.bazel
deleted file mode 100644
index d0c3b1b3a..000000000
--- a/kythe/rust/cargo/remote/BUILD.json-0.12.4.bazel
+++ /dev/null
@@ -1,69 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "log" with type "bench" omitted
-
-rust_library(
- name = "json",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.12.4",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "customgen" with type "test" omitted
-
-# Unsupported target "json_checker" with type "test" omitted
-
-# Unsupported target "number" with type "test" omitted
-
-# Unsupported target "parse" with type "test" omitted
-
-# Unsupported target "print_dec" with type "test" omitted
-
-# Unsupported target "stringify" with type "test" omitted
-
-# Unsupported target "value" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.lazy_static-1.4.0.bazel b/kythe/rust/cargo/remote/BUILD.lazy_static-1.4.0.bazel
deleted file mode 100644
index eabb628b4..000000000
--- a/kythe/rust/cargo/remote/BUILD.lazy_static-1.4.0.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "lazy_static",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.4.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "no_std" with type "test" omitted
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.libc-0.2.101.bazel b/kythe/rust/cargo/remote/BUILD.libc-0.2.101.bazel
deleted file mode 100644
index 72c51901d..000000000
--- a/kythe/rust/cargo/remote/BUILD.libc-0.2.101.bazel
+++ /dev/null
@@ -1,89 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "libc_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.2.101",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "libc",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.2.101",
- # buildifier: leave-alone
- deps = [
- ":libc_build_script",
- ],
-)
-
-# Unsupported target "const_fn" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.lock_api-0.3.4.bazel b/kythe/rust/cargo/remote/BUILD.lock_api-0.3.4.bazel
deleted file mode 100644
index ff5eeba6a..000000000
--- a/kythe/rust/cargo/remote/BUILD.lock_api-0.3.4.bazel
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "lock_api",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.4",
- # buildifier: leave-alone
- deps = [
- "@raze__scopeguard__1_1_0//:scopeguard",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.log-0.4.14.bazel b/kythe/rust/cargo/remote/BUILD.log-0.4.14.bazel
deleted file mode 100644
index d17fa9c37..000000000
--- a/kythe/rust/cargo/remote/BUILD.log-0.4.14.bazel
+++ /dev/null
@@ -1,90 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "log_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.14",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-# Unsupported target "value" with type "bench" omitted
-
-rust_library(
- name = "log",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.14",
- # buildifier: leave-alone
- deps = [
- ":log_build_script",
- "@raze__cfg_if__1_0_0//:cfg_if",
- ],
-)
-
-# Unsupported target "filters" with type "test" omitted
-
-# Unsupported target "macros" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.memchr-2.4.1.bazel b/kythe/rust/cargo/remote/BUILD.memchr-2.4.1.bazel
deleted file mode 100644
index 3032bbf1d..000000000
--- a/kythe/rust/cargo/remote/BUILD.memchr-2.4.1.bazel
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "unencumbered", # Unlicense from expression "Unlicense OR MIT"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "memchr_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "2.4.1",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "memchr",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "2.4.1",
- # buildifier: leave-alone
- deps = [
- ":memchr_build_script",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.memoffset-0.6.4.bazel b/kythe/rust/cargo/remote/BUILD.memoffset-0.6.4.bazel
deleted file mode 100644
index 4df510a94..000000000
--- a/kythe/rust/cargo/remote/BUILD.memoffset-0.6.4.bazel
+++ /dev/null
@@ -1,86 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "memoffset_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.6.4",
- visibility = ["//visibility:private"],
- deps = [
- "@raze__autocfg__1_0_1//:autocfg",
- ],
-)
-
-rust_library(
- name = "memoffset",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.6.4",
- # buildifier: leave-alone
- deps = [
- ":memoffset_build_script",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.miniz_oxide-0.4.4.bazel b/kythe/rust/cargo/remote/BUILD.miniz_oxide-0.4.4.bazel
deleted file mode 100644
index 277be853d..000000000
--- a/kythe/rust/cargo/remote/BUILD.miniz_oxide-0.4.4.bazel
+++ /dev/null
@@ -1,85 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR (Zlib OR Apache-2.0)"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "miniz_oxide_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.4",
- visibility = ["//visibility:private"],
- deps = [
- "@raze__autocfg__1_0_1//:autocfg",
- ],
-)
-
-rust_library(
- name = "miniz_oxide",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.4",
- # buildifier: leave-alone
- deps = [
- ":miniz_oxide_build_script",
- "@raze__adler__1_0_2//:adler",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.num_cpus-1.13.0.bazel b/kythe/rust/cargo/remote/BUILD.num_cpus-1.13.0.bazel
deleted file mode 100644
index b48e4b6ef..000000000
--- a/kythe/rust/cargo/remote/BUILD.num_cpus-1.13.0.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "values" with type "example" omitted
-
-rust_library(
- name = "num_cpus",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.13.0",
- # buildifier: leave-alone
- deps = [
- "@raze__libc__0_2_101//:libc",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.opaque-debug-0.3.0.bazel b/kythe/rust/cargo/remote/BUILD.opaque-debug-0.3.0.bazel
deleted file mode 100644
index 31b57a9c3..000000000
--- a/kythe/rust/cargo/remote/BUILD.opaque-debug-0.3.0.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "opaque_debug",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "mod" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.parking_lot-0.10.2.bazel b/kythe/rust/cargo/remote/BUILD.parking_lot-0.10.2.bazel
deleted file mode 100644
index 3f435ef9a..000000000
--- a/kythe/rust/cargo/remote/BUILD.parking_lot-0.10.2.bazel
+++ /dev/null
@@ -1,58 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "parking_lot",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.10.2",
- # buildifier: leave-alone
- deps = [
- "@raze__lock_api__0_3_4//:lock_api",
- "@raze__parking_lot_core__0_7_2//:parking_lot_core",
- ],
-)
-
-# Unsupported target "issue_203" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.parking_lot_core-0.7.2.bazel b/kythe/rust/cargo/remote/BUILD.parking_lot_core-0.7.2.bazel
deleted file mode 100644
index d023997ae..000000000
--- a/kythe/rust/cargo/remote/BUILD.parking_lot_core-0.7.2.bazel
+++ /dev/null
@@ -1,66 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "parking_lot_core",
- srcs = glob(["**/*.rs"]),
- aliases = {
- },
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.7.2",
- # buildifier: leave-alone
- deps = [
- "@raze__cfg_if__0_1_10//:cfg_if",
- "@raze__smallvec__1_6_1//:smallvec",
- ] + selects.with_or({
- # cfg(unix)
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- "@raze__libc__0_2_101//:libc",
- ],
- "//conditions:default": [],
- }),
-)
diff --git a/kythe/rust/cargo/remote/BUILD.pkg-config-0.3.19.bazel b/kythe/rust/cargo/remote/BUILD.pkg-config-0.3.19.bazel
deleted file mode 100644
index 5bd2fa5a7..000000000
--- a/kythe/rust/cargo/remote/BUILD.pkg-config-0.3.19.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "pkg_config",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.19",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.proc-macro2-1.0.29.bazel b/kythe/rust/cargo/remote/BUILD.proc-macro2-1.0.29.bazel
deleted file mode 100644
index 55c305667..000000000
--- a/kythe/rust/cargo/remote/BUILD.proc-macro2-1.0.29.bazel
+++ /dev/null
@@ -1,98 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "proc_macro2_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "proc-macro",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.29",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "proc_macro2",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "proc-macro",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.29",
- # buildifier: leave-alone
- deps = [
- ":proc_macro2_build_script",
- "@raze__unicode_xid__0_2_2//:unicode_xid",
- ],
-)
-
-# Unsupported target "comments" with type "test" omitted
-
-# Unsupported target "features" with type "test" omitted
-
-# Unsupported target "marker" with type "test" omitted
-
-# Unsupported target "test" with type "test" omitted
-
-# Unsupported target "test_fmt" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.quick-error-2.0.1.bazel b/kythe/rust/cargo/remote/BUILD.quick-error-2.0.1.bazel
deleted file mode 100644
index b349ae28d..000000000
--- a/kythe/rust/cargo/remote/BUILD.quick-error-2.0.1.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "context" with type "example" omitted
-
-rust_library(
- name = "quick_error",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "2.0.1",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.quote-1.0.9.bazel b/kythe/rust/cargo/remote/BUILD.quote-1.0.9.bazel
deleted file mode 100644
index 7ee5fe9f3..000000000
--- a/kythe/rust/cargo/remote/BUILD.quote-1.0.9.bazel
+++ /dev/null
@@ -1,60 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "quote",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "proc-macro",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.9",
- # buildifier: leave-alone
- deps = [
- "@raze__proc_macro2__1_0_29//:proc_macro2",
- ],
-)
-
-# Unsupported target "compiletest" with type "test" omitted
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.rand-0.4.6.bazel b/kythe/rust/cargo/remote/BUILD.rand-0.4.6.bazel
deleted file mode 100644
index 41153ffd5..000000000
--- a/kythe/rust/cargo/remote/BUILD.rand-0.4.6.bazel
+++ /dev/null
@@ -1,73 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "bench" with type "bench" omitted
-
-# Unsupported target "generators" with type "bench" omitted
-
-# Unsupported target "misc" with type "bench" omitted
-
-rust_library(
- name = "rand",
- srcs = glob(["**/*.rs"]),
- aliases = {
- },
- crate_features = [
- "default",
- "libc",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.6",
- # buildifier: leave-alone
- deps = [
- ] + selects.with_or({
- # cfg(unix)
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- "@raze__libc__0_2_101//:libc",
- ],
- "//conditions:default": [],
- }),
-)
diff --git a/kythe/rust/cargo/remote/BUILD.rand_core-0.3.1.bazel b/kythe/rust/cargo/remote/BUILD.rand_core-0.3.1.bazel
deleted file mode 100644
index 4536e0b38..000000000
--- a/kythe/rust/cargo/remote/BUILD.rand_core-0.3.1.bazel
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "rand_core",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.1",
- # buildifier: leave-alone
- deps = [
- "@raze__rand_core__0_4_2//:rand_core",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.rand_core-0.4.2.bazel b/kythe/rust/cargo/remote/BUILD.rand_core-0.4.2.bazel
deleted file mode 100644
index 6a9b1a892..000000000
--- a/kythe/rust/cargo/remote/BUILD.rand_core-0.4.2.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "rand_core",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.2",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.rayon-1.5.1.bazel b/kythe/rust/cargo/remote/BUILD.rayon-1.5.1.bazel
deleted file mode 100644
index 836626230..000000000
--- a/kythe/rust/cargo/remote/BUILD.rayon-1.5.1.bazel
+++ /dev/null
@@ -1,117 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "rayon_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.5.1",
- visibility = ["//visibility:private"],
- deps = [
- "@raze__autocfg__1_0_1//:autocfg",
- ],
-)
-
-# Unsupported target "cpu_monitor" with type "example" omitted
-
-rust_library(
- name = "rayon",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.5.1",
- # buildifier: leave-alone
- deps = [
- ":rayon_build_script",
- "@raze__crossbeam_deque__0_8_1//:crossbeam_deque",
- "@raze__either__1_6_1//:either",
- "@raze__rayon_core__1_9_1//:rayon_core",
- ],
-)
-
-# Unsupported target "chars" with type "test" omitted
-
-# Unsupported target "clones" with type "test" omitted
-
-# Unsupported target "collect" with type "test" omitted
-
-# Unsupported target "cross-pool" with type "test" omitted
-
-# Unsupported target "debug" with type "test" omitted
-
-# Unsupported target "intersperse" with type "test" omitted
-
-# Unsupported target "issue671" with type "test" omitted
-
-# Unsupported target "issue671-unzip" with type "test" omitted
-
-# Unsupported target "iter_panic" with type "test" omitted
-
-# Unsupported target "named-threads" with type "test" omitted
-
-# Unsupported target "octillion" with type "test" omitted
-
-# Unsupported target "producer_split_at" with type "test" omitted
-
-# Unsupported target "sort-panic-safe" with type "test" omitted
-
-# Unsupported target "str" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.rayon-core-1.9.1.bazel b/kythe/rust/cargo/remote/BUILD.rayon-core-1.9.1.bazel
deleted file mode 100644
index 061c396ae..000000000
--- a/kythe/rust/cargo/remote/BUILD.rayon-core-1.9.1.bazel
+++ /dev/null
@@ -1,119 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "rayon_core_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- links = "rayon-core",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.9.1",
- visibility = ["//visibility:private"],
- deps = [
- ] + selects.with_or({
- # cfg(unix)
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- ],
- "//conditions:default": [],
- }),
-)
-
-rust_library(
- name = "rayon_core",
- srcs = glob(["**/*.rs"]),
- aliases = {
- },
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.9.1",
- # buildifier: leave-alone
- deps = [
- ":rayon_core_build_script",
- "@raze__crossbeam_channel__0_5_1//:crossbeam_channel",
- "@raze__crossbeam_deque__0_8_1//:crossbeam_deque",
- "@raze__crossbeam_utils__0_8_5//:crossbeam_utils",
- "@raze__lazy_static__1_4_0//:lazy_static",
- "@raze__num_cpus__1_13_0//:num_cpus",
- ] + selects.with_or({
- # cfg(unix)
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- ],
- "//conditions:default": [],
- }),
-)
-
-# Unsupported target "double_init_fail" with type "test" omitted
-
-# Unsupported target "init_zero_threads" with type "test" omitted
-
-# Unsupported target "scope_join" with type "test" omitted
-
-# Unsupported target "scoped_threadpool" with type "test" omitted
-
-# Unsupported target "simple_panic" with type "test" omitted
-
-# Unsupported target "stack_overflow_crash" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.rdrand-0.4.0.bazel b/kythe/rust/cargo/remote/BUILD.rdrand-0.4.0.bazel
deleted file mode 100644
index 913e291d0..000000000
--- a/kythe/rust/cargo/remote/BUILD.rdrand-0.4.0.bazel
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # ISC from expression "ISC"
-])
-
-# Generated Targets
-
-# Unsupported target "rdrand" with type "bench" omitted
-
-# Unsupported target "rdseed" with type "bench" omitted
-
-# Unsupported target "std" with type "bench" omitted
-
-rust_library(
- name = "rdrand",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- # buildifier: leave-alone
- deps = [
- "@raze__rand_core__0_3_1//:rand_core",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.redox_syscall-0.1.57.bazel b/kythe/rust/cargo/remote/BUILD.redox_syscall-0.1.57.bazel
deleted file mode 100644
index 450af3f5a..000000000
--- a/kythe/rust/cargo/remote/BUILD.redox_syscall-0.1.57.bazel
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-alias(
- name = "redox_syscall",
- actual = ":syscall",
- tags = [
- "cargo-raze",
- "manual",
- ],
-)
-
-rust_library(
- name = "syscall",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.57",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.regex-1.5.4.bazel b/kythe/rust/cargo/remote/BUILD.regex-1.5.4.bazel
deleted file mode 100644
index 2fd224bad..000000000
--- a/kythe/rust/cargo/remote/BUILD.regex-1.5.4.bazel
+++ /dev/null
@@ -1,103 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "shootout-regex-dna" with type "example" omitted
-
-# Unsupported target "shootout-regex-dna-bytes" with type "example" omitted
-
-# Unsupported target "shootout-regex-dna-cheat" with type "example" omitted
-
-# Unsupported target "shootout-regex-dna-replace" with type "example" omitted
-
-# Unsupported target "shootout-regex-dna-single" with type "example" omitted
-
-# Unsupported target "shootout-regex-dna-single-cheat" with type "example" omitted
-
-rust_library(
- name = "regex",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "aho-corasick",
- "default",
- "memchr",
- "perf",
- "perf-cache",
- "perf-dfa",
- "perf-inline",
- "perf-literal",
- "std",
- "unicode",
- "unicode-age",
- "unicode-bool",
- "unicode-case",
- "unicode-gencat",
- "unicode-perl",
- "unicode-script",
- "unicode-segment",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.5.4",
- # buildifier: leave-alone
- deps = [
- "@raze__aho_corasick__0_7_18//:aho_corasick",
- "@raze__memchr__2_4_1//:memchr",
- "@raze__regex_syntax__0_6_25//:regex_syntax",
- ],
-)
-
-# Unsupported target "backtrack" with type "test" omitted
-
-# Unsupported target "backtrack-bytes" with type "test" omitted
-
-# Unsupported target "backtrack-utf8bytes" with type "test" omitted
-
-# Unsupported target "crates-regex" with type "test" omitted
-
-# Unsupported target "default" with type "test" omitted
-
-# Unsupported target "default-bytes" with type "test" omitted
-
-# Unsupported target "nfa" with type "test" omitted
-
-# Unsupported target "nfa-bytes" with type "test" omitted
-
-# Unsupported target "nfa-utf8bytes" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.regex-syntax-0.6.25.bazel b/kythe/rust/cargo/remote/BUILD.regex-syntax-0.6.25.bazel
deleted file mode 100644
index 0370785ea..000000000
--- a/kythe/rust/cargo/remote/BUILD.regex-syntax-0.6.25.bazel
+++ /dev/null
@@ -1,64 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "bench" with type "bench" omitted
-
-rust_library(
- name = "regex_syntax",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "unicode",
- "unicode-age",
- "unicode-bool",
- "unicode-case",
- "unicode-gencat",
- "unicode-perl",
- "unicode-script",
- "unicode-segment",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.6.25",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.remove_dir_all-0.5.3.bazel b/kythe/rust/cargo/remote/BUILD.remove_dir_all-0.5.3.bazel
deleted file mode 100644
index 967f36fd2..000000000
--- a/kythe/rust/cargo/remote/BUILD.remove_dir_all-0.5.3.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "remove_dir_all",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.5.3",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.rls-analysis-0.18.2.bazel b/kythe/rust/cargo/remote/BUILD.rls-analysis-0.18.2.bazel
deleted file mode 100644
index 829e2fee7..000000000
--- a/kythe/rust/cargo/remote/BUILD.rls-analysis-0.18.2.bazel
+++ /dev/null
@@ -1,69 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "std_api_crate" with type "bench" omitted
-
-# Unsupported target "print-crate-id" with type "example" omitted
-
-rust_library(
- name = "rls_analysis",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- proc_macro_deps = [
- "@raze__derive_new__0_5_9//:derive_new",
- ],
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.18.2",
- # buildifier: leave-alone
- deps = [
- "@raze__fst__0_4_7//:fst",
- "@raze__itertools__0_9_0//:itertools",
- "@raze__json__0_12_4//:json",
- "@raze__log__0_4_14//:log",
- "@raze__rls_data__0_19_1//:rls_data",
- "@raze__rls_span__0_5_4//:rls_span",
- "@raze__serde__1_0_130//:serde",
- "@raze__serde_json__1_0_67//:serde_json",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.rls-data-0.19.1.bazel b/kythe/rust/cargo/remote/BUILD.rls-data-0.19.1.bazel
deleted file mode 100644
index e6b876a0f..000000000
--- a/kythe/rust/cargo/remote/BUILD.rls-data-0.19.1.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "rls_data",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "derive",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.19.1",
- # buildifier: leave-alone
- deps = [
- "@raze__rls_span__0_5_4//:rls_span",
- "@raze__serde__1_0_130//:serde",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.rls-span-0.5.4.bazel b/kythe/rust/cargo/remote/BUILD.rls-span-0.5.4.bazel
deleted file mode 100644
index 1a1140019..000000000
--- a/kythe/rust/cargo/remote/BUILD.rls-span-0.5.4.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "rls_span",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "derive",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.5.4",
- # buildifier: leave-alone
- deps = [
- "@raze__serde__1_0_130//:serde",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.ryu-1.0.5.bazel b/kythe/rust/cargo/remote/BUILD.ryu-1.0.5.bazel
deleted file mode 100644
index 7a93f6d84..000000000
--- a/kythe/rust/cargo/remote/BUILD.ryu-1.0.5.bazel
+++ /dev/null
@@ -1,101 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR BSL-1.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "ryu_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.5",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-# Unsupported target "bench" with type "bench" omitted
-
-# Unsupported target "upstream_benchmark" with type "example" omitted
-
-rust_library(
- name = "ryu",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.5",
- # buildifier: leave-alone
- deps = [
- ":ryu_build_script",
- ],
-)
-
-# Unsupported target "common_test" with type "test" omitted
-
-# Unsupported target "d2s_table_test" with type "test" omitted
-
-# Unsupported target "d2s_test" with type "test" omitted
-
-# Unsupported target "exhaustive" with type "test" omitted
-
-# Unsupported target "f2s_test" with type "test" omitted
-
-# Unsupported target "s2d_test" with type "test" omitted
-
-# Unsupported target "s2f_test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.scopeguard-1.1.0.bazel b/kythe/rust/cargo/remote/BUILD.scopeguard-1.1.0.bazel
deleted file mode 100644
index f9d90599a..000000000
--- a/kythe/rust/cargo/remote/BUILD.scopeguard-1.1.0.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "readme" with type "example" omitted
-
-rust_library(
- name = "scopeguard",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.1.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.serde-1.0.130.bazel b/kythe/rust/cargo/remote/BUILD.serde-1.0.130.bazel
deleted file mode 100644
index 38ed2af97..000000000
--- a/kythe/rust/cargo/remote/BUILD.serde-1.0.130.bazel
+++ /dev/null
@@ -1,94 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "serde_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "derive",
- "serde_derive",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.130",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "serde",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "derive",
- "serde_derive",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- proc_macro_deps = [
- "@raze__serde_derive__1_0_130//:serde_derive",
- ],
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.130",
- # buildifier: leave-alone
- deps = [
- ":serde_build_script",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.serde_derive-1.0.130.bazel b/kythe/rust/cargo/remote/BUILD.serde_derive-1.0.130.bazel
deleted file mode 100644
index b73e15286..000000000
--- a/kythe/rust/cargo/remote/BUILD.serde_derive-1.0.130.bazel
+++ /dev/null
@@ -1,88 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "serde_derive_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.130",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "serde_derive",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "proc-macro",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.130",
- # buildifier: leave-alone
- deps = [
- ":serde_derive_build_script",
- "@raze__proc_macro2__1_0_29//:proc_macro2",
- "@raze__quote__1_0_9//:quote",
- "@raze__syn__1_0_75//:syn",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.serde_json-1.0.67.bazel b/kythe/rust/cargo/remote/BUILD.serde_json-1.0.67.bazel
deleted file mode 100644
index 2e8ed69b0..000000000
--- a/kythe/rust/cargo/remote/BUILD.serde_json-1.0.67.bazel
+++ /dev/null
@@ -1,90 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "serde_json_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.67",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "serde_json",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.67",
- # buildifier: leave-alone
- deps = [
- ":serde_json_build_script",
- "@raze__itoa__0_4_8//:itoa",
- "@raze__ryu__1_0_5//:ryu",
- "@raze__serde__1_0_130//:serde",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.serial_test-0.4.0.bazel b/kythe/rust/cargo/remote/BUILD.serial_test-0.4.0.bazel
deleted file mode 100644
index 9c23559bd..000000000
--- a/kythe/rust/cargo/remote/BUILD.serial_test-0.4.0.bazel
+++ /dev/null
@@ -1,60 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "serial_test",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- proc_macro_deps = [
- "@raze__serial_test_derive__0_4_0//:serial_test_derive",
- ],
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- # buildifier: leave-alone
- deps = [
- "@raze__lazy_static__1_4_0//:lazy_static",
- "@raze__parking_lot__0_10_2//:parking_lot",
- ],
-)
-
-# Unsupported target "tests" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.serial_test_derive-0.4.0.bazel b/kythe/rust/cargo/remote/BUILD.serial_test_derive-0.4.0.bazel
deleted file mode 100644
index 74f355ecc..000000000
--- a/kythe/rust/cargo/remote/BUILD.serial_test_derive-0.4.0.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-rust_library(
- name = "serial_test_derive",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "proc-macro",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- # buildifier: leave-alone
- deps = [
- "@raze__proc_macro2__1_0_29//:proc_macro2",
- "@raze__quote__1_0_9//:quote",
- "@raze__syn__1_0_75//:syn",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.sha2-0.9.6.bazel b/kythe/rust/cargo/remote/BUILD.sha2-0.9.6.bazel
deleted file mode 100644
index 56eb974e2..000000000
--- a/kythe/rust/cargo/remote/BUILD.sha2-0.9.6.bazel
+++ /dev/null
@@ -1,80 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "sha256" with type "bench" omitted
-
-# Unsupported target "sha512" with type "bench" omitted
-
-# Unsupported target "sha256sum" with type "example" omitted
-
-# Unsupported target "sha512sum" with type "example" omitted
-
-rust_library(
- name = "sha2",
- srcs = glob(["**/*.rs"]),
- aliases = {
- },
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.6",
- # buildifier: leave-alone
- deps = [
- "@raze__block_buffer__0_9_0//:block_buffer",
- "@raze__cfg_if__1_0_0//:cfg_if",
- "@raze__digest__0_9_0//:digest",
- "@raze__opaque_debug__0_3_0//:opaque_debug",
- ] + selects.with_or({
- # cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
- (
- "@rules_rust//rust/platform:x86_64-apple-darwin",
- "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
- ): [
- "@raze__cpufeatures__0_2_1//:cpufeatures",
- ],
- "//conditions:default": [],
- }),
-)
-
-# Unsupported target "lib" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.smallvec-1.6.1.bazel b/kythe/rust/cargo/remote/BUILD.smallvec-1.6.1.bazel
deleted file mode 100644
index 9206c3ad4..000000000
--- a/kythe/rust/cargo/remote/BUILD.smallvec-1.6.1.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "bench" with type "bench" omitted
-
-rust_library(
- name = "smallvec",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.6.1",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "macro" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.strsim-0.8.0.bazel b/kythe/rust/cargo/remote/BUILD.strsim-0.8.0.bazel
deleted file mode 100644
index d3954206c..000000000
--- a/kythe/rust/cargo/remote/BUILD.strsim-0.8.0.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "benches" with type "bench" omitted
-
-rust_library(
- name = "strsim",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.8.0",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "lib" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.syn-1.0.75.bazel b/kythe/rust/cargo/remote/BUILD.syn-1.0.75.bazel
deleted file mode 100644
index 7a29db184..000000000
--- a/kythe/rust/cargo/remote/BUILD.syn-1.0.75.bazel
+++ /dev/null
@@ -1,158 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "syn_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "clone-impls",
- "default",
- "derive",
- "full",
- "parsing",
- "printing",
- "proc-macro",
- "quote",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.75",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-# Unsupported target "file" with type "bench" omitted
-
-# Unsupported target "rust" with type "bench" omitted
-
-rust_library(
- name = "syn",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "clone-impls",
- "default",
- "derive",
- "full",
- "parsing",
- "printing",
- "proc-macro",
- "quote",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.75",
- # buildifier: leave-alone
- deps = [
- ":syn_build_script",
- "@raze__proc_macro2__1_0_29//:proc_macro2",
- "@raze__quote__1_0_9//:quote",
- "@raze__unicode_xid__0_2_2//:unicode_xid",
- ],
-)
-
-# Unsupported target "test_asyncness" with type "test" omitted
-
-# Unsupported target "test_attribute" with type "test" omitted
-
-# Unsupported target "test_derive_input" with type "test" omitted
-
-# Unsupported target "test_expr" with type "test" omitted
-
-# Unsupported target "test_generics" with type "test" omitted
-
-# Unsupported target "test_grouping" with type "test" omitted
-
-# Unsupported target "test_ident" with type "test" omitted
-
-# Unsupported target "test_item" with type "test" omitted
-
-# Unsupported target "test_iterators" with type "test" omitted
-
-# Unsupported target "test_lit" with type "test" omitted
-
-# Unsupported target "test_meta" with type "test" omitted
-
-# Unsupported target "test_parse_buffer" with type "test" omitted
-
-# Unsupported target "test_parse_stream" with type "test" omitted
-
-# Unsupported target "test_pat" with type "test" omitted
-
-# Unsupported target "test_path" with type "test" omitted
-
-# Unsupported target "test_precedence" with type "test" omitted
-
-# Unsupported target "test_receiver" with type "test" omitted
-
-# Unsupported target "test_round_trip" with type "test" omitted
-
-# Unsupported target "test_shebang" with type "test" omitted
-
-# Unsupported target "test_should_parse" with type "test" omitted
-
-# Unsupported target "test_size" with type "test" omitted
-
-# Unsupported target "test_stmt" with type "test" omitted
-
-# Unsupported target "test_token_trees" with type "test" omitted
-
-# Unsupported target "test_ty" with type "test" omitted
-
-# Unsupported target "test_visibility" with type "test" omitted
-
-# Unsupported target "zzz_stable" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.tempdir-0.3.7.bazel b/kythe/rust/cargo/remote/BUILD.tempdir-0.3.7.bazel
deleted file mode 100644
index de7abc414..000000000
--- a/kythe/rust/cargo/remote/BUILD.tempdir-0.3.7.bazel
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "tempdir",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.7",
- # buildifier: leave-alone
- deps = [
- "@raze__rand__0_4_6//:rand",
- "@raze__remove_dir_all__0_5_3//:remove_dir_all",
- ],
-)
-
-# Unsupported target "smoke" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.textwrap-0.11.0.bazel b/kythe/rust/cargo/remote/BUILD.textwrap-0.11.0.bazel
deleted file mode 100644
index 82a7373ac..000000000
--- a/kythe/rust/cargo/remote/BUILD.textwrap-0.11.0.bazel
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "linear" with type "bench" omitted
-
-# Unsupported target "layout" with type "example" omitted
-
-# Unsupported target "termwidth" with type "example" omitted
-
-rust_library(
- name = "textwrap",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.11.0",
- # buildifier: leave-alone
- deps = [
- "@raze__unicode_width__0_1_8//:unicode_width",
- ],
-)
-
-# Unsupported target "version-numbers" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.thiserror-1.0.28.bazel b/kythe/rust/cargo/remote/BUILD.thiserror-1.0.28.bazel
deleted file mode 100644
index e24999e1f..000000000
--- a/kythe/rust/cargo/remote/BUILD.thiserror-1.0.28.bazel
+++ /dev/null
@@ -1,78 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "thiserror",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- proc_macro_deps = [
- "@raze__thiserror_impl__1_0_28//:thiserror_impl",
- ],
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.28",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "compiletest" with type "test" omitted
-
-# Unsupported target "test_backtrace" with type "test" omitted
-
-# Unsupported target "test_display" with type "test" omitted
-
-# Unsupported target "test_error" with type "test" omitted
-
-# Unsupported target "test_expr" with type "test" omitted
-
-# Unsupported target "test_from" with type "test" omitted
-
-# Unsupported target "test_lints" with type "test" omitted
-
-# Unsupported target "test_option" with type "test" omitted
-
-# Unsupported target "test_path" with type "test" omitted
-
-# Unsupported target "test_source" with type "test" omitted
-
-# Unsupported target "test_transparent" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.thiserror-impl-1.0.28.bazel b/kythe/rust/cargo/remote/BUILD.thiserror-impl-1.0.28.bazel
deleted file mode 100644
index 211f21252..000000000
--- a/kythe/rust/cargo/remote/BUILD.thiserror-impl-1.0.28.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "thiserror_impl",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "proc-macro",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.0.28",
- # buildifier: leave-alone
- deps = [
- "@raze__proc_macro2__1_0_29//:proc_macro2",
- "@raze__quote__1_0_9//:quote",
- "@raze__syn__1_0_75//:syn",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.time-0.1.44.bazel b/kythe/rust/cargo/remote/BUILD.time-0.1.44.bazel
deleted file mode 100644
index 7c44b9983..000000000
--- a/kythe/rust/cargo/remote/BUILD.time-0.1.44.bazel
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "time",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.44",
- # buildifier: leave-alone
- deps = [
- "@raze__libc__0_2_101//:libc",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.typenum-1.14.0.bazel b/kythe/rust/cargo/remote/BUILD.typenum-1.14.0.bazel
deleted file mode 100644
index d59654ef2..000000000
--- a/kythe/rust/cargo/remote/BUILD.typenum-1.14.0.bazel
+++ /dev/null
@@ -1,85 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "typenum_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build/main.rs",
- data = glob(["**"]),
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.14.0",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "typenum",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "1.14.0",
- # buildifier: leave-alone
- deps = [
- ":typenum_build_script",
- ],
-)
-
-# Unsupported target "test" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.unicode-width-0.1.8.bazel b/kythe/rust/cargo/remote/BUILD.unicode-width-0.1.8.bazel
deleted file mode 100644
index 08d73eaac..000000000
--- a/kythe/rust/cargo/remote/BUILD.unicode-width-0.1.8.bazel
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "unicode_width",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.1.8",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.unicode-xid-0.2.2.bazel b/kythe/rust/cargo/remote/BUILD.unicode-xid-0.2.2.bazel
deleted file mode 100644
index 82b8e6298..000000000
--- a/kythe/rust/cargo/remote/BUILD.unicode-xid-0.2.2.bazel
+++ /dev/null
@@ -1,58 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-# Unsupported target "xid" with type "bench" omitted
-
-rust_library(
- name = "unicode_xid",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.2.2",
- # buildifier: leave-alone
- deps = [
- ],
-)
-
-# Unsupported target "exhaustive_tests" with type "test" omitted
diff --git a/kythe/rust/cargo/remote/BUILD.vec_map-0.8.2.bazel b/kythe/rust/cargo/remote/BUILD.vec_map-0.8.2.bazel
deleted file mode 100644
index a3d05a4b7..000000000
--- a/kythe/rust/cargo/remote/BUILD.vec_map-0.8.2.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "vec_map",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.8.2",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.version_check-0.9.3.bazel b/kythe/rust/cargo/remote/BUILD.version_check-0.9.3.bazel
deleted file mode 100644
index 6b613c4be..000000000
--- a/kythe/rust/cargo/remote/BUILD.version_check-0.9.3.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-
-rust_library(
- name = "version_check",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.9.3",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel b/kythe/rust/cargo/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel
deleted file mode 100644
index bf950b4b4..000000000
--- a/kythe/rust/cargo/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # Apache-2.0 from expression "Apache-2.0 OR (Apache-2.0 OR MIT)"
-])
-
-# Generated Targets
-
-rust_library(
- name = "wasi",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "default",
- "std",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.10.0+wasi-snapshot-preview1",
- # buildifier: leave-alone
- deps = [
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.winapi-0.3.9.bazel b/kythe/rust/cargo/remote/BUILD.winapi-0.3.9.bazel
deleted file mode 100644
index 9bfc528a9..000000000
--- a/kythe/rust/cargo/remote/BUILD.winapi-0.3.9.bazel
+++ /dev/null
@@ -1,117 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "winapi_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- "consoleapi",
- "errhandlingapi",
- "fileapi",
- "handleapi",
- "minwinbase",
- "minwindef",
- "ntdef",
- "ntsecapi",
- "ntstatus",
- "processenv",
- "profileapi",
- "std",
- "sysinfoapi",
- "timezoneapi",
- "winbase",
- "winerror",
- "winnt",
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.9",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "winapi",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "consoleapi",
- "errhandlingapi",
- "fileapi",
- "handleapi",
- "minwinbase",
- "minwindef",
- "ntdef",
- "ntsecapi",
- "ntstatus",
- "processenv",
- "profileapi",
- "std",
- "sysinfoapi",
- "timezoneapi",
- "winbase",
- "winerror",
- "winnt",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.3.9",
- # buildifier: leave-alone
- deps = [
- ":winapi_build_script",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/kythe/rust/cargo/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
deleted file mode 100644
index 6b2af2e11..000000000
--- a/kythe/rust/cargo/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ /dev/null
@@ -1,83 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "winapi_i686_pc_windows_gnu_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "winapi_i686_pc_windows_gnu",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- # buildifier: leave-alone
- deps = [
- ":winapi_i686_pc_windows_gnu_build_script",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/kythe/rust/cargo/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
deleted file mode 100644
index 918bd7504..000000000
--- a/kythe/rust/cargo/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ /dev/null
@@ -1,83 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT OR Apache-2.0"
-])
-
-# Generated Targets
-# buildifier: disable=out-of-order-load
-# buildifier: disable=load-on-top
-load(
- "@rules_rust//cargo:cargo_build_script.bzl",
- "cargo_build_script",
-)
-
-cargo_build_script(
- name = "winapi_x86_64_pc_windows_gnu_build_script",
- srcs = glob(["**/*.rs"]),
- build_script_env = {
- },
- crate_features = [
- ],
- crate_root = "build.rs",
- data = glob(["**"]),
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- visibility = ["//visibility:private"],
- deps = [
- ],
-)
-
-rust_library(
- name = "winapi_x86_64_pc_windows_gnu",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2015",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.4.0",
- # buildifier: leave-alone
- deps = [
- ":winapi_x86_64_pc_windows_gnu_build_script",
- ],
-)
diff --git a/kythe/rust/cargo/remote/BUILD.zip-0.5.13.bazel b/kythe/rust/cargo/remote/BUILD.zip-0.5.13.bazel
deleted file mode 100644
index 12cdfded2..000000000
--- a/kythe/rust/cargo/remote/BUILD.zip-0.5.13.bazel
+++ /dev/null
@@ -1,88 +0,0 @@
-"""
-@generated
-cargo-raze crate build file.
-
-DO NOT EDIT! Replaced on runs of cargo-raze
-"""
-
-# buildifier: disable=load
-load("@bazel_skylib//lib:selects.bzl", "selects")
-
-# buildifier: disable=load
-load(
- "@rules_rust//rust:rust.bzl",
- "rust_binary",
- "rust_library",
- "rust_test",
-)
-
-package(default_visibility = [
- # Public for visibility by "@raze__crate__version//" targets.
- #
- # Prefer access through "//kythe/rust/cargo", which limits external
- # visibility to explicit Cargo.toml dependencies.
- "//visibility:public",
-])
-
-licenses([
- "notice", # MIT from expression "MIT"
-])
-
-# Generated Targets
-
-# Unsupported target "read_entry" with type "bench" omitted
-
-# Unsupported target "extract" with type "example" omitted
-
-# Unsupported target "extract_lorem" with type "example" omitted
-
-# Unsupported target "file_info" with type "example" omitted
-
-# Unsupported target "stdin_info" with type "example" omitted
-
-# Unsupported target "write_dir" with type "example" omitted
-
-# Unsupported target "write_sample" with type "example" omitted
-
-rust_library(
- name = "zip",
- srcs = glob(["**/*.rs"]),
- crate_features = [
- "bzip2",
- "default",
- "deflate",
- "flate2",
- "time",
- ],
- crate_root = "src/lib.rs",
- crate_type = "lib",
- data = [],
- edition = "2018",
- rustc_flags = [
- "--cap-lints=allow",
- ],
- tags = [
- "cargo-raze",
- "manual",
- ],
- version = "0.5.13",
- # buildifier: leave-alone
- deps = [
- "@raze__byteorder__1_4_3//:byteorder",
- "@raze__bzip2__0_4_3//:bzip2",
- "@raze__crc32fast__1_2_1//:crc32fast",
- "@raze__flate2__1_0_21//:flate2",
- "@raze__thiserror__1_0_28//:thiserror",
- "@raze__time__0_1_44//:time",
- ],
-)
-
-# Unsupported target "end_to_end" with type "test" omitted
-
-# Unsupported target "invalid_date" with type "test" omitted
-
-# Unsupported target "zip64_large" with type "test" omitted
-
-# Unsupported target "zip_comment_garbage" with type "test" omitted
-
-# Unsupported target "zip_crypto" with type "test" omitted
diff --git a/kythe/rust/examples/hello_world/BUILD b/kythe/rust/examples/hello_world/BUILD
index a16ec42ec..944310b93 100644
--- a/kythe/rust/examples/hello_world/BUILD
+++ b/kythe/rust/examples/hello_world/BUILD
@@ -1,8 +1,8 @@
-load("@rules_rust//rust:rust.bzl", "rust_binary")
+load("@rules_rust//rust:defs.bzl", "rust_binary")
rust_binary(
name = "hello_world",
srcs = ["src/main.rs"],
- edition = "2018",
- deps = ["//kythe/rust/cargo:colored"],
+ edition = "2021",
+ deps = ["@crate_index//:colored"],
)
diff --git a/kythe/rust/extractor/BUILD b/kythe/rust/extractor/BUILD
index fe7eded65..d94fecb59 100644
--- a/kythe/rust/extractor/BUILD
+++ b/kythe/rust/extractor/BUILD
@@ -1,5 +1,5 @@
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_clippy", "rust_library")
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
-load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_clippy", "rust_library")
load(":extractor_test.bzl", "rust_extractor_test")
package(default_visibility = ["//visibility:public"])
@@ -10,32 +10,33 @@ rust_library(
include = ["src/**/*.rs"],
exclude = ["src/bin/**"],
),
- edition = "2018",
+ edition = "2021",
deps = [
"//kythe/proto:analysis_rust_proto",
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:regex",
- "//kythe/rust/cargo:serde",
- "//kythe/rust/cargo:serde_json",
+ "@crate_index//:anyhow",
+ "@crate_index//:regex",
+ "@crate_index//:serde",
+ "@crate_index//:serde_json",
],
)
rust_binary(
name = "extractor",
srcs = glob(["src/bin/**/*.rs"]),
- edition = "2018",
+ edition = "2021",
deps = [
":kythe_rust_extractor",
"//kythe/proto:analysis_rust_proto",
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:clap",
- "//kythe/rust/cargo:hex",
- "//kythe/rust/cargo:rls_data",
- "//kythe/rust/cargo:sha2",
- "//kythe/rust/cargo:tempdir",
- "//kythe/rust/cargo:zip",
"//third_party/bazel:extra_actions_base_rust_proto",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:clap",
+ "@crate_index//:glob",
+ "@crate_index//:hex",
+ "@crate_index//:protobuf",
+ "@crate_index//:rls-data",
+ "@crate_index//:sha2",
+ "@crate_index//:tempdir",
+ "@crate_index//:zip",
],
)
@@ -45,8 +46,8 @@ sh_binary(
data = [
":extractor",
] + select({
- "@platforms//os:linux": ["@rust_linux_x86_64//:rustc_lib"],
- "@platforms//os:osx": ["@rust_darwin_x86_64//:rustc_lib"],
+ "@platforms//os:linux": ["@rust_linux_x86_64__x86_64-unknown-linux-gnu_tools//:rustc_lib"],
+ "@platforms//os:osx": ["@rust_darwin_x86_64__x86_64-apple-darwin_tools//:rustc_lib"],
}),
)
@@ -62,15 +63,15 @@ rust_clippy(
rust_binary(
name = "extractor_test_binary",
srcs = ["tests/test.rs"],
- edition = "2018",
+ edition = "2021",
rustc_flags = [
"--test",
],
deps = [
":kythe_rust_extractor",
"//kythe/proto:analysis_rust_proto",
- "//kythe/rust/cargo:regex",
- "//kythe/rust/cargo:tempdir",
+ "@crate_index//:regex",
+ "@crate_index//:tempdir",
],
)
@@ -83,15 +84,15 @@ rust_binary(
name = "extractor_integration_test_binary",
srcs = ["tests/integration_test.rs"],
data = ["//external:vnames_config"],
- edition = "2018",
+ edition = "2021",
deps = [
"//kythe/proto:analysis_rust_proto",
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:tempdir",
- "//kythe/rust/cargo:zip",
"//third_party/bazel:extra_actions_base_rust_proto",
"//tools/rust/runfiles",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:protobuf",
+ "@crate_index//:tempdir",
+ "@crate_index//:zip",
],
)
diff --git a/kythe/rust/extractor/extractor_script.sh b/kythe/rust/extractor/extractor_script.sh
index 5a7149a00..6b3154d45 100755
--- a/kythe/rust/extractor/extractor_script.sh
+++ b/kythe/rust/extractor/extractor_script.sh
@@ -16,10 +16,10 @@
RUNFILES_DIR="$0.runfiles"
# We have to call find ourselves because rlocation doesn't support wildcards
-PATTERN="$RUNFILES_DIR/rust_*_x86_64/lib/rustlib*lib/librustc_driver-*.*"
+PATTERN="$RUNFILES_DIR/rust_*_x86_64*_tools/lib/rustlib*lib/librustc_driver-*.*"
# Find the Rust directory first so that our next find doesn't search the
# entire runfiles directory
-RUST_RUNFILES_LOCATION="$(find "$RUNFILES_DIR" -type d -wholename "$RUNFILES_DIR/rust_*_x86_64")"
+RUST_RUNFILES_LOCATION="$(find "$RUNFILES_DIR" -type d -wholename "$RUNFILES_DIR/rust_*_x86_64*_tools")"
LOCATION="$(find "$RUST_RUNFILES_LOCATION" -wholename "$PATTERN")"
LIB_DIRNAME="$(dirname "$LOCATION")"
diff --git a/kythe/rust/extractor/extractor_test.bzl b/kythe/rust/extractor/extractor_test.bzl
index db1590e72..163218d71 100644
--- a/kythe/rust/extractor/extractor_test.bzl
+++ b/kythe/rust/extractor/extractor_test.bzl
@@ -28,8 +28,8 @@ def _rust_extractor_test_impl(ctx):
# Rust toolchain
rust_toolchain = ctx.toolchains["@rules_rust//rust:toolchain"]
- rustc_lib = rust_toolchain.rustc_lib.files.to_list()
- rust_lib = rust_toolchain.rust_lib.files.to_list()
+ rustc_lib = rust_toolchain.rustc_lib.to_list()
+ rust_std = rust_toolchain.rust_std.to_list()
source_file = ctx.actions.declare_file("main.rs")
@@ -44,8 +44,21 @@ def _rust_extractor_test_impl(ctx):
content = source_content,
)
+ out_dir_input = ctx.actions.declare_file("out_dir/input.rs")
+
+ # sha256 digest = 75d66361585a3ca351b88047de1e1ddbbd3f85b070be2faf8f53f5e886447cf7
+ input_content = """
+ pub fn hello() {
+ println!("I'm a generated input!");
+ }
+ """
+ ctx.actions.write(
+ output = out_dir_input,
+ content = input_content,
+ )
+
rustc_lib_path = paths.dirname(rustc_lib[0].short_path)
- rust_lib_path = paths.dirname(rust_lib[0].short_path)
+ rust_lib_path = paths.dirname(rust_std[0].short_path)
script = "\n".join(
["export DYLD_FALLBACK_LIBRARY_PATH=${DYLD_FALLBACK_LIBRARY_PATH:+$DYLD_FALLBACK_LIBRARY_PATH:}%s:%s" % (rustc_lib_path, rust_lib_path)] +
["export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}%s:%s" % (rustc_lib_path, rust_lib_path)] +
@@ -53,6 +66,7 @@ def _rust_extractor_test_impl(ctx):
["export TEST_FILE=%s" % source_file.short_path] +
["export EXTRACTOR_PATH=%s" % extractor.short_path] +
["export KYTHE_CORPUS=test_corpus"] +
+ ["export CARGO_OUT_DIR='${pwd}/%s'" % paths.dirname(out_dir_input.short_path)] +
["./%s" % test_binary.short_path],
)
ctx.actions.write(
@@ -61,7 +75,7 @@ def _rust_extractor_test_impl(ctx):
)
runfiles = ctx.runfiles(
- files = [test_binary, source_file, extractor, ctx.outputs.executable] + rustc_lib + rust_lib,
+ files = [test_binary, source_file, extractor, ctx.outputs.executable, out_dir_input] + rustc_lib + rust_std,
)
runfiles = runfiles.merge(ctx.attr.src[DefaultInfo].data_runfiles)
diff --git a/kythe/rust/extractor/src/bin/cli.rs b/kythe/rust/extractor/src/bin/cli.rs
index b6318798b..8c936dee5 100644
--- a/kythe/rust/extractor/src/bin/cli.rs
+++ b/kythe/rust/extractor/src/bin/cli.rs
@@ -48,8 +48,8 @@ pub fn parse_arguments() -> ExtractorConfig {
)
.get_matches();
- let extra_action_path = PathBuf::new().join(matches.value_of("extra_action").unwrap());
- let vnames_config_path = PathBuf::new().join(matches.value_of("vnames_config").unwrap());
- let output_path = PathBuf::new().join(matches.value_of("output").unwrap());
+ let extra_action_path = PathBuf::from(matches.value_of("extra_action").unwrap());
+ let vnames_config_path = PathBuf::from(matches.value_of("vnames_config").unwrap());
+ let output_path = PathBuf::from(matches.value_of("output").unwrap());
ExtractorConfig { extra_action_path, vnames_config_path, output_path }
}
diff --git a/kythe/rust/extractor/src/bin/extractor.rs b/kythe/rust/extractor/src/bin/extractor.rs
index efd932b0e..8aa8780f3 100644
--- a/kythe/rust/extractor/src/bin/extractor.rs
+++ b/kythe/rust/extractor/src/bin/extractor.rs
@@ -20,12 +20,14 @@ mod save_analysis;
use analysis_rust_proto::*;
use anyhow::{Context, Result};
use extra_actions_base_rust_proto::*;
+use glob::glob;
use kythe_rust_extractor::vname_util::VNameRule;
use protobuf::Message;
use sha2::{Digest, Sha256};
use std::fs::File;
use std::io::{Read, Write};
use std::path::{Path, PathBuf};
+use std::{env, fs};
use tempdir::TempDir;
use zip::{write::FileOptions, ZipWriter};
@@ -38,12 +40,31 @@ fn main() -> Result<()> {
// Retrieve the SpawnInfo from the extra action file
let spawn_info = get_spawn_info(&config.extra_action_path)?;
- // Set environment variables from spawn info
- let environment_variables = spawn_info.get_variable().to_vec();
+ // Grab the environment variables from spawn info and set them in our current
+ // environment
+ let environment_variables: Vec<_> = spawn_info.get_variable().to_vec();
let pwd = std::env::current_dir().context("Couldn't determine pwd")?;
+ let mut out_dir_var: Option<String> = None;
for variable in environment_variables {
- let value = variable.get_value().replace("${pwd}", pwd.to_str().unwrap());
- std::env::set_var(variable.get_name(), value);
+ let original_value = variable.get_value();
+ let value = original_value.replace("${pwd}", pwd.to_str().unwrap());
+ let name = variable.get_name();
+ std::env::set_var(name, value);
+ if name == "OUT_DIR" {
+ // We want the original value so that we can easily get file paths
+ // relative to OUT_DIR later
+ out_dir_var = Some(original_value.to_string());
+ }
+ }
+
+ // Get paths for files present in $OUT_DIR
+ let mut out_dir_inputs: Vec<String> = Vec::new();
+ if let Some(out_dir) = out_dir_var {
+ let absolute_out_dir = out_dir.replace("${pwd}", pwd.to_str().unwrap());
+ let glob_pattern = format!("{}/**/*", absolute_out_dir);
+ for path in glob(&glob_pattern).unwrap().flatten() {
+ out_dir_inputs.push(path.display().to_string());
+ }
}
// Create temporary directory and run the analysis
@@ -52,7 +73,7 @@ fn main() -> Result<()> {
let build_target_arguments: Vec<String> = spawn_info.get_argument().to_vec();
save_analysis::generate_save_analysis(
build_target_arguments.clone(),
- PathBuf::new().join(tmp_dir.path()),
+ PathBuf::from(tmp_dir.path()),
)?;
// Create the output kzip
@@ -73,28 +94,62 @@ fn main() -> Result<()> {
.filter(|file| file.ends_with(".rs"))
.map(String::from) // Map the &String to a new String
.collect();
- let mut required_input: Vec<CompilationUnit_FileInput> = Vec::new();
+ let mut required_inputs: Vec<CompilationUnit_FileInput> = Vec::new();
for file_path in &rust_source_files {
// Generate the file vname based on the vname rules
let file_vname: VName = create_vname(&mut vname_rules, file_path, &default_corpus);
- kzip_add_required_input(file_path, file_vname, &mut kzip, &mut required_input)?;
+ kzip_add_required_input(file_path, file_vname, &mut kzip, &mut required_inputs)?;
+ }
+
+ // Add files that were present in $OUT_DIR during compilation as required inputs
+ let mut out_dir_rust_source_files = Vec::new();
+ for path in out_dir_inputs {
+ // We strip the current working directory so we can generate the proper VName,
+ // as the resulting path will usually start with "bazel-out/".
+ let relative_path = path.replace(&format!("{}/", pwd.to_str().unwrap()), "");
+ let file_vname: VName = create_vname(&mut vname_rules, &relative_path, &default_corpus);
+ // We path the absolute path when adding the file as a required input because
+ // that is the path will show up in the save_analysis. We want it set as the
+ // FileInfo path so it can be properly matched to its VName during indexing.
+ kzip_add_required_input(&path, file_vname, &mut kzip, &mut required_inputs)?;
+ // If this is a Rust file, add it to the vec
+ if path.ends_with(".rs") {
+ out_dir_rust_source_files.push(path);
+ }
}
// Grab the build target's output path
- let build_output_path: &String = spawn_info
+ let build_output_path = spawn_info
.get_output_file()
.get(0)
.ok_or_else(|| anyhow!("Failed to get output file from spawn info"))?;
+ // Infer the crate name from the compiler args, falling back to the output file
+ // name if necessary
+ let crate_name = {
+ let crate_name_matches: Vec<_> =
+ build_target_arguments.iter().filter(|arg| arg.starts_with("--crate-name=")).collect();
+ if !crate_name_matches.is_empty() {
+ crate_name_matches.get(0).unwrap().replace("--crate-name=", "")
+ } else {
+ PathBuf::from(build_output_path)
+ .file_name()
+ .unwrap()
+ .to_str()
+ .ok_or_else(|| anyhow!("Failed to convert build output path file name to string"))?
+ .to_string()
+ }
+ };
+
// Add save analysis to kzip
- let save_analysis_path: String = analysis_path_string(build_output_path, tmp_dir.path())?;
+ let save_analysis_path: String = analysis_path_string(&crate_name, tmp_dir.path())?;
let save_analysis_vname: VName =
create_vname(&mut vname_rules, &save_analysis_path, &default_corpus);
kzip_add_required_input(
&save_analysis_path,
save_analysis_vname,
&mut kzip,
- &mut required_input,
+ &mut required_inputs,
)?;
// Create the IndexedCompilation and add it to the kzip
@@ -103,12 +158,18 @@ fn main() -> Result<()> {
if !default_corpus.is_empty() {
unit_vname.set_corpus(default_corpus);
}
+ let mut all_source_files = Vec::new();
+ all_source_files.extend(rust_source_files);
+ all_source_files.extend(out_dir_rust_source_files);
let indexed_compilation = create_indexed_compilation(
- rust_source_files,
+ all_source_files,
build_target_arguments,
build_output_path,
- required_input,
+ required_inputs,
unit_vname,
+ env::current_dir()?
+ .to_str()
+ .ok_or_else(|| anyhow!("working directory is invalid UTF-8"))?,
);
let mut indexed_compilation_bytes: Vec<u8> = Vec::new();
indexed_compilation
@@ -156,12 +217,14 @@ fn get_spawn_info(file_path: impl AsRef<Path>) -> Result<SpawnInfo> {
/// * `build_output_path` - The output path of the build target
/// * `required_input` - The generated data for the CompilationUnit
/// `required_input` field
+/// * `working_directory` - The working_directory field for the CompilationUnit
fn create_indexed_compilation(
source_files: Vec<String>,
arguments: Vec<String>,
build_output_path: &str,
required_input: Vec<CompilationUnit_FileInput>,
mut unit_vname: VName,
+ working_directory: &str,
) -> IndexedCompilation {
let mut compilation_unit = CompilationUnit::new();
@@ -171,6 +234,7 @@ fn create_indexed_compilation(
compilation_unit.set_argument(protobuf::RepeatedField::from_vec(arguments));
compilation_unit.set_required_input(protobuf::RepeatedField::from_vec(required_input));
compilation_unit.set_output_key(build_output_path.to_string());
+ compilation_unit.set_working_directory(working_directory.to_string());
let mut indexed_compilation = IndexedCompilation::new();
indexed_compilation.set_unit(compilation_unit);
@@ -239,33 +303,28 @@ fn kzip_add_file(
Ok(())
}
-/// Generate the string path of the save_analysis file using the build target's
-/// output path and the temporary base directory
-fn analysis_path_string(build_output_path: &str, temp_dir_path: &Path) -> Result<String> {
- // Take the build output path and change the extension to .json
- let analysis_file_name = Path::new(build_output_path).with_extension("json");
- // Extract the file name from the path and convert to a string
- let analysis_file_str = analysis_file_name
- .file_name()
- .unwrap()
- .to_str()
- .ok_or_else(|| anyhow!("Failed to convert path to string"))?;
-
- // Join the temp_dir_path with "save-analysis/${analysis_file_str}" to get the
- // full path of the save_analysis JSON file
- let mut path = temp_dir_path.join("save-analysis").join(analysis_file_str);
-
- // The path should almost always exist. However, if the target name had
- // hyphens, then the final save_analysis file has underscores. We can't
- // always replace the hyphens with underscores because the save_analysis
- // files for libraries have hyphens in them.
- if !path.exists() {
- path = temp_dir_path.join("save-analysis").join(analysis_file_str.replace("-", "_"));
+/// Find the path of the save_analysis file using the build target's
+/// crate name and the temporary base directory
+fn analysis_path_string(crate_name: &str, temp_dir_path: &Path) -> Result<String> {
+ let entries = fs::read_dir(temp_dir_path.join("save-analysis")).with_context(|| {
+ format!("Failed to read the save_analysis temporary directory: {:?}", temp_dir_path)
+ })?;
+
+ for entry in entries {
+ let entry = entry.with_context(|| "Failed to get information about directory entry")?;
+ let metadata = entry.metadata().with_context(|| "Failed to get entry metadata")?;
+ let path = entry.path();
+ let path_string = path
+ .to_str()
+ .ok_or_else(|| anyhow!("save_analysis file path is not valid UTF-8"))
+ .map(|path_str| path_str.to_string())?;
+ if metadata.is_file() && path_string.contains(crate_name) && path_string.ends_with(".json")
+ {
+ return Ok(path_string);
+ }
}
- path.to_str()
- .ok_or_else(|| anyhow!("save_analysis file path is not valid UTF-8"))
- .map(|path_str| path_str.to_string())
+ Err(anyhow!("Failed to find save-analysis file in {:?}", temp_dir_path))
}
fn create_vname(rules: &mut [VNameRule], path: &str, default_corpus: &str) -> VName {
diff --git a/kythe/rust/extractor/src/bin/save_analysis.rs b/kythe/rust/extractor/src/bin/save_analysis.rs
index fd458d771..905777a3f 100644
--- a/kythe/rust/extractor/src/bin/save_analysis.rs
+++ b/kythe/rust/extractor/src/bin/save_analysis.rs
@@ -23,7 +23,7 @@ use std::path::{Path, PathBuf};
/// * `output_dir` - The base directory to output the save_analysis
pub fn generate_save_analysis(arguments: Vec<String>, output_dir: PathBuf) -> Result<()> {
let rustc_arguments = generate_arguments(arguments, &output_dir)?;
- let _input_files = kythe_rust_extractor::generate_analysis(rustc_arguments, output_dir)
+ kythe_rust_extractor::generate_analysis(rustc_arguments, output_dir)
.map_err(|_| anyhow!("Failed to generate save_analysis"))?;
Ok(())
}
diff --git a/kythe/rust/extractor/src/lib.rs b/kythe/rust/extractor/src/lib.rs
index ea5546f2e..ad14f841e 100644
--- a/kythe/rust/extractor/src/lib.rs
+++ b/kythe/rust/extractor/src/lib.rs
@@ -65,7 +65,7 @@ impl CallbackShim {
impl Callbacks for CallbackShim {
// Always enable save_analysis generation
fn config(&mut self, config: &mut interface::Config) {
- config.opts.debugging_opts.save_analysis = true;
+ config.opts.unstable_opts.save_analysis = true;
}
fn after_analysis<'tcx>(
diff --git a/kythe/rust/extractor/tests/integration_test.rs b/kythe/rust/extractor/tests/integration_test.rs
index 224eab74a..9555a8082 100644
--- a/kythe/rust/extractor/tests/integration_test.rs
+++ b/kythe/rust/extractor/tests/integration_test.rs
@@ -59,6 +59,15 @@ fn main() -> Result<()> {
let output_files: Vec<String> = vec![output_key.clone()];
spawn_info.set_output_file(protobuf::RepeatedField::from_vec(output_files));
+ // If $CARGO_OUT_DIR is set, set the value as $OUT_DIR in the spawn info
+ if let Ok(out_dir) = std::env::var("CARGO_OUT_DIR") {
+ let mut env_var = EnvironmentVariable::new();
+ env_var.set_name("OUT_DIR".to_string());
+ env_var.set_value(out_dir);
+ let vars = vec![env_var];
+ spawn_info.set_variable(protobuf::RepeatedField::from_vec(vars));
+ }
+
// Write SpawnInfo bytes to a vector
let spawn_info_bytes: Vec<u8> = spawn_info
.write_to_bytes()
@@ -96,18 +105,24 @@ fn missing_arguments_fail() {
let extractor_path = std::env::var("EXTRACTOR_PATH").expect("Couldn't find extractor path");
let mut output = Command::new(&extractor_path).arg("--output=/tmp/wherever").output().unwrap();
assert_eq!(output.status.code().unwrap(), 1);
- assert!(String::from_utf8_lossy(&output.stderr)
- .starts_with("error: The following required arguments were not provided:"));
+ assert!(
+ String::from_utf8_lossy(&output.stderr)
+ .starts_with("error: The following required arguments were not provided:")
+ );
output = Command::new(&extractor_path).arg("--extra_action=/tmp/wherever").output().unwrap();
assert_eq!(output.status.code().unwrap(), 1);
- assert!(String::from_utf8_lossy(&output.stderr)
- .starts_with("error: The following required arguments were not provided:"));
+ assert!(
+ String::from_utf8_lossy(&output.stderr)
+ .starts_with("error: The following required arguments were not provided:")
+ );
output = Command::new(&extractor_path).output().unwrap();
assert_eq!(output.status.code().unwrap(), 1);
- assert!(String::from_utf8_lossy(&output.stderr)
- .starts_with("error: The following required arguments were not provided:"));
+ assert!(
+ String::from_utf8_lossy(&output.stderr)
+ .starts_with("error: The following required arguments were not provided:")
+ );
}
fn bad_extra_action_path_fails() {
@@ -149,9 +164,11 @@ fn correct_arguments_succeed(
let kzip_file = File::open(kzip_path).expect("Couldn't open resulting kzip file");
let mut kzip = zip::ZipArchive::new(kzip_file).expect("Couldn't read kzip archive");
- // Ensure the source file from the test macro is in the kzip
+ // Ensure the source file and OUT_DIR input from the test macro are in the kzip
kzip.by_name("root/files/7cb3b3c74ecdf86f434548ba15c1651c92bf03b6690fd0dfc053ab09d094cf03")
- .unwrap();
+ .expect("main.rs is missing from the generated kzip");
+ kzip.by_name("root/files/75d66361585a3ca351b88047de1e1ddbbd3f85b070be2faf8f53f5e886447cf7")
+ .expect("$OUT_DIR/input.rs is missing from the generated kzip");
// Ensure protobuf is in the kzip
let mut cu_path_str = String::from("");
@@ -172,13 +189,23 @@ fn correct_arguments_succeed(
// Ensure the CompilationUnit is correct
let compilation_unit = indexed_compilation.get_unit();
+ assert!(
+ !compilation_unit.get_working_directory().is_empty(),
+ "CompilationUnit working directory is not empty"
+ );
+
let source_files: Vec<String> = compilation_unit.get_source_file().to_vec();
- assert_eq!(source_files.len(), 1);
+ assert_eq!(source_files.len(), 2);
assert!(
source_files.get(0).unwrap().contains("kythe/rust/extractor/main.rs"),
- "source_file field doesn't contain \"kythe/rust/extractor/main.rs\": {}",
+ "The first source file's path doesn't contain \"kythe/rust/extractor/main.rs\": {}",
source_files.get(0).unwrap()
);
+ assert!(
+ source_files.get(1).unwrap().contains("out_dir/input.rs"),
+ "The second source file's path doesn't contain \"out_dir/input.rs\": {}",
+ source_files.get(1).unwrap()
+ );
let output_key = compilation_unit.get_output_key();
assert_eq!(output_key, expected_output_key, "output_key field doesn't match");
@@ -191,21 +218,45 @@ fn correct_arguments_succeed(
assert_eq!(arguments, expected_arguments, "Argument field doesn't match");
let required_inputs = compilation_unit.get_required_input().to_vec();
- let source_input = required_inputs.get(0).expect("Failed to get first required input");
+ assert_eq!(
+ required_inputs.len(),
+ 3,
+ "Unexpected number of required inputs: {}",
+ required_inputs.len()
+ );
+ // Test attributes of the required input for main.rs
+ let source_input = required_inputs.get(0).expect("Failed to get the first required input");
let source_file_path = source_input.get_info().get_path();
assert!(
source_file_path.contains("kythe/rust/extractor/main.rs"),
- "source_file path doesn't contain \"kythe/rust/extractor/main.rs\": {}",
+ "Path for the first required input doesn't contain \"kythe/rust/extractor/main.rs\": {}",
source_file_path
);
-
assert_eq!(
source_input.get_info().get_digest(),
- "7cb3b3c74ecdf86f434548ba15c1651c92bf03b6690fd0dfc053ab09d094cf03"
+ "7cb3b3c74ecdf86f434548ba15c1651c92bf03b6690fd0dfc053ab09d094cf03",
+ "Incorrect digest for main.rs: {}",
+ source_input.get_info().get_digest()
+ );
+
+ // Test attributes of the required input for $OUT_DIR/input.rs
+ let out_dir_input = required_inputs.get(1).expect("Failed to get the second required input");
+ let out_dir_input_path = out_dir_input.get_info().get_path();
+ assert!(
+ out_dir_input_path.contains("out_dir/input.rs"),
+ "Path for the second required input doesn't contain \"out_dir/input.rs\": {}",
+ out_dir_input_path
+ );
+ assert_eq!(
+ out_dir_input.get_info().get_digest(),
+ "75d66361585a3ca351b88047de1e1ddbbd3f85b070be2faf8f53f5e886447cf7",
+ "Incorrect digest for $OUT_DIR/input.rs: {}",
+ out_dir_input.get_info().get_digest()
);
- let analysis_input = required_inputs.get(1).expect("Failed to get second required input");
+ // Test attributes of the required_input for the save analysis
+ let analysis_input = required_inputs.get(2).expect("Failed to get the third required input");
let analysis_path = analysis_input.get_info().get_path();
assert!(
analysis_path.contains("save-analysis/test_crate.json"),
diff --git a/kythe/rust/extractor/tests/test.rs b/kythe/rust/extractor/tests/test.rs
index d955d8429..2a974c632 100644
--- a/kythe/rust/extractor/tests/test.rs
+++ b/kythe/rust/extractor/tests/test.rs
@@ -23,7 +23,7 @@ use tempdir::TempDir;
fn empty_args_fails() {
let args: Vec<String> = Vec::new();
let temp_dir = TempDir::new("extractor_test").expect("Could not create temporary directory");
- let analysis_directory = PathBuf::new().join(temp_dir.path());
+ let analysis_directory = PathBuf::from(temp_dir.path());
let result = generate_analysis(args, analysis_directory);
assert_eq!(result.unwrap_err(), "Arguments vector should not be empty".to_string());
}
@@ -32,7 +32,7 @@ fn empty_args_fails() {
fn nonempty_string_first_fails() {
let args: Vec<String> = vec!["nonempty".to_string()];
let temp_dir = TempDir::new("extractor_test").expect("Could not create temporary directory");
- let analysis_directory = PathBuf::new().join(temp_dir.path());
+ let analysis_directory = PathBuf::from(temp_dir.path());
let result = generate_analysis(args, analysis_directory);
assert_eq!(result.unwrap_err(), "The first argument must be an empty string".to_string());
}
@@ -54,7 +54,7 @@ fn correct_arguments_succeed() {
"--crate-name=test_crate".to_string(),
format!("--out-dir={}", temp_dir.path().to_str().unwrap()),
];
- let analysis_directory = PathBuf::new().join(temp_dir.path());
+ let analysis_directory = PathBuf::from(temp_dir.path());
let result = generate_analysis(args, analysis_directory);
assert_eq!(result.unwrap(), (), "generate_analysis result wasn't void");
diff --git a/kythe/rust/fuchsia_extractor/BUILD b/kythe/rust/fuchsia_extractor/BUILD
index 33a02b162..11c99ad53 100644
--- a/kythe/rust/fuchsia_extractor/BUILD
+++ b/kythe/rust/fuchsia_extractor/BUILD
@@ -1,4 +1,4 @@
-load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_clippy", "rust_library", "rust_test")
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_clippy", "rust_library", "rust_test")
package(default_visibility = ["//visibility:public"])
@@ -8,20 +8,20 @@ rust_library(
include = ["src/**/*.rs"],
exclude = ["src/bin/**/*.rs"],
),
- edition = "2018",
+ edition = "2021",
deps = [
"//kythe/cxx/common:kzip_writer_c_api",
"//kythe/proto:analysis_rust_proto",
- "//kythe/rust/cargo:anyhow",
"@com_google_absl//absl/status",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:protobuf",
],
)
rust_test(
name = "fuchsia_extractor_lib_test",
crate = ":fuchsia_extractor_lib",
- edition = "2018",
+ edition = "2021",
# See https://github.com/bazelbuild/rules_rust/issues/118. Without this,
# rust binaries require their deps to be compiled with -fPIC, which is not
# always the case. fastbuild and dbg use -fPIC, but opt does not; and rust
@@ -34,14 +34,14 @@ rust_test(
"//conditions:default": [],
}),
deps = [
- "//kythe/rust/cargo:tempdir",
+ "@crate_index//:tempdir",
],
)
rust_binary(
name = "fuchsia_extractor",
srcs = glob(["src/bin/**/*.rs"]),
- edition = "2018",
+ edition = "2021",
rustc_flags = select({
":if_opt": ["-Crelocation-model=static"],
"//conditions:default": [],
@@ -49,17 +49,17 @@ rust_binary(
deps = [
":fuchsia_extractor_lib",
"//kythe/proto:analysis_rust_proto",
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:clap",
- "//kythe/rust/cargo:hex",
- "//kythe/rust/cargo:lazy_static",
- "//kythe/rust/cargo:rayon",
- "//kythe/rust/cargo:regex",
- "//kythe/rust/cargo:rls_data",
- "//kythe/rust/cargo:serde_json",
- "//kythe/rust/cargo:sha2",
- "//kythe/rust/cargo:tempdir",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:clap",
+ "@crate_index//:hex",
+ "@crate_index//:lazy_static",
+ "@crate_index//:protobuf",
+ "@crate_index//:rayon",
+ "@crate_index//:regex",
+ "@crate_index//:rls-data",
+ "@crate_index//:serde_json",
+ "@crate_index//:sha2",
+ "@crate_index//:tempdir",
],
)
@@ -70,7 +70,7 @@ rust_test(
"//kythe/go/platform/tools/kzip",
"//kythe/rust/fuchsia_extractor/testdata",
],
- edition = "2018",
+ edition = "2021",
# See https://github.com/bazelbuild/rules_rust/issues/118. Without this,
# rust binaries require their deps to be compiled with -fPIC, which is not
# always the case. fastbuild and dbg use -fPIC, but opt does not; and rust
@@ -83,8 +83,8 @@ rust_test(
"//conditions:default": [],
}),
deps = [
- "//kythe/rust/cargo:serial_test",
- "//kythe/rust/cargo:zip",
+ "@crate_index//:serial_test",
+ "@crate_index//:zip",
],
)
diff --git a/kythe/rust/indexer/BUILD b/kythe/rust/indexer/BUILD
index 0d3c9841f..d67f7e462 100644
--- a/kythe/rust/indexer/BUILD
+++ b/kythe/rust/indexer/BUILD
@@ -1,4 +1,4 @@
-load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_clippy", "rust_library", "rust_test")
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_clippy", "rust_library", "rust_test")
load("//tools/build_rules/verifier_test:rust_indexer_test.bzl", "rust_indexer_test")
package(default_visibility = ["//visibility:public"])
@@ -9,20 +9,21 @@ rust_library(
include = ["src/**/*.rs"],
exclude = ["src/bin/**"],
),
- edition = "2018",
+ edition = "2021",
deps = [
"//kythe/proto:analysis_rust_proto",
"//kythe/proto:storage_rust_proto",
- "//kythe/rust/cargo:base64",
- "//kythe/rust/cargo:hex",
- "//kythe/rust/cargo:quick_error",
- "//kythe/rust/cargo:rls_analysis",
- "//kythe/rust/cargo:rls_data",
- "//kythe/rust/cargo:serde",
- "//kythe/rust/cargo:serde_json",
- "//kythe/rust/cargo:sha2",
- "//kythe/rust/cargo:zip",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:base64",
+ "@crate_index//:hex",
+ "@crate_index//:path-clean",
+ "@crate_index//:protobuf",
+ "@crate_index//:quick-error",
+ "@crate_index//:rls-analysis",
+ "@crate_index//:rls-data",
+ "@crate_index//:serde",
+ "@crate_index//:serde_json",
+ "@crate_index//:sha2",
+ "@crate_index//:zip",
],
)
@@ -32,14 +33,12 @@ rust_binary(
include = ["src/bin/bazel/*.rs"],
),
crate_root = ":src/bin/bazel/main.rs",
- edition = "2018",
+ edition = "2021",
deps = [
":kythe_rust_indexer",
- "//kythe/proto:analysis_rust_proto",
- "//kythe/proto:storage_rust_proto",
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:tempdir",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:clap",
+ "@crate_index//:protobuf",
],
)
@@ -49,17 +48,15 @@ rust_binary(
include = ["src/bin/proxy/*.rs"],
),
crate_root = ":src/bin/proxy/main.rs",
- edition = "2018",
+ edition = "2021",
deps = [
":kythe_rust_indexer",
"//kythe/proto:analysis_rust_proto",
- "//kythe/proto:storage_rust_proto",
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:base64",
- "//kythe/rust/cargo:clap",
- "//kythe/rust/cargo:serde_json",
- "//kythe/rust/cargo:tempdir",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:base64",
+ "@crate_index//:clap",
+ "@crate_index//:protobuf",
+ "@crate_index//:serde_json",
],
)
@@ -72,15 +69,17 @@ rust_test(
name = "integration_tests",
srcs = glob(["tests/*.rs"]),
data = [
- "tests/testanalysis.json",
"tests/testkzip.kzip",
],
+ edition = "2021",
deps = [
":inline_tests",
":kythe_rust_indexer",
"//kythe/proto:analysis_rust_proto",
"//kythe/proto:storage_rust_proto",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:hex",
+ "@crate_index//:protobuf",
+ "@crate_index//:sha2",
"@rules_rust//tools/runfiles",
],
)
@@ -153,3 +152,14 @@ rust_indexer_test(
name = "xrefs_test",
srcs = glob(["testdata/xrefs/*.rs"]),
)
+
+rust_indexer_test(
+ name = "relative_module_test",
+ srcs = glob(["testdata/relative/**/*.rs"]),
+)
+
+rust_indexer_test(
+ name = "out_dir_test",
+ srcs = ["testdata/out_dir/main.rs"],
+ out_dir_files = ["testdata/out_dir/generated.rs"],
+)
diff --git a/kythe/rust/indexer/src/bin/bazel/main.rs b/kythe/rust/indexer/src/bin/bazel/main.rs
index c1f63323f..a21b867cc 100644
--- a/kythe/rust/indexer/src/bin/bazel/main.rs
+++ b/kythe/rust/indexer/src/bin/bazel/main.rs
@@ -14,30 +14,38 @@
extern crate kythe_rust_indexer;
use kythe_rust_indexer::{indexer::KytheIndexer, providers::*, writer::CodedOutputStreamWriter};
-use analysis_rust_proto::*;
use anyhow::{Context, Result};
-use std::{
- env,
- fs::File,
- io::Write,
- path::{Path, PathBuf},
-};
-use tempdir::TempDir;
+use clap::{App, Arg};
+use std::fs::File;
fn main() -> Result<()> {
- // Accepts kzip path as an argument
- // Calls indexer on each compilation unit
// Returns 0 if ok or 1 if error
- let args: Vec<String> = env::args().collect();
- if args.len() < 2 {
- eprintln!("Not enough arguments! Usage: rust_indexer <kzip path>");
- std::process::exit(1);
- } else if args.len() > 3 {
- eprintln!("Too many arguments! Usage: rust_indexer <kzip path>")
- }
+ let matches = App::new("Kythe Rust Bazel Indexer")
+ .arg(
+ Arg::with_name("kzip_path")
+ .required(true)
+ .index(1)
+ .help("The path to the kzip to be indexed"),
+ )
+ .arg(
+ Arg::with_name("no_emit_std_lib")
+ .long("no_emit_std_lib")
+ .required(false)
+ .help("Disables emitting cross references to the standard library"),
+ )
+ .arg(
+ Arg::with_name("tbuiltin_std_corpus")
+ .long("tbuiltin_std_corpus")
+ .required(false)
+ .help("Emits built-in types in the \"std\" corpus"),
+ )
+ .get_matches();
+ let emit_std_lib = !matches.is_present("no_emit_std_lib");
+ let tbuiltin_std_corpus = matches.is_present("tbuiltin_std_corpus");
// Get kzip path from argument and use it to create a KzipFileProvider
- let kzip_path = Path::new(&args[1]);
+ // Unwrap is safe because the parameter is required
+ let kzip_path = matches.value_of("kzip_path").unwrap();
let kzip_file = File::open(kzip_path).context("Provided path does not exist")?;
let mut kzip_provider =
KzipFileProvider::new(kzip_file).context("Failed to open kzip archive")?;
@@ -51,55 +59,7 @@ fn main() -> Result<()> {
let mut indexer = KytheIndexer::new(&mut writer);
for unit in compilation_units {
- // Create a temporary directory to store required files
- let temp_dir =
- TempDir::new("rust_indexer").context("Couldn't create temporary directory")?;
- let temp_path = PathBuf::new().join(temp_dir.path());
-
- // Extract the analysis files from the kzip into the temporary directory
- extract_analysis_from_kzip(&unit, &temp_path, &mut kzip_provider)?;
-
- // Index the CompilationUnit
- indexer.index_cu(&unit, &temp_path, &mut kzip_provider)?;
- }
- Ok(())
-}
-
-/// Takes analysis files from a kzip loaded into `provider` and extracts them
-/// to `temp_path` using the file names and digests in the CompilationUnit
-pub fn extract_analysis_from_kzip(
- c_unit: &CompilationUnit,
- temp_path: &Path,
- provider: &mut dyn FileProvider,
-) -> Result<()> {
- for required_input in c_unit.get_required_input() {
- let input_path = required_input.get_info().get_path();
- let input_path_buf = PathBuf::new().join(input_path);
-
- // save_analysis files are JSON files
- if let Some(os_str) = input_path_buf.extension() {
- if let Some("json") = os_str.to_str() {
- let digest = required_input.get_info().get_digest();
- let file_contents = provider.contents(input_path, digest).with_context(|| {
- format!(
- "Failed to get contents of file \"{}\" with digest \"{}\"",
- input_path, digest
- )
- })?;
-
- let output_path = temp_path.join(input_path_buf.file_name().unwrap());
- let mut output_file =
- File::create(&output_path).context("Failed to create file")?;
- output_file.write_all(&file_contents).with_context(|| {
- format!(
- "Failed to copy contents of \"{}\" with digest \"{}\" to \"{}\"",
- input_path,
- digest,
- output_path.display()
- )
- })?;
- }
- }
+ indexer.index_cu(&unit, &mut kzip_provider, emit_std_lib, tbuiltin_std_corpus)?;
}
Ok(())
}
diff --git a/kythe/rust/indexer/src/bin/proxy/main.rs b/kythe/rust/indexer/src/bin/proxy/main.rs
index e7e939f04..81492caeb 100644
--- a/kythe/rust/indexer/src/bin/proxy/main.rs
+++ b/kythe/rust/indexer/src/bin/proxy/main.rs
@@ -12,68 +12,42 @@
// See the License for the specific language governing permissions and
// limitations under the License.
extern crate kythe_rust_indexer;
-use kythe_rust_indexer::{
- error::KytheError, indexer::KytheIndexer, providers::*, proxyrequests, writer::ProxyWriter,
-};
+use kythe_rust_indexer::{indexer::KytheIndexer, providers::*, proxyrequests, writer::ProxyWriter};
use analysis_rust_proto::*;
use anyhow::{anyhow, Context, Result};
use clap::{App, Arg};
use serde_json::Value;
-use std::{
- fs::File,
- io::{self, Write},
- path::{Path, PathBuf},
-};
-use tempdir::TempDir;
+use std::io::{self, Write};
fn main() -> Result<()> {
- let matches = App::new("Kythe Rust Extractor")
+ let mut file_provider = ProxyFileProvider::new();
+ let mut kythe_writer = ProxyWriter::new();
+ let mut indexer = KytheIndexer::new(&mut kythe_writer);
+
+ let matches = App::new("Kythe Rust Proxy Indexer")
+ .arg(
+ Arg::with_name("no_emit_std_lib")
+ .long("no_emit_std_lib")
+ .required(false)
+ .help("Disables emitting cross references to the standard library"),
+ )
.arg(
- Arg::with_name("tmp_directory")
- .long("tmp_directory")
+ Arg::with_name("tbuiltin_std_corpus")
+ .long("tbuiltin_std_corpus")
.required(false)
- .takes_value(true)
- .help("A directory where to write save_analysis files"),
+ .help("Emits built-in types in the \"std\" corpus"),
)
.get_matches();
-
- // Get the absolute path of the tmp_directory argument or default to /tmp
- let tmp_path_arg = {
- if let Some(arg) = matches.value_of("tmp_directory") {
- let path = PathBuf::new().join(arg);
- assert!(path.is_dir(), "tmp_directory argument \"{}\" does not exist", arg);
- path
- } else {
- std::env::temp_dir()
- }
- };
-
- // Check if the tmp_directory exists
- if !tmp_path_arg.exists() {
- eprintln!("tmp_directory path is not a directory or does not exist");
- std::process::exit(1);
- }
-
- let mut file_provider = ProxyFileProvider::new();
- let mut kythe_writer = ProxyWriter::new();
- let mut indexer = KytheIndexer::new(&mut kythe_writer);
+ let emit_std_lib = !matches.is_present("no_emit_std_lib");
+ let tbuiltin_std_corpus = matches.is_present("tbuiltin_std_corpus");
// Request and process
loop {
let unit = request_compilation_unit()?;
- // Retrieve the save_analysis file
- let analysis_temp_dir = TempDir::new_in(tmp_path_arg.clone(), "rust_indexer_tmp")
- .context("Couldn't create temporary directory")?;
- let analysis_temp_path = PathBuf::new().join(analysis_temp_dir.path());
- let write_res = write_analysis_to_directory(&unit, &analysis_temp_path, &mut file_provider);
- if write_res.is_err() {
- send_done(false, write_res.err().unwrap().to_string())?;
- continue;
- }
-
// Index the CompilationUnit and let the proxy know we are done
- let index_res = indexer.index_cu(&unit, &analysis_temp_path, &mut file_provider);
+ let index_res =
+ indexer.index_cu(&unit, &mut file_provider, emit_std_lib, tbuiltin_std_corpus);
if index_res.is_ok() {
send_done(true, String::new())?;
} else {
@@ -82,47 +56,6 @@ fn main() -> Result<()> {
}
}
-/// Takes analysis files present in a CompilationUnit, requests the files
-/// from the proxy, and writes them to `temp_path`
-pub fn write_analysis_to_directory(
- c_unit: &CompilationUnit,
- temp_path: &Path,
- provider: &mut dyn FileProvider,
-) -> std::result::Result<(), KytheError> {
- for required_input in c_unit.get_required_input() {
- let input_path = required_input.get_info().get_path();
- let input_path_buf = PathBuf::new().join(input_path);
-
- // save_analysis files are JSON files
- if let Some(os_str) = input_path_buf.extension() {
- if let Some("json") = os_str.to_str() {
- let digest = required_input.get_info().get_digest();
- let file_contents = provider.contents(input_path, digest).map_err(|err| {
- KytheError::IndexerError(format!(
- "Failed to get contents of file \"{}\" with digest \"{}\": {:?}",
- input_path, digest, err
- ))
- })?;
-
- let output_path = temp_path.join(input_path_buf.file_name().unwrap());
- let mut output_file = File::create(&output_path).map_err(|err| {
- KytheError::IndexerError(format!("Failed to create file: {:?}", err))
- })?;
- output_file.write_all(&file_contents).map_err(|err| {
- KytheError::IndexerError(format!(
- "Failed to copy contents of \"{}\" with digest \"{}\" to \"{}\": {:?}",
- input_path,
- digest,
- output_path.display(),
- err
- ))
- })?;
- }
- }
- }
- Ok(())
-}
-
fn request_compilation_unit() -> Result<CompilationUnit> {
println!(r#"{{"req":"analysis_wire"}}"#);
io::stdout().flush().context("Failed to flush stdout")?;
diff --git a/kythe/rust/indexer/src/indexer/analyzers.rs b/kythe/rust/indexer/src/indexer/analyzers.rs
index fec789afe..26f6b3a62 100644
--- a/kythe/rust/indexer/src/indexer/analyzers.rs
+++ b/kythe/rust/indexer/src/indexer/analyzers.rs
@@ -20,8 +20,8 @@ use super::entries::EntryEmitter;
use super::offset::OffsetIndex;
use analysis_rust_proto::CompilationUnit;
-use rls_analysis::Crate;
-use rls_data::{Def, DefKind};
+use path_clean::clean;
+use rls_data::{Analysis, Def, DefKind};
use std::collections::HashMap;
use std::ffi::OsStr;
use storage_rust_proto::*;
@@ -52,8 +52,8 @@ pub struct CrateAnalyzer<'a, 'b> {
file_vnames: &'b HashMap<String, VName>,
// The current CompilationUnit's VName
unit_vname: &'b VName,
- // The current crate being analyzed
- krate: Crate,
+ // The save-analysis for the crate
+ analysis: Analysis,
// A map between a crate's identifier and a string consisting of
// "<disambiguator1>_<disambiguator2>"
krate_ids: HashMap<u32, rls_data::GlobalCrateId>,
@@ -70,6 +70,8 @@ pub struct CrateAnalyzer<'a, 'b> {
method_index: HashMap<rls_data::Id, MethodImpl>,
// A map from type names to their vnames
type_vnames: HashMap<String, VName>,
+ // Whether do emit references to the standard library
+ emit_std_lib: bool,
}
/// A data struct to keep track of method implementations. Used in a HashMap to
@@ -81,6 +83,12 @@ pub struct MethodImpl {
pub trait_target: Option<rls_data::Id>,
}
+/// Represents a span within a file based on byte offets
+pub struct ByteSpan {
+ pub start_byte: u32,
+ pub end_byte: u32,
+}
+
impl<'a> UnitAnalyzer<'a> {
/// Create an instance to assist in analyzing `unit`. Graph information will
/// be written to the `writer` and source file contents will be read using
@@ -89,21 +97,33 @@ impl<'a> UnitAnalyzer<'a> {
unit: &'a CompilationUnit,
writer: &'a mut dyn KytheWriter,
provider: &'a mut dyn FileProvider,
- ) -> Self {
+ ) -> Result<Self, KytheError> {
// Create a HashMap between the file path and the VName which we can retrieve
// later to emit nodes and create a HashMap between a file path and its digest
let mut file_vnames = HashMap::new();
let mut file_digests = HashMap::new();
+ let required_inputs = unit.get_required_input();
+
+ // Check if there are no required inputs
+ if required_inputs.is_empty() {
+ return Err(KytheError::IndexerError(
+ "There are no required inputs present in the CompilationUnit".to_owned(),
+ ));
+ }
+
for required_input in unit.get_required_input() {
let analysis_vname = required_input.get_v_name();
let path = required_input.get_info().get_path().to_owned();
- let storage_vname: VName = analysis_to_storage_vname(analysis_vname);
+ let mut storage_vname: VName = analysis_to_storage_vname(analysis_vname);
+ // Remove the language and signature fields from the VName
+ storage_vname.clear_language();
+ storage_vname.clear_signature();
file_vnames.insert(path.clone(), storage_vname);
file_digests.insert(path.clone(), required_input.get_info().get_digest().to_string());
}
let unit_storage_vname: VName = analysis_to_storage_vname(unit.get_v_name());
- Self {
+ Ok(Self {
unit,
unit_storage_vname,
emitter: EntryEmitter::new(writer),
@@ -111,7 +131,7 @@ impl<'a> UnitAnalyzer<'a> {
file_digests,
offset_index: OffsetIndex::default(),
provider,
- }
+ })
}
/// Emits file nodes for all of the source files in a CompilationUnit and
@@ -119,77 +139,67 @@ impl<'a> UnitAnalyzer<'a> {
pub fn handle_files(&mut self) -> Result<(), KytheError> {
// https://kythe.io/docs/schema/#file
for source_file in self.unit.get_source_file() {
- let vname_result = self.get_file_vname(source_file);
+ let vname_result = self.file_vnames.get(source_file);
// Generated files won't have a file vname returned
- if vname_result.is_err() {
+ if vname_result.is_none() {
continue;
}
- let mut vname = vname_result.unwrap();
-
- // Remove the language and signature fields from the VName
- vname.clear_language();
- vname.clear_signature();
+ let vname = vname_result.unwrap();
// Create the file node fact
- self.emitter.emit_fact(&vname, "/kythe/node/kind", b"file".to_vec())?;
+ self.emitter.emit_fact(vname, "/kythe/node/kind", b"file".to_vec())?;
// Create language fact
- self.emitter.emit_fact(&vname, "/kythe/language", b"rust".to_vec())?;
+ self.emitter.emit_fact(vname, "/kythe/language", b"rust".to_vec())?;
// Read the file contents and set it on the fact
// Returns a FileReadError if we can't read the file
- let file_contents: String;
- if let Some(file_digest) = self.file_digests.get(&source_file.to_string()) {
- let file_bytes = self.provider.contents(source_file, file_digest)?;
- file_contents = String::from_utf8(file_bytes).map_err(|_| {
- KytheError::IndexerError(format!(
- "Failed to read file {} as UTF8 string",
- source_file.to_string()
- ))
- })?;
- } else {
- return Err(KytheError::FileNotFoundError(source_file.to_string()));
- }
+ let file_contents: String =
+ if let Some(file_digest) = self.file_digests.get(source_file) {
+ let file_bytes = self.provider.contents(source_file, file_digest)?;
+ String::from_utf8(file_bytes).map_err(|_| {
+ KytheError::IndexerError(format!(
+ "Failed to read file {} as UTF8 string",
+ source_file
+ ))
+ })?
+ } else {
+ return Err(KytheError::FileNotFoundError(source_file.to_string()));
+ };
// Add the file to the OffsetIndex
self.offset_index.add_file(source_file, &file_contents);
// Create text fact
- self.emitter.emit_fact(&vname, "/kythe/text", file_contents.into_bytes())?;
+ self.emitter.emit_fact(vname, "/kythe/text", file_contents.into_bytes())?;
}
Ok(())
}
/// Indexes the provided crate
- pub fn index_crate(&mut self, krate: Crate) -> Result<(), KytheError> {
+ pub fn index_crate(
+ &mut self,
+ analysis: Analysis,
+ emit_std_lib: bool,
+ tbuiltin_std_corpus: bool,
+ ) -> Result<(), KytheError> {
let mut crate_analyzer = CrateAnalyzer::new(
&mut self.emitter,
&self.file_vnames,
&self.unit_storage_vname,
- krate,
+ analysis,
&self.offset_index,
+ emit_std_lib,
+ tbuiltin_std_corpus,
);
crate_analyzer.emit_crate_nodes()?;
crate_analyzer.emit_tbuiltin_nodes()?;
crate_analyzer.process_implementations()?;
crate_analyzer.emit_definitions()?;
+ crate_analyzer.emit_import_xrefs()?;
crate_analyzer.emit_xrefs()?;
Ok(())
}
-
- /// Given a file name, returns a [Result] with the file's VName from the
- /// Compilation Unit.
- ///
- /// # Errors
- /// If the file name isn't found, a [KytheError::IndexerError] is returned.
- fn get_file_vname(&mut self, file_name: &str) -> Result<VName, KytheError> {
- let err_msg = format!(
- "Failed to find VName for file \"{}\" located in the save analysis. Is it included in the required inputs of the Compilation Unit?",
- file_name
- );
- let vname = self.file_vnames.get(file_name).ok_or(KytheError::IndexerError(err_msg))?;
- Ok(vname.clone())
- }
}
impl<'a, 'b> CrateAnalyzer<'a, 'b> {
@@ -199,8 +209,10 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
emitter: &'b mut EntryEmitter<'a>,
file_vnames: &'b HashMap<String, VName>,
unit_vname: &'b VName,
- krate: Crate,
+ analysis: Analysis,
offset_index: &'b OffsetIndex,
+ emit_std_lib: bool,
+ tbuiltin_std_corpus: bool,
) -> Self {
// Initialize the type_vnames HashMap with builtin types
let types = vec![
@@ -232,7 +244,14 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
];
let mut type_vnames: HashMap<String, VName> = HashMap::new();
let mut vname_template = VName::new();
- vname_template.set_corpus("std".to_string());
+ // If true, emit the built-in types in the std corpus. Otherwise,
+ // emit in the same corpus as the compilation unit
+ if tbuiltin_std_corpus {
+ vname_template.set_corpus("std".to_string());
+ } else {
+ let unit_corpus = unit_vname.get_corpus().to_string();
+ vname_template.set_corpus(unit_corpus);
+ }
vname_template.set_root("".to_string());
vname_template.set_path("".to_string());
vname_template.set_language("rust".to_string());
@@ -245,7 +264,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
Self {
emitter,
file_vnames,
- krate,
+ analysis,
unit_vname,
krate_ids: HashMap::new(),
krate_vname: VName::new(),
@@ -254,35 +273,32 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
offset_index,
method_index: HashMap::new(),
type_vnames,
+ emit_std_lib,
}
}
/// Given a signature, generates a VName for a crate based on the VName of
/// the CompilationUnit
- fn generate_crate_vname(&self, signature: &str) -> VName {
- let mut crate_v_name = self.unit_vname.clone();
- crate_v_name.set_signature(signature.to_string());
- crate_v_name.set_language("rust".to_string());
- crate_v_name.clear_path();
- crate_v_name
+ fn generate_crate_vname(&self, krate_id: &rls_analysis::CrateId) -> VName {
+ let signature =
+ format!("{}_{}_{}", krate_id.disambiguator.0, krate_id.disambiguator.1, krate_id.name);
+ let mut krate_vname = self.unit_vname.clone();
+ krate_vname.set_signature(signature);
+ krate_vname.set_language("rust".to_owned());
+ krate_vname.clear_path();
+ krate_vname
}
/// Generates and emits package nodes for the main crate and external crates
/// NOTE: Must be called first to populate the self.krate_ids HashMap
pub fn emit_crate_nodes(&mut self) -> Result<(), KytheError> {
- let krate_analysis = &self.krate.analysis;
- let krate_prelude = &krate_analysis.prelude.as_ref().ok_or_else(|| {
- KytheError::IndexerError(format!(
- "Crate \"{}\" did not have prelude data",
- &self.krate.id.name
- ))
+ let krate_prelude = &self.analysis.prelude.as_ref().ok_or_else(|| {
+ KytheError::IndexerError("Crate did not have prelude data".to_string())
})?;
// First emit the node for our own crate and add it to the hashmap
let krate_id = &krate_prelude.crate_id;
- let krate_signature =
- format!("{}_{}_{}", krate_id.disambiguator.0, krate_id.disambiguator.1, krate_id.name);
- let krate_vname = self.generate_crate_vname(&krate_signature);
+ let krate_vname = self.generate_crate_vname(krate_id);
self.krate_vname = krate_vname.clone();
self.emitter.emit_fact(&krate_vname, "/kythe/node/kind", b"package".to_vec())?;
self.krate_ids.insert(0u32, krate_id.clone());
@@ -290,11 +306,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
// Then, do the same for all of the external crates
for (krate_num, external_krate) in krate_prelude.external_crates.iter().enumerate() {
let krate_id = &external_krate.id;
- let krate_signature = format!(
- "{}_{}_{}",
- krate_id.disambiguator.0, krate_id.disambiguator.1, krate_id.name
- );
- let krate_vname = self.generate_crate_vname(&krate_signature);
+ let krate_vname = self.generate_crate_vname(krate_id);
self.emitter.emit_fact(&krate_vname, "/kythe/node/kind", b"package".to_vec())?;
self.krate_ids.insert((krate_num + 1) as u32, krate_id.clone());
}
@@ -319,7 +331,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
// Create a HashMap mapping the implementation Id to the implementation
// It might be a safe assumption that the index is the Id, but we can't be too
// careful
- let impls = self.krate.analysis.impls.clone();
+ let impls = self.analysis.impls.clone();
let mut impl_map: HashMap<u32, rls_data::Impl> = HashMap::new();
for implementation in impls.iter() {
impl_map.insert(implementation.id, implementation.clone());
@@ -330,7 +342,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
// Create a HashMap betwen a method definition Id and the struct and trait being
// implemented on
let mut method_index: HashMap<rls_data::Id, MethodImpl> = HashMap::new();
- let relations = &self.krate.analysis.relations;
+ let relations = &self.analysis.relations;
for relation in relations.iter() {
// If this is an implementation relation
if let rls_data::RelationKind::Impl { id: impl_id, .. } = relation.kind {
@@ -403,27 +415,19 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
/// Emit Kythe graph information for the definitions in the crate
pub fn emit_definitions(&mut self) -> Result<(), KytheError> {
// We must clone to avoid double borrowing "self"
- let analysis = self.krate.analysis.clone();
+ let defs = self.analysis.defs.clone();
- for def in &analysis.defs {
- let file_vname = self.file_vnames.get(def.span.file_name.to_str().unwrap());
+ for def in &defs {
+ let file_name = clean(def.span.file_name.to_str().unwrap());
+ let file_vname = self.file_vnames.get(&file_name);
// save_analysis sometimes references files that we don't have as file nodes
if file_vname.is_none() {
continue;
}
if let Some(krate_id) = self.krate_ids.get(&def.id.krate) {
- let krate_signature = format!(
- "{}_{}_{}",
- krate_id.disambiguator.0, krate_id.disambiguator.1, krate_id.name
- );
-
// Generate node based on definition type
- let mut def_vname = self.krate_vname.clone();
- let def_signature = format!("{}_def_{}", krate_signature, def.id.index);
- def_vname.set_signature(def_signature.clone());
- def_vname.set_language("rust".to_string());
- def_vname.clear_path();
+ let def_vname = self.generate_def_vname(krate_id, def.id.index);
self.emit_definition_node(&def_vname, def, file_vname.unwrap())?;
} else {
// Generate a diagnostic node indicating that we couldn't find the refernced
@@ -434,7 +438,6 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
Some(&format!("Failed to generate cross reference for \"{}\" because the referenced crate could not be found", def.qualname)),
None
)?;
- eprintln!("Cross reference could not be generated: Failed to generate cross reference for \"{}\" because the referenced crate could not be found", def.qualname);
}
}
@@ -530,7 +533,6 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
Some("Failed to generate cross reference because the parent could not be found"),
None
)?;
- eprintln!("Cross reference could not be generated: Failed to generate cross reference for \"{}\" because the parent could not be found", def.qualname);
}
}
}
@@ -572,15 +574,12 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
if let Some(method_impl) = self.method_index.remove(&def.id) {
// Get the vname of the parent struct
// Need to have the option variable to avoid multiple borrows on "self".
- let parent_vname_option =
- self.definition_vnames.get(&method_impl.struct_target);
- let parent_vname = if let Some(vname) = parent_vname_option {
+ let parent_vname = self.definition_vnames.get(&method_impl.struct_target);
+ let parent_vname = if let Some(vname) = parent_vname {
vname.clone()
} else {
- // Create a default VName based on the krate's vname and use the target's
- // krate disambiguator and index to create the signature. Usually this
- // occurs if the save_analysis feeds us data that isn't part of our crate.
- let mut vname = self.krate_vname.clone();
+ // Usually this condition occurs if the save_analysis
+ // feeds us data that isn't part of our crate.
let krate_id = self
.krate_ids
.get(&method_impl.struct_target.krate)
@@ -590,15 +589,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
def.id, def.name
))
})?;
- let krate_signature = format!(
- "{}_{}_{}",
- krate_id.disambiguator.0, krate_id.disambiguator.1, krate_id.name
- );
- vname.set_signature(format!(
- "{}_def_{}",
- krate_signature, &method_impl.struct_target.index
- ));
- vname
+ self.generate_def_vname(krate_id, method_impl.struct_target.index)
};
// Emit a childof edge to the parent struct
self.emitter.emit_edge(def_vname, &parent_vname, "/kythe/edge/childof")?;
@@ -665,10 +656,10 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
}
// Calculate the byte_start and byte_end using the OffsetIndex
- let file_name = def.span.file_name.to_str().unwrap();
+ let file_name = clean(def.span.file_name.to_str().unwrap());
let byte_start = self
.offset_index
- .get_byte_offset(file_name, def.span.line_start.0, def.span.column_start.0)
+ .get_byte_offset(&file_name, def.span.line_start.0, def.span.column_start.0)
.ok_or_else(|| {
KytheError::IndexerError(format!(
"Failed to get starting offset for definition {}, {:?}",
@@ -677,7 +668,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
})?;
let byte_end = self
.offset_index
- .get_byte_offset(file_name, def.span.line_end.0, def.span.column_end.0)
+ .get_byte_offset(&file_name, def.span.line_end.0, def.span.column_end.0)
.ok_or_else(|| {
KytheError::IndexerError(format!(
"Failed to get ending offset for definition {}, {:?}",
@@ -687,6 +678,7 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
let mut anchor_vname = def_vname.clone();
anchor_vname.set_signature(format!("{}_anchor", def_vname.get_signature()));
+ anchor_vname.set_root(file_vname.get_root().to_string());
anchor_vname.set_path(file_vname.get_path().to_string());
// Module definitions need special logic if they are implicit
@@ -719,74 +711,202 @@ impl<'a, 'b> CrateAnalyzer<'a, 'b> {
Ok(())
}
+ /// Emit the Kythe edges for cross references for imports in this crate
+ pub fn emit_import_xrefs(&mut self) -> Result<(), KytheError> {
+ // We must clone to avoid double borrowing "self"
+ let imports = self.analysis.imports.clone();
+
+ let template_vname = self.krate_vname.clone();
+ let krate_signature = template_vname.get_signature();
+
+ for reference in &imports {
+ // If there is no reference id, we can't emit a cross reference
+ if reference.ref_id.is_none() {
+ continue;
+ }
+
+ // Currently this is only known to support `Use` ImportKinds
+ if reference.kind != rls_data::ImportKind::Use {
+ continue;
+ }
+
+ let mut reference_vname = template_vname.clone();
+ let span = &reference.span;
+
+ // Get the CrateId for the referenced crate
+ let ref_id = reference.ref_id.unwrap();
+ let krate_id = self.krate_ids.get(&ref_id.krate);
+ if krate_id.is_none() {
+ // This is a little bit of chicken and egg here. We could try
+ // and find the file vname first before the crate id, but then
+ // we wouldn't have a definition anchor to emit the diagnostic
+ // node to because we wouldn't have the crate id yet. The chance
+ // of a crate id not being in our HashMap is very low, so if this
+ // fails we just emit a diagnostic node to the first source file
+ // of the crate we are indexing
+ // Unwrap is safe because file_vnames will never be empty
+ let file_vname = self.file_vnames.values().next().unwrap();
+ self.emitter.emit_diagnostic(
+ file_vname,
+ "Cross reference could not be generated",
+ Some(&format!("Failed to generate cross reference for \"{:?}\" because the referenced crate could not be found", ref_id)),
+ None
+ )?;
+ continue;
+ }
+ let krate_id = krate_id.unwrap();
+
+ if krate_id.name == "std" && !self.emit_std_lib {
+ continue;
+ }
+
+ // Create VName for target of reference
+ let definition_vname = self.generate_def_vname(krate_id, ref_id.index);
+
+ // Create VName for the reference node
+ let file_name = clean(span.file_name.to_str().unwrap());
+ let file_vname = self.file_vnames.get(&file_name);
+ if file_vname.is_none() {
+ // Emit a diagostic node to the top level file for the current crate
+ let file_vname = self.file_vnames.values().next().unwrap();
+ self.emitter.emit_diagnostic(
+ file_vname,
+ "Failed to get file VName for reference",
+ Some(format!("The Rust indexer was unable to locate the file VName for the reference in the file \"{}\"", file_name).as_ref()),
+ None,
+ )?;
+ continue;
+ }
+ reference_vname.set_path(file_vname.unwrap().get_path().to_string());
+
+ let byte_span = self.get_byte_span(&ref_id, span)?;
+ if byte_span.is_none() {
+ continue;
+ }
+ let byte_span = byte_span.unwrap();
+
+ // Create signature based on span
+ reference_vname.set_signature(self.create_ref_signature(krate_signature, &byte_span));
+
+ self.emitter.emit_reference(&reference_vname, &definition_vname, byte_span)?;
+ }
+ Ok(())
+ }
+
+ // We need separate functions for import xrefs and normal xrefs due to
+ // different types being looped through
/// Emit the Kythe edges for cross references in this crate
pub fn emit_xrefs(&mut self) -> Result<(), KytheError> {
// We must clone to avoid double borrowing "self"
- let analysis = self.krate.analysis.clone();
+ let refs = self.analysis.refs.clone();
- let mut template_vname = self.krate_vname.clone();
- template_vname.set_language("rust".to_string());
+ let template_vname = self.krate_vname.clone();
let krate_signature = template_vname.get_signature();
- for reference in &analysis.refs {
+ for reference in &refs {
let mut reference_vname = template_vname.clone();
let span = &reference.span;
+ let ref_id = reference.ref_id;
+
+ // Get the CrateId for the referenced crate
+ let krate_id = self.krate_ids.get(&ref_id.krate);
+ if krate_id.is_none() {
+ // This is a little bit of chicken and egg here. We could try
+ // and find the file vname first before the crate id, but then
+ // we wouldn't have a definition anchor to emit the diagnostic
+ // node to because we wouldn't have the crate id yet. The chance
+ // of a crate id not being in our HashMap is very low, so if this
+ // fails we just emit a diagnostic node to the first source file
+ // of the crate we are indexing
+ let file_vname = self.file_vnames.values().next().unwrap();
+ self.emitter.emit_diagnostic(
+ file_vname,
+ "Cross reference could not be generated",
+ Some(&format!("Failed to generate cross reference for \"{:?}\" because the referenced crate could not be found", ref_id)),
+ None
+ )?;
+ continue;
+ }
+ let krate_id = krate_id.unwrap();
+
+ if krate_id.name == "std" && !self.emit_std_lib {
+ continue;
+ }
// Create VName for target of reference
- let mut target_vname = template_vname.clone();
- target_vname
- .set_signature(format!("{}_def_{}", krate_signature, reference.ref_id.index));
- target_vname.set_language("rust".to_string());
+ let target_vname = self.generate_def_vname(krate_id, ref_id.index);
// Create VName for the reference node
- let file_vname = self.file_vnames.get(span.file_name.to_str().unwrap());
+ let file_name = clean(span.file_name.to_str().unwrap());
+ let file_vname = self.file_vnames.get(&file_name);
if file_vname.is_none() {
self.emitter.emit_diagnostic(
&target_vname,
"Failed to get file VName for reference",
- Some(format!("The Rust indexer was unable to locate the file VName for the reference in the file \"{}\"", span.file_name.to_str().unwrap()).as_ref()),
+ Some(format!("The Rust indexer was unable to locate the file VName for the reference in the file \"{}\"", file_name).as_ref()),
None,
)?;
continue;
}
reference_vname.set_path(file_vname.unwrap().get_path().to_string());
- // Get byte span
- let start_byte_option = self.offset_index.get_byte_offset(
- span.file_name.to_str().unwrap(),
- span.line_start.0,
- span.column_start.0,
- );
-
- // If the start byte is none, then the save_analysis is giving information about
- // standard library files and we should skip
- if start_byte_option.is_none() {
+ let byte_span = self.get_byte_span(&reference.ref_id, span)?;
+ if byte_span.is_none() {
continue;
}
-
- let start_byte = start_byte_option.unwrap();
- let end_byte = self
- .offset_index
- .get_byte_offset(
- span.file_name.to_str().unwrap(),
- span.line_end.0,
- span.column_end.0,
- )
- .ok_or_else(|| {
- KytheError::IndexerError(format!(
- "Failed to get ending offset for reference {:?}",
- reference
- ))
- })?;
+ let byte_span = byte_span.unwrap();
// Create signature based on span
- reference_vname
- .set_signature(format!("{}_ref_{}_{}", krate_signature, start_byte, end_byte));
+ reference_vname.set_signature(self.create_ref_signature(krate_signature, &byte_span));
- self.emitter.emit_reference(&reference_vname, &target_vname, start_byte, end_byte)?;
+ self.emitter.emit_reference(&reference_vname, &target_vname, byte_span)?;
}
Ok(())
}
+
+ /// Creates a signature for a definition with the given id
+ fn create_ref_signature(&self, signature: &str, byte_span: &ByteSpan) -> String {
+ format!("{}_ref_{}_{}", signature, byte_span.start_byte, byte_span.end_byte)
+ }
+
+ /// Creates a signature for a definition with the given id
+ fn generate_def_vname(&self, crate_id: &rls_analysis::CrateId, index: u32) -> VName {
+ let mut crate_vname = self.generate_crate_vname(crate_id);
+ let crate_signature = crate_vname.get_signature().to_owned();
+ crate_vname.set_signature(format!("{}_def_{}", crate_signature, index));
+ crate_vname
+ }
+
+ /// Return byte span for an analysis span
+ fn get_byte_span(
+ &self,
+ ref_id: &rls_data::Id,
+ span: &rls_data::SpanData,
+ ) -> Result<Option<ByteSpan>, KytheError> {
+ // Get byte span
+ let file_name = clean(span.file_name.to_str().unwrap());
+ let start_byte =
+ self.offset_index.get_byte_offset(&file_name, span.line_start.0, span.column_start.0);
+
+ // If the start byte is none, then the save_analysis is giving information about
+ // standard library files and we should skip
+ if start_byte.is_none() {
+ return Ok(None);
+ }
+
+ let start_byte = start_byte.unwrap();
+ let end_byte = self
+ .offset_index
+ .get_byte_offset(&file_name, span.line_end.0, span.column_end.0)
+ .ok_or_else(|| {
+ KytheError::IndexerError(format!(
+ "Failed to get ending offset for reference {:?}",
+ ref_id
+ ))
+ })?;
+
+ Ok(Some(ByteSpan { start_byte, end_byte }))
+ }
}
/// Convert a VName from analysis_rust_proto to a VName from storage_rust_proto
diff --git a/kythe/rust/indexer/src/indexer/entries.rs b/kythe/rust/indexer/src/indexer/entries.rs
index 5bddf0e54..169eaecee 100644
--- a/kythe/rust/indexer/src/indexer/entries.rs
+++ b/kythe/rust/indexer/src/indexer/entries.rs
@@ -13,6 +13,7 @@
// limitations under the License.
use crate::error::KytheError;
+use crate::indexer::analyzers::ByteSpan;
use crate::writer::KytheWriter;
use sha2::{Digest, Sha256};
@@ -97,16 +98,19 @@ impl<'a> EntryEmitter<'a> {
&mut self,
anchor_vname: &VName,
target_vname: &VName,
- byte_start: u32,
- byte_end: u32,
+ byte_span: ByteSpan,
) -> Result<(), KytheError> {
self.emit_fact(anchor_vname, "/kythe/node/kind", b"anchor".to_vec())?;
self.emit_fact(
anchor_vname,
"/kythe/loc/start",
- byte_start.to_string().into_bytes().to_vec(),
+ byte_span.start_byte.to_string().into_bytes().to_vec(),
+ )?;
+ self.emit_fact(
+ anchor_vname,
+ "/kythe/loc/end",
+ byte_span.end_byte.to_string().into_bytes().to_vec(),
)?;
- self.emit_fact(anchor_vname, "/kythe/loc/end", byte_end.to_string().into_bytes().to_vec())?;
self.emit_edge(anchor_vname, target_vname, "/kythe/edge/ref")
}
@@ -132,9 +136,8 @@ impl<'a> EntryEmitter<'a> {
let sha256sum = hex::encode(bytes);
// Use source_vname signature and sha256 sum to generate diagnostic signature
- let mut diagnostic_vname = VName::new();
- let source_signature = source_vname.get_signature();
- diagnostic_vname.set_signature(format!("{}_{}", source_signature, sha256sum));
+ let mut diagnostic_vname = source_vname.clone();
+ diagnostic_vname.set_signature(format!("{}_{}", source_vname.get_signature(), sha256sum));
// Emit diagnostic node
self.emit_fact(&diagnostic_vname, "/kythe/node/kind", b"diagnostic".to_vec())?;
diff --git a/kythe/rust/indexer/src/indexer/mod.rs b/kythe/rust/indexer/src/indexer/mod.rs
index 93e47c66e..aea951881 100644
--- a/kythe/rust/indexer/src/indexer/mod.rs
+++ b/kythe/rust/indexer/src/indexer/mod.rs
@@ -15,7 +15,6 @@
pub mod analyzers;
pub mod entries;
pub mod offset;
-pub mod save_analysis;
use crate::error::KytheError;
use crate::providers::FileProvider;
@@ -23,7 +22,7 @@ use crate::writer::KytheWriter;
use analysis_rust_proto::*;
use analyzers::UnitAnalyzer;
-use std::path::Path;
+use std::path::PathBuf;
/// A data structure for indexing CompilationUnits
pub struct KytheIndexer<'a> {
@@ -41,22 +40,49 @@ impl<'a> KytheIndexer<'a> {
pub fn index_cu(
&mut self,
unit: &CompilationUnit,
- analysis_dir: &Path,
provider: &mut dyn FileProvider,
+ emit_std_lib: bool,
+ tbuiltin_std_corpus: bool,
) -> Result<(), KytheError> {
- let mut generator = UnitAnalyzer::new(unit, self.writer, provider);
+ let analysis_file = Self::get_analysis_file(unit, provider)?;
+ let mut generator = UnitAnalyzer::new(unit, self.writer, provider)?;
- // First, create file nodes for all of the source files in the CompilationUnit
- generator.handle_files()?;
-
- // Then, index all of the crates from the save_analysis
- let analyzed_crates = save_analysis::load_analysis(analysis_dir);
- for krate in analyzed_crates {
- generator.index_crate(krate)?;
+ if let Some(analysis) = rls_analysis::deserialize_crate_data(&analysis_file) {
+ // First, create file nodes for all of the source files in the CompilationUnit
+ generator.handle_files()?;
+ // Then index the crate
+ generator.index_crate(analysis, emit_std_lib, tbuiltin_std_corpus)?;
+ } else {
+ return Err(KytheError::IndexerError(
+ "Failed to deserialize save-analysis file".to_string(),
+ ));
}
// We must flush the writer each time to ensure that all entries get written
self.writer.flush()?;
Ok(())
}
+
+ fn get_analysis_file(
+ c_unit: &CompilationUnit,
+ provider: &mut dyn FileProvider,
+ ) -> Result<String, KytheError> {
+ for required_input in c_unit.get_required_input() {
+ let input_path = required_input.get_info().get_path();
+ let input_path_buf = PathBuf::from(input_path);
+
+ // save_analysis files are JSON files
+ if let Some(os_str) = input_path_buf.extension() {
+ if let Some("json") = os_str.to_str() {
+ let hash = required_input.get_info().get_digest();
+ let file_bytes = provider.contents(input_path, hash)?;
+ let file_string = String::from_utf8_lossy(&file_bytes);
+ return Ok(file_string.to_string());
+ }
+ }
+ }
+ Err(KytheError::IndexerError(
+ "The save-analysis file could not be found in the Compilation Unit".to_string(),
+ ))
+ }
}
diff --git a/kythe/rust/indexer/src/indexer/save_analysis.rs b/kythe/rust/indexer/src/indexer/save_analysis.rs
deleted file mode 100644
index 2e117cc80..000000000
--- a/kythe/rust/indexer/src/indexer/save_analysis.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2020 The Kythe Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! The purpose of this module is to implement functionality to recompile the
-//! CompilationUnit and generate a save analysis that can be used by the rest of
-//! the indexer to generate Kythe graph nodes.
-
-use rls_analysis::{AnalysisHost, AnalysisLoader, Crate, SearchDirectory};
-use std::path::{Path, PathBuf};
-
-// Loader struct pulled from the rls_analysis example code: https://git.io/JfjAn
-#[derive(Clone)]
-pub struct Loader {
- deps_dir: PathBuf,
-}
-
-impl Loader {
- pub fn new(deps_dir: PathBuf) -> Self {
- Self { deps_dir }
- }
-}
-
-impl AnalysisLoader for Loader {
- fn needs_hard_reload(&self, _: &Path) -> bool {
- true
- }
-
- fn fresh_host(&self) -> AnalysisHost<Self> {
- AnalysisHost::new_with_loader(self.clone())
- }
-
- fn set_path_prefix(&mut self, _: &Path) {}
-
- fn abs_path_prefix(&self) -> Option<PathBuf> {
- None
- }
- fn search_directories(&self) -> Vec<SearchDirectory> {
- vec![SearchDirectory { path: self.deps_dir.clone(), prefix_rewrite: None }]
- }
-}
-
-/// Takes a PathBuf and loads the save_analysis files from the path
-pub fn load_analysis(root_dir: &Path) -> Vec<Crate> {
- let loader = Loader::new(root_dir.to_path_buf());
- rls_analysis::read_analysis_from_files(&loader, Default::default(), &[] as &[&str])
-}
diff --git a/kythe/rust/indexer/src/providers.rs b/kythe/rust/indexer/src/providers.rs
index 08c6ec01b..176052d21 100644
--- a/kythe/rust/indexer/src/providers.rs
+++ b/kythe/rust/indexer/src/providers.rs
@@ -82,7 +82,7 @@ impl KzipFileProvider {
}
// Safe to unwrap because kzip read would have failed if the internal paths
// weren't UTF-8
- path.to_str().unwrap().to_owned().replace("/", "")
+ path.to_str().unwrap().to_owned().replace('/', "")
};
Ok(Self { zip_archive, root_name })
diff --git a/kythe/rust/indexer/testdata/out_dir/generated.rs b/kythe/rust/indexer/testdata/out_dir/generated.rs
new file mode 100644
index 000000000..d1ca113a6
--- /dev/null
+++ b/kythe/rust/indexer/testdata/out_dir/generated.rs
@@ -0,0 +1,6 @@
+//- @print_hello_world=vname(_,_,"bazel-out/bin",_,_) defines/binding FnPrint
+//- FnPrint.node/kind function
+//- FnPrint.complete definition
+pub fn print_hello_world() {
+ println!("Hello, world!");
+}
diff --git a/kythe/rust/indexer/testdata/out_dir/main.rs b/kythe/rust/indexer/testdata/out_dir/main.rs
new file mode 100644
index 000000000..3979625d5
--- /dev/null
+++ b/kythe/rust/indexer/testdata/out_dir/main.rs
@@ -0,0 +1,6 @@
+include!(concat!(env!("OUT_DIR"), "/generated.rs"));
+
+fn main() {
+ //- @print_hello_world ref FnPrint
+ print_hello_world();
+}
diff --git a/kythe/rust/indexer/testdata/relative/relative_module/mod.rs b/kythe/rust/indexer/testdata/relative/relative_module/mod.rs
new file mode 100644
index 000000000..8591d46df
--- /dev/null
+++ b/kythe/rust/indexer/testdata/relative/relative_module/mod.rs
@@ -0,0 +1,14 @@
+//- RelativeModAnchor.node/kind anchor
+//- RelativeModAnchor.loc/start 0
+//- RelativeModAnchor.loc/end 0
+//- RelativeModAnchor defines/implicit RelativeMod
+//- RelativeMod.node/kind record
+//- RelativeMod.subkind module
+//- RelativeMod.complete definition
+
+//- @print_hello_world defines/binding FnPrint
+//- FnPrint.node/kind function
+//- FnPrint.complete definition
+pub fn print_hello_world() {
+ println!("Hello, world!");
+}
diff --git a/kythe/rust/indexer/testdata/relative/src/main.rs b/kythe/rust/indexer/testdata/relative/src/main.rs
new file mode 100644
index 000000000..28d73976d
--- /dev/null
+++ b/kythe/rust/indexer/testdata/relative/src/main.rs
@@ -0,0 +1,8 @@
+#[path = "../relative_module/mod.rs"]
+//- @relative_module ref RelativeMod
+mod relative_module;
+
+fn main() {
+ //- @print_hello_world ref FnPrint
+ relative_module::print_hello_world();
+}
diff --git a/kythe/rust/indexer/testdata/tbuiltin.rs b/kythe/rust/indexer/testdata/tbuiltin.rs
index 440cd8170..f3d846192 100644
--- a/kythe/rust/indexer/testdata/tbuiltin.rs
+++ b/kythe/rust/indexer/testdata/tbuiltin.rs
@@ -1,27 +1,27 @@
-//- _ArrayBuiltin=vname("array#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _BoolBuiltin=vname("bool#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _CharBuiltin=vname("char#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _ClosureBuiltin=vname("closure#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _EnumBuiltin=vname("enum#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _F32Builtin=vname("f32#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _F64Builtin=vname("f64#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _I8Builtin=vname("i8#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _I16Builtin=vname("i16#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _I32Builtin=vname("i32#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _I64Builtin=vname("i64#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _I128Builtin=vname("i128#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _IsizeBuiltin=vname("isize#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _NeverBuiltin=vname("never#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _ReferenceBuiltin=vname("reference#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _SliceBuiltin=vname("slice#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _StrBuiltin=vname("str#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _TraitBuiltin=vname("trait#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _TupleBuiltin=vname("tuple#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _U8Builtin=vname("u8#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _U16Builtin=vname("u16#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _U32Builtin=vname("u32#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _U64Builtin=vname("u64#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _U128Builtin=vname("u128#builtin", "std", _, _, "rust").node/kind tbuiltin
-//- _UsizeBuiltin=vname("usize#builtin", "std", _, _, "rust").node/kind tbuiltin
+//- _ArrayBuiltin=vname("array#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _BoolBuiltin=vname("bool#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _CharBuiltin=vname("char#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _ClosureBuiltin=vname("closure#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _EnumBuiltin=vname("enum#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _F32Builtin=vname("f32#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _F64Builtin=vname("f64#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _I8Builtin=vname("i8#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _I16Builtin=vname("i16#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _I32Builtin=vname("i32#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _I64Builtin=vname("i64#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _I128Builtin=vname("i128#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _IsizeBuiltin=vname("isize#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _NeverBuiltin=vname("never#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _ReferenceBuiltin=vname("reference#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _SliceBuiltin=vname("slice#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _StrBuiltin=vname("str#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _TraitBuiltin=vname("trait#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _TupleBuiltin=vname("tuple#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _U8Builtin=vname("u8#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _U16Builtin=vname("u16#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _U32Builtin=vname("u32#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _U64Builtin=vname("u64#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _U128Builtin=vname("u128#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
+//- _UsizeBuiltin=vname("usize#builtin", "test_corpus", _, _, "rust").node/kind tbuiltin
fn main() {}
diff --git a/kythe/rust/indexer/testdata/xrefs/main.rs b/kythe/rust/indexer/testdata/xrefs/main.rs
index 71da250d3..16400c089 100644
--- a/kythe/rust/indexer/testdata/xrefs/main.rs
+++ b/kythe/rust/indexer/testdata/xrefs/main.rs
@@ -8,9 +8,16 @@
//- MainMod.subkind module
//- MainMod.complete definition
-////- @log ref LogMod
+//- @log ref LogMod
mod log;
+//- @log ref LogMod
+//- @hello_world ref HelloWorldFn
+use log::hello_world;
+
+//- !{ @std defines/binding _ }
+use std::path::Path;
+
//- @NUM defines/binding NumConst
//- NumConst.node/kind constant
const NUM: u32 = 0;
@@ -61,6 +68,13 @@ impl TestTrait for TestStruct {
}
}
+//- @crate_import_test defines/binding CrateImportTestFn
+//- CrateImportTestFn.node/kind function
+//- CrateImportTestFn.complete definition
+pub fn crate_import_test() {
+ println!("Hello, crate xrefs!");
+}
+
fn main() {
//- @var1 defines/binding Var1
let var1 = 1;
@@ -99,7 +113,29 @@ fn main() {
//- @TestStruct ref Struct
TestStruct::hello();
- ////- @log ref LogMod
+ //- @log ref LogMod
//- @hello_world ref HelloWorldFn
log::hello_world();
+
+ //- @hello_world ref HelloWorldFn
+ hello_world();
+
+ //- @crate_import ref CrateImportMod
+ //- @run_import_test ref RCIT_Fn
+ crate_import::run_import_test();
+
+ // Appease the compiler so we don't get warnings
+ let _path = Path::new("/");
}
+
+//- @crate_import defines/binding CrateImportMod
+mod crate_import {
+ //- @crate_import_test ref CrateImportTestFn
+ use crate::crate_import_test;
+
+ //- @run_import_test defines/binding RCIT_Fn
+ pub fn run_import_test() {
+ //- @crate_import_test ref CrateImportTestFn
+ crate_import_test();
+ }
+} \ No newline at end of file
diff --git a/kythe/rust/indexer/tests/indexer_entries.rs b/kythe/rust/indexer/tests/indexer_entries.rs
index b6fd21f4d..7e660f5bc 100644
--- a/kythe/rust/indexer/tests/indexer_entries.rs
+++ b/kythe/rust/indexer/tests/indexer_entries.rs
@@ -17,6 +17,7 @@ use crate::array_writer::ArrayWriter;
extern crate kythe_rust_indexer;
use kythe_rust_indexer::error::KytheError;
use kythe_rust_indexer::indexer::entries::EntryEmitter;
+use sha2::{Digest, Sha256};
use storage_rust_proto::*;
// This test checks that the emit_fact function works properly
@@ -122,3 +123,73 @@ fn anchors_properly_emitted() -> Result<(), KytheError> {
Ok(())
}
+
+// This test checks that the emit_diagnostic function works properly
+#[test]
+fn diagnostics_properly_emitted() -> Result<(), KytheError> {
+ // Create an emitter that writes to the ArrayWriter. This makes it easier to
+ // look at the emitted Entry protobufs.
+ let mut array_writer = ArrayWriter::new();
+ let mut emitter = EntryEmitter::new(&mut array_writer);
+
+ // Create source_vname for the test
+ let mut source_vname = VName::new();
+ source_vname.set_signature("test_signature".to_string());
+ source_vname.set_corpus("test_corpus".to_string());
+ source_vname.set_language("test_language".to_string());
+
+ emitter.emit_diagnostic(
+ &source_vname,
+ "test diagnostic",
+ Some("test details"),
+ Some("test url"),
+ )?;
+ let verify_diagnostic_vname = |vname: &VName| -> () {
+ assert_eq!(vname.get_corpus(), "test_corpus");
+ assert_eq!(vname.get_language(), "test_language");
+ };
+
+ // There should be 5 Entry protobufs
+ let entries = array_writer.as_ref();
+ assert_eq!(entries.len(), 5);
+
+ // The first entry defines the kind
+ let entry0 = entries.get(0).unwrap();
+ verify_diagnostic_vname(&entry0.get_source());
+ assert_eq!(entry0.get_fact_name(), "/kythe/node/kind");
+ assert_eq!(entry0.get_fact_value(), b"diagnostic".to_vec());
+
+ // The second and third define the start/end of the anchor
+ let entry1 = entries.get(1).unwrap();
+ verify_diagnostic_vname(&entry1.get_source());
+ assert_eq!(entry1.get_fact_name(), "/kythe/message");
+ assert_eq!(entry1.get_fact_value(), b"test diagnostic".to_vec());
+
+ let entry2 = entries.get(2).unwrap();
+ verify_diagnostic_vname(&entry2.get_source());
+ assert_eq!(entry2.get_fact_name(), "/kythe/details");
+ assert_eq!(entry2.get_fact_value(), b"test details".to_vec());
+
+ let entry3 = entries.get(3).unwrap();
+ verify_diagnostic_vname(&entry3.get_source());
+ assert_eq!(entry3.get_fact_name(), "/kythe/context/url");
+ assert_eq!(entry3.get_fact_value(), b"test url".to_vec());
+
+ let entry4 = entries.get(4).unwrap();
+ let mut expected_diagnostic_vname = source_vname.clone();
+
+ // Combine diagnostic message fields and create sha256 sum for signature
+ let combined_description = format!("{}||{}||{}", "test diagnostic", "test details", "test url");
+ let mut sha256 = Sha256::new();
+ sha256.update(combined_description.as_str().as_bytes());
+ let bytes = sha256.finalize();
+ let sha256sum = hex::encode(bytes);
+ expected_diagnostic_vname.set_signature(format!("{}_{}", "test_signature", sha256sum));
+
+ assert_eq!(*entry4.get_source(), source_vname);
+ assert_eq!(*entry4.get_target(), expected_diagnostic_vname);
+ assert_eq!(entry4.get_fact_name(), "/");
+ assert_eq!(entry4.get_edge_kind(), "/kythe/edge/tagged");
+
+ Ok(())
+}
diff --git a/kythe/rust/indexer/tests/indexer_save_analysis.rs b/kythe/rust/indexer/tests/indexer_save_analysis.rs
deleted file mode 100644
index 59f39d7eb..000000000
--- a/kythe/rust/indexer/tests/indexer_save_analysis.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020 The Kythe Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-extern crate kythe_rust_indexer;
-use kythe_rust_indexer::indexer::save_analysis::load_analysis;
-
-extern crate runfiles;
-use runfiles::Runfiles;
-
-use std::fs;
-use std::path::PathBuf;
-
-// Ensures that the load_analysis function loads the crate from the
-// save_analysis file in a given directory
-#[test]
-fn load_analysis_works_properly() {
- // rls_analysis can't see files that are symlinks, so we must copy the test file
- // to a temporary directory for the test to properly work
- let temp_path = PathBuf::new().join(std::env::var("TEST_TMPDIR").unwrap());
- let r = Runfiles::create().unwrap();
- let path = r.rlocation("io_kythe/kythe/rust/indexer/tests/testanalysis.json");
- fs::copy(&path, temp_path.join("main.json")).expect("Couldn't copy file");
-
- // We load the analysis and check that there is one Crate returned
- let crates = load_analysis(&temp_path);
- assert_eq!(crates.len(), 1);
-}
diff --git a/kythe/rust/indexer/tests/lib.rs b/kythe/rust/indexer/tests/lib.rs
index 45ae85ffd..fe7a24918 100644
--- a/kythe/rust/indexer/tests/lib.rs
+++ b/kythe/rust/indexer/tests/lib.rs
@@ -18,5 +18,4 @@ extern crate storage_rust_proto;
pub mod array_writer;
mod indexer_entries;
-mod indexer_save_analysis;
mod providers;
diff --git a/kythe/rust/indexer/tests/providers.rs b/kythe/rust/indexer/tests/providers.rs
index b42ad8084..fb73c72e1 100644
--- a/kythe/rust/indexer/tests/providers.rs
+++ b/kythe/rust/indexer/tests/providers.rs
@@ -25,8 +25,7 @@ use std::path::PathBuf;
/// Get the path of the provided runfile
fn get_runfile(file: &str) -> PathBuf {
let r = Runfiles::create().unwrap();
- let location = String::from("io_kythe/kythe/rust/indexer/tests/");
- r.rlocation(location + file)
+ r.rlocation("io_kythe/kythe/rust/indexer/tests/".to_owned() + file)
}
#[test]
@@ -54,7 +53,11 @@ fn test_kzip_provider() {
assert_eq!(contents_string, "Test\n", "File contents did not match expected contents");
let invalid_contents = kzip_provider.contents("invalid", "invalid");
- assert!(invalid_contents.is_err(), "Expected Err while reading contents for non-existent file, but received file contents: {:?}", invalid_contents.unwrap());
+ assert!(
+ invalid_contents.is_err(),
+ "Expected Err while reading contents for non-existent file, but received file contents: {:?}",
+ invalid_contents.unwrap()
+ );
let contents_error = invalid_contents.err().unwrap();
match contents_error {
KytheError::FileNotFoundError(_) => {}
diff --git a/kythe/rust/indexer/tests/testanalysis.json b/kythe/rust/indexer/tests/testanalysis.json
deleted file mode 100644
index 1b4479ac6..000000000
--- a/kythe/rust/indexer/tests/testanalysis.json
+++ /dev/null
@@ -1 +0,0 @@
-{"config":{"output_file":null,"full_docs":false,"pub_only":false,"reachable_only":false,"distro_crate":false,"signatures":false,"borrow_data":false},"version":"0.19.0","compilation":{"directory":"/tmp","program":"/usr/local/google/home/wcalandro/.rustup/toolchains/nightly-2020-06-23-x86_64-unknown-linux-gnu/bin/rustc","arguments":["main.rs","-Z","save-analysis"],"output":"main"},"prelude":{"crate_id":{"name":"main","disambiguator":[3566085715814566142,9444397947401217587]},"crate_root":"","external_crates":[{"file_name":"/tmp/main.rs","num":1,"id":{"name":"std","disambiguator":[15171822389981698586,9596930288317159773]}},{"file_name":"/tmp/main.rs","num":2,"id":{"name":"core","disambiguator":[309489290393175025,9116230521283433112]}},{"file_name":"/tmp/main.rs","num":3,"id":{"name":"compiler_builtins","disambiguator":[4391997853131671271,2752570053062459009]}},{"file_name":"/tmp/main.rs","num":4,"id":{"name":"rustc_std_workspace_core","disambiguator":[680011651820151502,5018330578075825921]}},{"file_name":"/tmp/main.rs","num":5,"id":{"name":"alloc","disambiguator":[4249137077638888796,17834651879708154657]}},{"file_name":"/tmp/main.rs","num":6,"id":{"name":"libc","disambiguator":[13082819734751436340,16140962863799451331]}},{"file_name":"/tmp/main.rs","num":7,"id":{"name":"unwind","disambiguator":[8371738565553744270,17943531712744420027]}},{"file_name":"/tmp/main.rs","num":8,"id":{"name":"cfg_if","disambiguator":[17468180561489458258,7285327718060701271]}},{"file_name":"/tmp/main.rs","num":9,"id":{"name":"backtrace","disambiguator":[14551538593801126895,13478667531910088620]}},{"file_name":"/tmp/main.rs","num":10,"id":{"name":"rustc_demangle","disambiguator":[16022708609364593127,529027819734980321]}},{"file_name":"/tmp/main.rs","num":11,"id":{"name":"backtrace_sys","disambiguator":[18024135037275500963,3187671833432925572]}},{"file_name":"/tmp/main.rs","num":12,"id":{"name":"hashbrown","disambiguator":[5194268306266264186,14551347693776345482]}},{"file_name":"/tmp/main.rs","num":13,"id":{"name":"rustc_std_workspace_alloc","disambiguator":[18097577876301876973,855323625195415836]}},{"file_name":"/tmp/main.rs","num":14,"id":{"name":"panic_unwind","disambiguator":[5106557709654100294,13294098602154984522]}},{"file_name":"/tmp/main.rs","num":15,"id":{"name":"rustc_driver","disambiguator":[14192850195768046363,16644877257826291528]}},{"file_name":"/tmp/main.rs","num":16,"id":{"name":"log","disambiguator":[11550677137131053597,8897656431988346417]}},{"file_name":"/tmp/main.rs","num":17,"id":{"name":"cfg_if","disambiguator":[13924887699630628105,8703740567740264874]}},{"file_name":"/tmp/main.rs","num":18,"id":{"name":"lazy_static","disambiguator":[10916124293957172795,15098703221428228446]}},{"file_name":"/tmp/main.rs","num":19,"id":{"name":"rustc_plugin_impl","disambiguator":[11343894820915995962,1694868797293137943]}},{"file_name":"/tmp/main.rs","num":20,"id":{"name":"rustc_lint","disambiguator":[5782920800833521804,4464782239806438684]}},{"file_name":"/tmp/main.rs","num":21,"id":{"name":"rustc_middle","disambiguator":[12507206551484427311,1831025853488000767]}},{"file_name":"/tmp/main.rs","num":22,"id":{"name":"bitflags","disambiguator":[4862083413055604294,11166623983360879369]}},{"file_name":"/tmp/main.rs","num":23,"id":{"name":"scoped_tls","disambiguator":[12850215462998664970,411865149405282448]}},{"file_name":"/tmp/main.rs","num":24,"id":{"name":"rustc_macros","disambiguator":[2581056861312210942,17152810412616713753]}},{"file_name":"/tmp/main.rs","num":25,"id":{"name":"rustc_data_structures","disambiguator":[3252577588424115448,7646954205635988438]}},{"file_name":"/tmp/main.rs","num":26,"id":{"name":"rustc_hash","disambiguator":[14527567947201838759,17515063080408879389]}},{"file_name":"/tmp/main.rs","num":27,"id":{"name":"rustc_index","disambiguator":[8100571028684605683,3259149406726741065]}},{"file_name":"/tmp/main.rs","num":28,"id":{"name":"smallvec","disambiguator":[12180548975541192007,12326215812301575583]}},{"file_name":"/tmp/main.rs","num":29,"id":{"name":"rustc_serialize","disambiguator":[2208880628093565156,13974300478191212872]}},{"file_name":"/tmp/main.rs","num":30,"id":{"name":"indexmap","disambiguator":[5383593622000806330,8458851308691067294]}},{"file_name":"/tmp/main.rs","num":31,"id":{"name":"jobserver","disambiguator":[2986191685831289074,8677766933480280691]}},{"file_name":"/tmp/main.rs","num":32,"id":{"name":"libc","disambiguator":[6794530582058517526,10624661927528791272]}},{"file_name":"/tmp/main.rs","num":33,"id":{"name":"rustc_graphviz","disambiguator":[3580412075545795441,12540286690641622168]}},{"file_name":"/tmp/main.rs","num":34,"id":{"name":"stable_deref_trait","disambiguator":[10981822234267277470,16027764715997687078]}},{"file_name":"/tmp/main.rs","num":35,"id":{"name":"ena","disambiguator":[2532122983646186534,4096666521064277694]}},{"file_name":"/tmp/main.rs","num":36,"id":{"name":"measureme","disambiguator":[9561082727320414573,18385268011812214180]}},{"file_name":"/tmp/main.rs","num":37,"id":{"name":"byteorder","disambiguator":[13714365565024430103,7550528672391566329]}},{"file_name":"/tmp/main.rs","num":38,"id":{"name":"parking_lot","disambiguator":[7082222124446288969,15023313501137371215]}},{"file_name":"/tmp/main.rs","num":39,"id":{"name":"lock_api","disambiguator":[12299535595268364163,3295767637372314147]}},{"file_name":"/tmp/main.rs","num":40,"id":{"name":"scopeguard","disambiguator":[14411381668866960841,15803226775843896453]}},{"file_name":"/tmp/main.rs","num":41,"id":{"name":"parking_lot_core","disambiguator":[18239257771550551727,8238411177340318252]}},{"file_name":"/tmp/main.rs","num":42,"id":{"name":"smallvec","disambiguator":[16261719433976912764,2054695472396339313]}},{"file_name":"/tmp/main.rs","num":43,"id":{"name":"memmap","disambiguator":[2476316539197601470,16618764902454948559]}},{"file_name":"/tmp/main.rs","num":44,"id":{"name":"parking_lot","disambiguator":[12917841016568444077,16237837229970689703]}},{"file_name":"/tmp/main.rs","num":45,"id":{"name":"parking_lot_core","disambiguator":[11206981555971091535,3183813634227135695]}},{"file_name":"/tmp/main.rs","num":46,"id":{"name":"once_cell","disambiguator":[3038345542638584863,3014303041077916971]}},{"file_name":"/tmp/main.rs","num":47,"id":{"name":"stacker","disambiguator":[16122795030855999158,5663924129119889891]}},{"file_name":"/tmp/main.rs","num":48,"id":{"name":"psm","disambiguator":[4628846187499072994,14661901739464515929]}},{"file_name":"/tmp/main.rs","num":49,"id":{"name":"rustc_hir","disambiguator":[3583663143513640763,5251164331056243609]}},{"file_name":"/tmp/main.rs","num":50,"id":{"name":"rustc_ast","disambiguator":[10388022767175069931,5803170360903890276]}},{"file_name":"/tmp/main.rs","num":51,"id":{"name":"rustc_span","disambiguator":[16399323786996286286,5039998436181515551]}},{"file_name":"/tmp/main.rs","num":52,"id":{"name":"rustc_arena","disambiguator":[15748695101935042335,17911342743640471583]}},{"file_name":"/tmp/main.rs","num":53,"id":{"name":"unicode_width","disambiguator":[11025763328998837460,7077992206227354427]}},{"file_name":"/tmp/main.rs","num":54,"id":{"name":"md5","disambiguator":[15984296812725803652,9601012693355949958]}},{"file_name":"/tmp/main.rs","num":55,"id":{"name":"block_buffer","disambiguator":[6760296156377862037,3980902989285215614]}},{"file_name":"/tmp/main.rs","num":56,"id":{"name":"block_padding","disambiguator":[11386096730488309424,652736886020055864]}},{"file_name":"/tmp/main.rs","num":57,"id":{"name":"byte_tools","disambiguator":[5748370203977870924,4237059616305991987]}},{"file_name":"/tmp/main.rs","num":58,"id":{"name":"generic_array","disambiguator":[467366500700616192,13455300160296790254]}},{"file_name":"/tmp/main.rs","num":59,"id":{"name":"typenum","disambiguator":[4104533066018426818,6963739996596395353]}},{"file_name":"/tmp/main.rs","num":60,"id":{"name":"opaque_debug","disambiguator":[8329084028957172925,3638915349054045575]}},{"file_name":"/tmp/main.rs","num":61,"id":{"name":"digest","disambiguator":[12027582105933480674,2731452463351763064]}},{"file_name":"/tmp/main.rs","num":62,"id":{"name":"sha1","disambiguator":[4411537399946721859,2420993519426254592]}},{"file_name":"/tmp/main.rs","num":63,"id":{"name":"fake_simd","disambiguator":[7871837896863522937,10104176395726227183]}},{"file_name":"/tmp/main.rs","num":64,"id":{"name":"rustc_lexer","disambiguator":[4464908995204537685,11844181095317991599]}},{"file_name":"/tmp/main.rs","num":65,"id":{"name":"unicode_xid","disambiguator":[10661945783767052128,13322772510728800885]}},{"file_name":"/tmp/main.rs","num":66,"id":{"name":"rustc_target","disambiguator":[179102835970494487,10305158176851917899]}},{"file_name":"/tmp/main.rs","num":67,"id":{"name":"rustc_query_system","disambiguator":[16650559499241303484,3110384243872749389]}},{"file_name":"/tmp/main.rs","num":68,"id":{"name":"rustc_errors","disambiguator":[15033722391372368686,16229188726431497014]}},{"file_name":"/tmp/main.rs","num":69,"id":{"name":"termcolor","disambiguator":[2068318671903858565,15623480080752052872]}},{"file_name":"/tmp/main.rs","num":70,"id":{"name":"annotate_snippets","disambiguator":[11861372692243153217,5899803081981432419]}},{"file_name":"/tmp/main.rs","num":71,"id":{"name":"atty","disambiguator":[17954465192867127261,10243661742093328042]}},{"file_name":"/tmp/main.rs","num":72,"id":{"name":"termize","disambiguator":[9973123069295868803,13220466675971504953]}},{"file_name":"/tmp/main.rs","num":73,"id":{"name":"rustc_session","disambiguator":[14927945948032976667,6391936276385970820]}},{"file_name":"/tmp/main.rs","num":74,"id":{"name":"rustc_feature","disambiguator":[8304973362459991981,10754734011960750254]}},{"file_name":"/tmp/main.rs","num":75,"id":{"name":"rustc_fs_util","disambiguator":[18123059517087565744,13055536958534230182]}},{"file_name":"/tmp/main.rs","num":76,"id":{"name":"getopts","disambiguator":[4283656639823358225,13891523038106001648]}},{"file_name":"/tmp/main.rs","num":77,"id":{"name":"num_cpus","disambiguator":[5654580240406722624,3045588912224756601]}},{"file_name":"/tmp/main.rs","num":78,"id":{"name":"rustc_attr","disambiguator":[14401728243604056159,6008725823085312685]}},{"file_name":"/tmp/main.rs","num":79,"id":{"name":"rustc_ast_pretty","disambiguator":[6082546719599912740,3082106780485548367]}},{"file_name":"/tmp/main.rs","num":80,"id":{"name":"version_check","disambiguator":[4333071841185044178,12884670443393484827]}},{"file_name":"/tmp/main.rs","num":81,"id":{"name":"polonius_engine","disambiguator":[8418075382491359376,8898564304998240188]}},{"file_name":"/tmp/main.rs","num":82,"id":{"name":"datafrog","disambiguator":[13224589723617996487,8192821314743483444]}},{"file_name":"/tmp/main.rs","num":83,"id":{"name":"rustc_apfloat","disambiguator":[11960036484890931613,12031020047205142376]}},{"file_name":"/tmp/main.rs","num":84,"id":{"name":"chalk_ir","disambiguator":[7470229519074999366,11791031953559690311]}},{"file_name":"/tmp/main.rs","num":85,"id":{"name":"chalk_derive","disambiguator":[16398392534066902538,3510687105328770329]}},{"file_name":"/tmp/main.rs","num":86,"id":{"name":"rustc_trait_selection","disambiguator":[9222031321553472756,2763103985666207338]}},{"file_name":"/tmp/main.rs","num":87,"id":{"name":"rustc_infer","disambiguator":[14729433779913466988,3444002408308173083]}},{"file_name":"/tmp/main.rs","num":88,"id":{"name":"rustc_parse_format","disambiguator":[10214876664969766785,13254023899895959489]}},{"file_name":"/tmp/main.rs","num":89,"id":{"name":"unicode_security","disambiguator":[15435013515635003943,13869282748690456789]}},{"file_name":"/tmp/main.rs","num":90,"id":{"name":"unicode_normalization","disambiguator":[3923238866765687279,1073783431024932697]}},{"file_name":"/tmp/main.rs","num":91,"id":{"name":"unicode_script","disambiguator":[14056635299537519164,4440855329488441498]}},{"file_name":"/tmp/main.rs","num":92,"id":{"name":"rustc_metadata","disambiguator":[4148589890779646050,2959346977419646729]}},{"file_name":"/tmp/main.rs","num":93,"id":{"name":"proc_macro","disambiguator":[519318202406880417,10508166501909004081]}},{"file_name":"/tmp/main.rs","num":94,"id":{"name":"rustc_expand","disambiguator":[5974755107476105582,2523595955821265424]}},{"file_name":"/tmp/main.rs","num":95,"id":{"name":"rustc_parse","disambiguator":[4734921976664405695,11058919265615723798]}},{"file_name":"/tmp/main.rs","num":96,"id":{"name":"rustc_ast_passes","disambiguator":[3578773914876444683,16352040463085866077]}},{"file_name":"/tmp/main.rs","num":97,"id":{"name":"itertools","disambiguator":[16379004962412511424,12255204348017472446]}},{"file_name":"/tmp/main.rs","num":98,"id":{"name":"either","disambiguator":[10209250307158296626,10553252744742307802]}},{"file_name":"/tmp/main.rs","num":99,"id":{"name":"flate2","disambiguator":[6559688865843724278,1302368521237613428]}},{"file_name":"/tmp/main.rs","num":100,"id":{"name":"crc32fast","disambiguator":[9511563262226619919,10462627633608813807]}},{"file_name":"/tmp/main.rs","num":101,"id":{"name":"miniz_oxide","disambiguator":[18054272236936935213,12756470473826072750]}},{"file_name":"/tmp/main.rs","num":102,"id":{"name":"adler32","disambiguator":[13690731257059560575,12156843215068162113]}},{"file_name":"/tmp/main.rs","num":103,"id":{"name":"rustc_hir_pretty","disambiguator":[16065119012307860239,8319786488748237477]}},{"file_name":"/tmp/main.rs","num":104,"id":{"name":"rustc_codegen_ssa","disambiguator":[4984196738519057411,16388021210823474983]}},{"file_name":"/tmp/main.rs","num":105,"id":{"name":"cc","disambiguator":[14161075656786990938,5067096733780603460]}},{"file_name":"/tmp/main.rs","num":106,"id":{"name":"tempfile","disambiguator":[8726150611650256884,11223422475602946237]}},{"file_name":"/tmp/main.rs","num":107,"id":{"name":"remove_dir_all","disambiguator":[11398644098173339383,3915192964136708393]}},{"file_name":"/tmp/main.rs","num":108,"id":{"name":"rand","disambiguator":[17765213278909320930,11678184622509497017]}},{"file_name":"/tmp/main.rs","num":109,"id":{"name":"rand_core","disambiguator":[8426041798405863298,9574477618803656650]}},{"file_name":"/tmp/main.rs","num":110,"id":{"name":"getrandom","disambiguator":[15890806702004550061,14690227397013956272]}},{"file_name":"/tmp/main.rs","num":111,"id":{"name":"rand_chacha","disambiguator":[13205657050709076531,7893623964986791075]}},{"file_name":"/tmp/main.rs","num":112,"id":{"name":"ppv_lite86","disambiguator":[8927629934902603195,5662718749160057911]}},{"file_name":"/tmp/main.rs","num":113,"id":{"name":"rustc_incremental","disambiguator":[6716968349057105338,6002747759417406733]}},{"file_name":"/tmp/main.rs","num":114,"id":{"name":"rustc_symbol_mangling","disambiguator":[12666168213273351022,17457714472889432468]}},{"file_name":"/tmp/main.rs","num":115,"id":{"name":"punycode","disambiguator":[12851656870991738135,7989626420288863289]}},{"file_name":"/tmp/main.rs","num":116,"id":{"name":"rustc_demangle","disambiguator":[11120556333331822037,16108744775052791851]}},{"file_name":"/tmp/main.rs","num":117,"id":{"name":"rustc_interface","disambiguator":[7207915111315137556,3999873952720905710]}},{"file_name":"/tmp/main.rs","num":118,"id":{"name":"rustc_mir","disambiguator":[9030691432348300580,9155570768271467195]}},{"file_name":"/tmp/main.rs","num":119,"id":{"name":"log_settings","disambiguator":[17101502771131107867,10477308199567157464]}},{"file_name":"/tmp/main.rs","num":120,"id":{"name":"rustc_mir_build","disambiguator":[7262022464661092568,5081914727832492759]}},{"file_name":"/tmp/main.rs","num":121,"id":{"name":"rustc_passes","disambiguator":[3102227661566366429,3234406551635658407]}},{"file_name":"/tmp/main.rs","num":122,"id":{"name":"rustc_resolve","disambiguator":[17445661241077488641,15266314996185058194]}},{"file_name":"/tmp/main.rs","num":123,"id":{"name":"rustc_ast_lowering","disambiguator":[17987931013158229472,4022575698141191186]}},{"file_name":"/tmp/main.rs","num":124,"id":{"name":"rustc_typeck","disambiguator":[13887844792091362470,3142967059430017445]}},{"file_name":"/tmp/main.rs","num":125,"id":{"name":"rustc_builtin_macros","disambiguator":[16070411343970827916,1803848623099591625]}},{"file_name":"/tmp/main.rs","num":126,"id":{"name":"rustc_privacy","disambiguator":[11117623157930780300,14960268103713281368]}},{"file_name":"/tmp/main.rs","num":127,"id":{"name":"rustc_traits","disambiguator":[6732819007324324427,12803014051188451021]}},{"file_name":"/tmp/main.rs","num":128,"id":{"name":"chalk_solve","disambiguator":[4531729320384291545,16762301174268974996]}},{"file_name":"/tmp/main.rs","num":129,"id":{"name":"petgraph","disambiguator":[12550636488536944799,3122495017931206869]}},{"file_name":"/tmp/main.rs","num":130,"id":{"name":"fixedbitset","disambiguator":[16902286957317250456,14919564457372589759]}},{"file_name":"/tmp/main.rs","num":131,"id":{"name":"itertools","disambiguator":[3543967229021944377,12764172737751034753]}},{"file_name":"/tmp/main.rs","num":132,"id":{"name":"chalk_engine","disambiguator":[9329547116676939630,16012841412066707755]}},{"file_name":"/tmp/main.rs","num":133,"id":{"name":"rustc_ty","disambiguator":[16100936713330858119,5425445381007590618]}},{"file_name":"/tmp/main.rs","num":134,"id":{"name":"rustc_codegen_llvm","disambiguator":[10804917565528923571,272287315985286671]}},{"file_name":"/tmp/main.rs","num":135,"id":{"name":"rustc_llvm","disambiguator":[4626285138287189817,5152012708200832072]}},{"file_name":"/tmp/main.rs","num":136,"id":{"name":"rustc_save_analysis","disambiguator":[5242549805336704728,14095924299167776045]}},{"file_name":"/tmp/main.rs","num":137,"id":{"name":"rls_data","disambiguator":[7826501025784556170,6945755483270449340]}},{"file_name":"/tmp/main.rs","num":138,"id":{"name":"serde","disambiguator":[5199736921739993472,14731497091629596505]}},{"file_name":"/tmp/main.rs","num":139,"id":{"name":"rls_span","disambiguator":[17444592530576502627,14460590535026922113]}},{"file_name":"/tmp/main.rs","num":140,"id":{"name":"serde_json","disambiguator":[13149716031790449238,7302241127250654578]}},{"file_name":"/tmp/main.rs","num":141,"id":{"name":"itoa","disambiguator":[17692620313420618458,15841710096668466683]}},{"file_name":"/tmp/main.rs","num":142,"id":{"name":"ryu","disambiguator":[2045119244130061172,4211597048986143035]}},{"file_name":"/tmp/main.rs","num":143,"id":{"name":"rustc_error_codes","disambiguator":[11769563071437347082,10623722277105174364]}},{"file_name":"/tmp/main.rs","num":144,"id":{"name":"env_logger","disambiguator":[4555198851182458486,15656962295220353288]}}],"span":{"file_name":"main.rs","byte_start":0,"byte_end":1132,"line_start":1,"line_end":42,"column_start":1,"column_end":2}},"imports":[{"kind":"ExternCrate","ref_id":null,"span":{"file_name":"main.rs","byte_start":41,"byte_end":53,"line_start":3,"line_end":3,"column_start":14,"column_end":26},"alias_span":null,"name":"rustc_driver","value":"","parent":{"krate":0,"index":0}},{"kind":"ExternCrate","ref_id":null,"span":{"file_name":"main.rs","byte_start":68,"byte_end":87,"line_start":4,"line_end":4,"column_start":14,"column_end":33},"alias_span":null,"name":"rustc_save_analysis","value":"","parent":{"krate":0,"index":0}},{"kind":"ExternCrate","ref_id":null,"span":{"file_name":"main.rs","byte_start":102,"byte_end":115,"line_start":5,"line_end":5,"column_start":14,"column_end":27},"alias_span":null,"name":"rustc_session","value":"","parent":{"krate":0,"index":0}},{"kind":"ExternCrate","ref_id":null,"span":{"file_name":"main.rs","byte_start":130,"byte_end":145,"line_start":6,"line_end":6,"column_start":14,"column_end":29},"alias_span":null,"name":"rustc_interface","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":1,"index":1500},"span":{"file_name":"main.rs","byte_start":157,"byte_end":160,"line_start":8,"line_end":8,"column_start":10,"column_end":13},"alias_span":null,"name":"env","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":2,"index":20},"span":{"file_name":"main.rs","byte_start":157,"byte_end":160,"line_start":8,"line_end":8,"column_start":10,"column_end":13},"alias_span":null,"name":"env","value":"","parent":{"krate":0,"index":7}},{"kind":"Use","ref_id":{"krate":15,"index":235},"span":{"file_name":"main.rs","byte_start":181,"byte_end":193,"line_start":9,"line_end":9,"column_start":20,"column_end":32},"alias_span":null,"name":"run_compiler","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":224},"span":{"file_name":"main.rs","byte_start":195,"byte_end":204,"line_start":9,"line_end":9,"column_start":34,"column_end":43},"alias_span":null,"name":"Callbacks","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":117,"index":16},"span":{"file_name":"main.rs","byte_start":228,"byte_end":237,"line_start":10,"line_end":10,"column_start":22,"column_end":31},"alias_span":null,"name":"interface","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":73,"index":1696},"span":{"file_name":"main.rs","byte_start":266,"byte_end":281,"line_start":11,"line_end":11,"column_start":28,"column_end":43},"alias_span":null,"name":"ErrorOutputType","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":73,"index":885},"span":{"file_name":"main.rs","byte_start":302,"byte_end":313,"line_start":12,"line_end":12,"column_start":20,"column_end":31},"alias_span":null,"name":"early_error","value":"","parent":{"krate":0,"index":0}}],"defs":[{"kind":"Mod","id":{"krate":0,"index":0},"span":{"file_name":"main.rs","byte_start":0,"byte_end":1132,"line_start":1,"line_end":42,"column_start":1,"column_end":2},"name":"","qualname":"::","value":"main.rs","parent":null,"children":[{"krate":0,"index":1},{"krate":0,"index":2},{"krate":0,"index":3},{"krate":0,"index":4},{"krate":0,"index":5},{"krate":0,"index":6},{"krate":0,"index":7},{"krate":0,"index":27},{"krate":0,"index":8},{"krate":0,"index":9},{"krate":0,"index":10},{"krate":0,"index":11},{"krate":0,"index":12},{"krate":0,"index":13},{"krate":0,"index":14},{"krate":0,"index":22},{"krate":0,"index":25},{"krate":0,"index":23},{"krate":0,"index":20}],"decl_id":null,"docs":"","sig":null,"attributes":[{"value":"feature(rustc_private)","span":{"file_name":"main.rs","byte_start":0,"byte_end":26,"line_start":1,"line_end":1,"column_start":1,"column_end":27}}]},{"kind":"Function","id":{"krate":0,"index":14},"span":{"file_name":"main.rs","byte_start":319,"byte_end":323,"line_start":14,"line_end":14,"column_start":4,"column_end":8},"name":"main","qualname":"::main","value":"fn main() -> Result<(), ()>","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":2147483662},"span":{"file_name":"main.rs","byte_start":353,"byte_end":357,"line_start":15,"line_end":15,"column_start":8,"column_end":12},"name":"args","qualname":"args$HirId { owner: DefId(0:14 ~ main[317d]::main[0]), local_id: 1 }","value":"std::vec::Vec<std::string::String>","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":3221225486},"span":{"file_name":"main.rs","byte_start":409,"byte_end":410,"line_start":17,"line_end":17,"column_start":15,"column_end":16},"name":"i","qualname":"$HirId { owner: DefId(0:14 ~ main[317d]::main[0]), local_id: 112 }::i","value":"usize","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":536870926},"span":{"file_name":"main.rs","byte_start":412,"byte_end":415,"line_start":17,"line_end":17,"column_start":18,"column_end":21},"name":"arg","qualname":"$HirId { owner: DefId(0:14 ~ main[317d]::main[0]), local_id: 112 }::arg","value":"std::ffi::OsString","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":2684354574},"span":{"file_name":"main.rs","byte_start":466,"byte_end":469,"line_start":18,"line_end":18,"column_start":47,"column_end":50},"name":"arg","qualname":"$HirId { owner: DefId(0:14 ~ main[317d]::main[0]), local_id: 108 }::arg","value":"std::ffi::OsString","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":1342177294},"span":{"file_name":"main.rs","byte_start":716,"byte_end":720,"line_start":26,"line_end":26,"column_start":13,"column_end":17},"name":"shim","qualname":"shim$HirId { owner: DefId(0:14 ~ main[317d]::main[0]), local_id: 10 }","value":"CompilerShim","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Struct","id":{"krate":0,"index":22},"span":{"file_name":"main.rs","byte_start":956,"byte_end":968,"line_start":34,"line_end":34,"column_start":12,"column_end":24},"name":"CompilerShim","qualname":"::CompilerShim","value":"CompilerShim { }","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":2147483669},"span":{"file_name":"main.rs","byte_start":1028,"byte_end":1032,"line_start":39,"line_end":39,"column_start":20,"column_end":24},"name":"self","qualname":"<CompilerShim as rustc_driver::Callbacks>::config::self","value":"&mut CompilerShim","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":1073741845},"span":{"file_name":"main.rs","byte_start":1034,"byte_end":1040,"line_start":39,"line_end":39,"column_start":26,"column_end":32},"name":"config","qualname":"<CompilerShim as rustc_driver::Callbacks>::config::config","value":"&mut rustc_interface::Config","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Method","id":{"krate":0,"index":21},"span":{"file_name":"main.rs","byte_start":1016,"byte_end":1022,"line_start":39,"line_end":39,"column_start":8,"column_end":14},"name":"config","qualname":"<CompilerShim as rustc_driver::Callbacks>::config","value":"fn config(&mut Self, &mut interface::Config)","parent":{"krate":15,"index":224},"children":[],"decl_id":{"krate":15,"index":225},"docs":"","sig":null,"attributes":[]}],"impls":[{"id":0,"kind":"Direct","span":{"file_name":"main.rs","byte_start":994,"byte_end":1006,"line_start":38,"line_end":38,"column_start":20,"column_end":32},"value":"","parent":null,"children":[{"krate":0,"index":21}],"docs":"","sig":null,"attributes":[]}],"refs":[{"kind":"Mod","span":{"file_name":"main.rs","byte_start":152,"byte_end":155,"line_start":8,"line_end":8,"column_start":5,"column_end":8},"ref_id":{"krate":1,"index":0}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":166,"byte_end":178,"line_start":9,"line_end":9,"column_start":5,"column_end":17},"ref_id":{"krate":15,"index":235}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":166,"byte_end":178,"line_start":9,"line_end":9,"column_start":5,"column_end":17},"ref_id":{"krate":15,"index":224}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":211,"byte_end":226,"line_start":10,"line_end":10,"column_start":5,"column_end":20},"ref_id":{"krate":117,"index":0}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":243,"byte_end":256,"line_start":11,"line_end":11,"column_start":5,"column_end":18},"ref_id":{"krate":73,"index":0}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":258,"byte_end":264,"line_start":11,"line_end":11,"column_start":20,"column_end":26},"ref_id":{"krate":73,"index":201}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":287,"byte_end":300,"line_start":12,"line_end":12,"column_start":5,"column_end":18},"ref_id":{"krate":73,"index":0}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":329,"byte_end":335,"line_start":14,"line_end":14,"column_start":14,"column_end":20},"ref_id":{"krate":2,"index":30037}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":683,"byte_end":690,"line_start":25,"line_end":25,"column_start":10,"column_end":17},"ref_id":{"krate":2,"index":5025}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":693,"byte_end":696,"line_start":25,"line_end":25,"column_start":20,"column_end":23},"ref_id":{"krate":5,"index":4208}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":403,"byte_end":406,"line_start":17,"line_end":17,"column_start":9,"column_end":12},"ref_id":{"krate":2,"index":4987}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":383,"byte_end":392,"line_start":16,"line_end":16,"column_start":9,"column_end":18},"ref_id":{"krate":2,"index":5002}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":365,"byte_end":372,"line_start":15,"line_end":15,"column_start":20,"column_end":27},"ref_id":{"krate":1,"index":1582}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":360,"byte_end":363,"line_start":15,"line_end":15,"column_start":15,"column_end":18},"ref_id":{"krate":1,"index":1500}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":450,"byte_end":464,"line_start":18,"line_end":18,"column_start":31,"column_end":45},"ref_id":{"krate":2,"index":5673}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":436,"byte_end":447,"line_start":18,"line_end":18,"column_start":17,"column_end":28},"ref_id":{"krate":1,"index":1963}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":432,"byte_end":435,"line_start":18,"line_end":18,"column_start":13,"column_end":16},"ref_id":{"krate":0,"index":536870926}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":489,"byte_end":500,"line_start":19,"line_end":19,"column_start":17,"column_end":28},"ref_id":{"krate":73,"index":885}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":539,"byte_end":546,"line_start":20,"line_end":20,"column_start":38,"column_end":45},"ref_id":{"krate":2,"index":1898}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":522,"byte_end":537,"line_start":20,"line_end":20,"column_start":21,"column_end":36},"ref_id":{"krate":73,"index":1696}},{"kind":"Function","span":{"file_name":"/usr/local/google/home/wcalandro/.rustup/toolchains/nightly-2020-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/liballoc/macros.rs","byte_start":11808367,"byte_end":11808407,"line_start":107,"line_end":107,"column_start":39,"column_end":79},"ref_id":{"krate":2,"index":6177}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":621,"byte_end":622,"line_start":21,"line_end":21,"column_start":72,"column_end":73},"ref_id":{"krate":0,"index":3221225486}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":624,"byte_end":627,"line_start":21,"line_end":21,"column_start":75,"column_end":78},"ref_id":{"krate":0,"index":2684354574}},{"kind":"Function","span":{"file_name":"/usr/local/google/home/wcalandro/.rustup/toolchains/nightly-2020-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/liballoc/macros.rs","byte_start":11808367,"byte_end":11808407,"line_start":107,"line_end":107,"column_start":39,"column_end":79},"ref_id":{"krate":2,"index":6170}},{"kind":"Function","span":{"file_name":"/usr/local/google/home/wcalandro/.rustup/toolchains/nightly-2020-06-23-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/liballoc/macros.rs","byte_start":11808367,"byte_end":11808407,"line_start":107,"line_end":107,"column_start":39,"column_end":79},"ref_id":{"krate":2,"index":6170}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":737,"byte_end":744,"line_start":26,"line_end":26,"column_start":34,"column_end":41},"ref_id":{"krate":2,"index":1898}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":723,"byte_end":735,"line_start":26,"line_end":26,"column_start":20,"column_end":32},"ref_id":{"krate":0,"index":22}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":766,"byte_end":782,"line_start":27,"line_end":27,"column_start":19,"column_end":35},"ref_id":{"krate":15,"index":330}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":752,"byte_end":764,"line_start":27,"line_end":27,"column_start":5,"column_end":17},"ref_id":{"krate":15,"index":0}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":900,"byte_end":907,"line_start":30,"line_end":30,"column_start":10,"column_end":17},"ref_id":{"krate":2,"index":5657}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":879,"byte_end":882,"line_start":29,"line_end":29,"column_start":10,"column_end":13},"ref_id":{"krate":2,"index":5647}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":804,"byte_end":822,"line_start":28,"line_end":28,"column_start":19,"column_end":37},"ref_id":{"krate":15,"index":321}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":790,"byte_end":802,"line_start":28,"line_end":28,"column_start":5,"column_end":17},"ref_id":{"krate":15,"index":0}},{"kind":"Function","span":{"file_name":"main.rs","byte_start":826,"byte_end":838,"line_start":28,"line_end":28,"column_start":41,"column_end":53},"ref_id":{"krate":15,"index":235}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":840,"byte_end":844,"line_start":28,"line_end":28,"column_start":55,"column_end":59},"ref_id":{"krate":0,"index":2147483662}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":851,"byte_end":855,"line_start":28,"line_end":28,"column_start":66,"column_end":70},"ref_id":{"krate":0,"index":1342177294}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":857,"byte_end":861,"line_start":28,"line_end":28,"column_start":72,"column_end":76},"ref_id":{"krate":2,"index":29918}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":863,"byte_end":867,"line_start":28,"line_end":28,"column_start":78,"column_end":82},"ref_id":{"krate":2,"index":29918}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":994,"byte_end":1006,"line_start":38,"line_end":38,"column_start":20,"column_end":32},"ref_id":{"krate":0,"index":22}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":980,"byte_end":989,"line_start":38,"line_end":38,"column_start":6,"column_end":15},"ref_id":{"krate":15,"index":224}},{"kind":"Type","span":{"file_name":"main.rs","byte_start":1058,"byte_end":1064,"line_start":39,"line_end":39,"column_start":50,"column_end":56},"ref_id":{"krate":117,"index":81}},{"kind":"Mod","span":{"file_name":"main.rs","byte_start":1047,"byte_end":1056,"line_start":39,"line_end":39,"column_start":39,"column_end":48},"ref_id":{"krate":117,"index":16}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":1076,"byte_end":1082,"line_start":40,"line_end":40,"column_start":9,"column_end":15},"ref_id":{"krate":0,"index":1073741845}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":1083,"byte_end":1087,"line_start":40,"line_end":40,"column_start":16,"column_end":20},"ref_id":{"krate":117,"index":82}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":1088,"byte_end":1102,"line_start":40,"line_end":40,"column_start":21,"column_end":35},"ref_id":{"krate":73,"index":2078}},{"kind":"Variable","span":{"file_name":"main.rs","byte_start":1103,"byte_end":1116,"line_start":40,"line_end":40,"column_start":36,"column_end":49},"ref_id":{"krate":73,"index":2563}}],"macro_refs":[],"relations":[{"span":{"file_name":"main.rs","byte_start":994,"byte_end":1006,"line_start":38,"line_end":38,"column_start":20,"column_end":32},"kind":{"Impl":{"id":0}},"from":{"krate":0,"index":22},"to":{"krate":15,"index":224}}]}
diff --git a/kythe/testdata/indexers/proto/testdata.proto b/kythe/testdata/indexers/proto/testdata.proto
index 72791b24a..9a20c3df9 100644
--- a/kythe/testdata/indexers/proto/testdata.proto
+++ b/kythe/testdata/indexers/proto/testdata.proto
@@ -31,4 +31,7 @@ message Message {
string oneof_string = 4;
bool oneof_bool = 5;
}
+
+ //- @repeated_int32_field defines/binding RepeatedInt32Field
+ repeated int32 repeated_int32_field = 6;
}
diff --git a/kythe/typescript/indexer.ts b/kythe/typescript/indexer.ts
index 85c429cc8..c9e58e7f6 100644
--- a/kythe/typescript/indexer.ts
+++ b/kythe/typescript/indexer.ts
@@ -128,11 +128,14 @@ function stripExtension(path: string): string {
* https://www.typescriptlang.org/docs/handbook/declaration-merging.html
* for a listing of namespace groups for various declaration types and further
* discussion.
+ *
+ * TYPE_MIGRATION is a temporary namespace to be used during the tvar migration.
*/
export enum TSNamespace {
TYPE,
VALUE,
NAMESPACE,
+ TYPE_MIGRATION,
}
/**
@@ -608,6 +611,8 @@ class StandardIndexerContext implements IndexerHost {
vname.signature += '#type';
} else if (ns === TSNamespace.NAMESPACE) {
vname.signature += '#namespace';
+ } else if (ns === TSNamespace.TYPE_MIGRATION) {
+ vname.signature += '#mtype';
}
// Cache the VName for future lookups.
@@ -754,6 +759,9 @@ class Visitor {
/** influencers is a stack of influencer VNames. */
private readonly influencers: Set<VName>[] = [];
+ /** Cached anchor nodes. Signature is used as key. */
+ private readonly anchors = new Map<string, VName>();
+
constructor(
private readonly host: IndexerHost,
private file: ts.SourceFile,
@@ -782,15 +790,21 @@ class Visitor {
}
/** newAnchor emits a new anchor entry that covers a TypeScript node. */
- newAnchor(node: ts.Node, start = node.getStart(), end = node.end): VName {
- const name = Object.assign(
- {...this.kFile}, {signature: `@${start}:${end}`, language: LANGUAGE});
+ newAnchor(node: ts.Node, start = node.getStart(), end = node.end, tag = ''):
+ VName {
+ const signature = `@${tag}${start}:${end}`;
+ const cachedName = this.anchors.get(signature);
+ if (cachedName != null) return cachedName;
+
+ const name =
+ Object.assign({...this.kFile}, {signature, language: LANGUAGE});
this.emitNode(name, NodeKind.ANCHOR);
const offsetTable = this.host.getOffsetTable(node.getSourceFile().fileName);
this.emitFact(
name, FactName.LOC_START, offsetTable.lookupUtf8(start).toString());
this.emitFact(
name, FactName.LOC_END, offsetTable.lookupUtf8(end).toString());
+ this.anchors.set(signature, name);
return name;
}
@@ -849,8 +863,11 @@ class Visitor {
this.influencers.push(new Set<VName>());
}
- visitTypeParameters(params: ReadonlyArray<ts.TypeParameterDeclaration>) {
- for (const param of params) {
+ visitTypeParameters(
+ parent: VName|undefined,
+ params: ReadonlyArray<ts.TypeParameterDeclaration>) {
+ for (var ordinal = 0; ordinal < params.length; ++ordinal) {
+ const param = params[ordinal];
const sym = this.host.getSymbolAtLocation(param.name);
if (!sym) {
todo(
@@ -858,18 +875,23 @@ class Visitor {
`type param ${param.getText()} has no symbol`);
return;
}
- const kType = this.host.getSymbolName(sym, TSNamespace.TYPE);
- if (!kType) continue;
- this.emitNode(kType, NodeKind.ABSVAR);
- this.emitEdge(
- this.newAnchor(param.name), EdgeKind.DEFINES_BINDING, kType);
- // ...<T extends A>
- if (param.constraint) {
- const superType = this.visitType(param.constraint);
- if (superType) this.emitEdge(kType, EdgeKind.BOUNDED_UPPER, superType);
+ const kTVar = this.host.getSymbolName(sym, TSNamespace.TYPE_MIGRATION);
+ if (kTVar && parent) {
+ this.emitNode(kTVar, NodeKind.TVAR);
+ this.emitEdge(
+ this.newAnchor(
+ param.name, param.name.getStart(), param.name.end, 'M'),
+ EdgeKind.DEFINES_BINDING, kTVar);
+ this.emitEdge(parent, makeOrdinalEdge(EdgeKind.TPARAM, ordinal), kTVar);
+ // ...<T extends A>
+ if (param.constraint) {
+ var superType = this.visitType(param.constraint);
+ if (superType)
+ this.emitEdge(kTVar, EdgeKind.BOUNDED_UPPER, superType);
+ }
+ // ...<T = A>
+ if (param.default) this.visitType(param.default);
}
- // ...<T = A>
- if (param.default) this.visitType(param.default);
}
}
@@ -891,6 +913,15 @@ class Visitor {
this.emitEdge(influencer, EdgeKind.INFLUENCES, containingVName);
});
}
+ // Handle case like
+ // "return {name: 'Alice'};"
+ // where return type of the function is a named type, e.g. Person.
+ // This will connect 'name' property of the object literal to the
+ // Person.name property.
+ if (node.expression && ts.isObjectLiteralExpression(node.expression)) {
+ this.connectObjectLiteralToType(
+ node.expression, containingFunction.type);
+ }
}
this.popInfluencers();
}
@@ -928,6 +959,22 @@ class Visitor {
if (containingVName) {
this.emitEdge(callAnchor, EdgeKind.CHILD_OF, containingVName);
}
+ // Handle function/constructor calls like `doSomething({name: 'Alice'})`
+ // where type of the argument is, for example, an interface Person. This
+ // will add ref from object literal 'name' property to Person.name field.
+ if (node.arguments != null) {
+ const signature = this.typeChecker.getResolvedSignature(node);
+ if (signature == null) return;
+ for (let i = 0; i < node.arguments.length; i++) {
+ const argument = node.arguments[i];
+ // get parameter of the function/constructor signature.
+ const signParameter = signature.parameters[i]?.valueDeclaration;
+ if (ts.isObjectLiteralExpression(argument) && signParameter &&
+ ts.isParameter(signParameter)) {
+ this.connectObjectLiteralToType(argument, signParameter.type);
+ }
+ }
+ }
}
/**
@@ -995,7 +1042,8 @@ class Visitor {
this.visitJSDoc(decl, kType);
}
- if (decl.typeParameters) this.visitTypeParameters(decl.typeParameters);
+ if (decl.typeParameters)
+ this.visitTypeParameters(kType, decl.typeParameters);
if (decl.heritageClauses) this.visitHeritage(kType, decl.heritageClauses);
for (const member of decl.members) {
this.visit(member);
@@ -1016,7 +1064,8 @@ class Visitor {
this.emitEdge(this.newAnchor(decl.name), EdgeKind.DEFINES_BINDING, kType);
this.visitJSDoc(decl, kType);
- if (decl.typeParameters) this.visitTypeParameters(decl.typeParameters);
+ if (decl.typeParameters)
+ this.visitTypeParameters(kType, decl.typeParameters);
const kAlias = this.visitType(decl.type);
// Emit an "aliases" edge if the aliased type has a singular VName.
if (kAlias) {
@@ -1056,8 +1105,15 @@ class Visitor {
return;
}
const name = this.host.getSymbolName(sym, TSNamespace.TYPE);
- if (!name) return;
- this.emitEdge(this.newAnchor(node), EdgeKind.REF, name);
+ if (name) {
+ this.emitEdge(this.newAnchor(node), EdgeKind.REF, name);
+ }
+ const mname = this.host.getSymbolName(sym, TSNamespace.TYPE_MIGRATION);
+ if (mname) {
+ this.emitEdge(
+ this.newAnchor(node, node.getStart(), node.end, 'M'),
+ EdgeKind.REF, mname);
+ }
return name;
case ts.SyntaxKind.TypeReference:
const typeRef = node as ts.TypeReferenceNode;
@@ -1593,6 +1649,11 @@ class Visitor {
for (const element of (decl.name as ts.BindingPattern).elements) {
this.visit(element);
}
+ // Handle case like `const {name} = p;` where p is or type Person.
+ // This will add ref from the `name` variable to Person.name.
+ if (ts.isObjectBindingPattern(decl.name)) {
+ this.connectObjectBindingPatternToType(decl.name);
+ }
break;
case ts.SyntaxKind.ComputedPropertyName:
decl.name.forEachChild(child => this.visit(child));
@@ -1603,7 +1664,8 @@ class Visitor {
if (vname) {
if (ts.isVariableDeclaration(decl) || ts.isPropertyAssignment(decl) ||
- ts.isPropertyDeclaration(decl) || ts.isBindingElement(decl)) {
+ ts.isPropertyDeclaration(decl) || ts.isBindingElement(decl) ||
+ ts.isShorthandPropertyAssignment(decl)) {
this.emitDeclarationCode(decl, vname);
} else {
todo(this.sourceRoot, decl, 'Emit variable delaration code');
@@ -1612,12 +1674,23 @@ class Visitor {
if (decl.type) this.visitType(decl.type);
if (decl.initializer) this.visit(decl.initializer);
+ if (decl.type && decl.initializer &&
+ ts.isObjectLiteralExpression(decl.initializer)) {
+ this.connectObjectLiteralToType(decl.initializer, decl.type);
+ }
if (vname && decl.kind === ts.SyntaxKind.PropertyDeclaration) {
const declNode = decl as ts.PropertyDeclaration;
if (isStaticMember(declNode, declNode.parent)) {
this.emitFact(vname, FactName.TAG_STATIC, '');
}
}
+ if (vname &&
+ (decl.kind === ts.SyntaxKind.PropertySignature ||
+ decl.kind === ts.SyntaxKind.PropertyDeclaration ||
+ decl.kind === ts.SyntaxKind.PropertyAssignment ||
+ decl.kind === ts.SyntaxKind.ShorthandPropertyAssignment)) {
+ this.emitSubkind(vname, Subkind.FIELD);
+ }
return vname;
}
@@ -1631,7 +1704,7 @@ class Visitor {
*/
emitDeclarationCode(
decl: ts.VariableDeclaration|ts.PropertyAssignment|
- ts.PropertyDeclaration|ts.BindingElement,
+ ts.PropertyDeclaration|ts.BindingElement|ts.ShorthandPropertyAssignment,
declVName: VName) {
const codeParts: MarkedSource[] = [];
const initializerList = decl.parent;
@@ -1676,7 +1749,7 @@ class Visitor {
makeMarkedSource({kind: 'IDENTIFIER', preText: decl.name.getText()}));
codeParts.push(
makeMarkedSource({kind: 'TYPE', preText: ': ', postText: tyStr}));
- if (varDecl.initializer) {
+ if ('initializer' in varDecl && varDecl.initializer) {
let init: ts.Node = varDecl.initializer;
if (ts.isObjectLiteralExpression(init) ||
@@ -1733,6 +1806,55 @@ class Visitor {
}
/**
+ * Given an object literal that is used in a place where given type is
+ * expected - adds refs from the literals properties to the type's properties.
+ */
+ connectObjectLiteralToType(
+ literal: ts.ObjectLiteralExpression, typeNode: ts.TypeNode|undefined) {
+ if (typeNode == null) return;
+ const type = this.typeChecker.getTypeFromTypeNode(typeNode);
+ for (const prop of literal.properties) {
+ if (ts.isPropertyAssignment(prop) ||
+ ts.isShorthandPropertyAssignment(prop) ||
+ ts.isMethodDeclaration(prop)) {
+ this.emitPropertyRef(prop.name, type);
+ }
+ }
+ }
+
+ /**
+ * Given object binding pattern like `const {name} = getPerson();` tries to
+ * add refs from binding variables to the propeties of the type. Like `name`
+ * is connected to `Person.name`.
+ */
+ connectObjectBindingPatternToType(binding: ts.ObjectBindingPattern) {
+ const type = this.typeChecker.getTypeAtLocation(binding);
+ for (const prop of binding.elements) {
+ if (prop.propertyName) {
+ this.emitPropertyRef(prop.propertyName, type);
+ } else if (ts.isIdentifier(prop.name)) {
+ this.emitPropertyRef(prop.name, type);
+ }
+ }
+ }
+
+ /**
+ * Helper function to emit `ref` node from a given property (usually of object
+ * literal or destructuring pattern) to the type. Checks whether provided type
+ * contains a property with the same name and will use it for `ref` node.
+ */
+ emitPropertyRef(prop: ts.PropertyName, type: ts.Type) {
+ const propName = this.getPropertyNameStr(prop);
+ if (propName == null) return;
+ const propertyOnType = type.getProperty(propName);
+ if (propertyOnType == null) return;
+ const vname = this.host.getSymbolName(propertyOnType, TSNamespace.VALUE);
+ if (vname == null) return;
+ const anchor = this.newAnchor(prop);
+ this.emitEdge(anchor, EdgeKind.REF_ID, vname);
+ }
+
+ /**
* Returns the property "index" of a bound element in a binding pattern, if
* known. For example,
* - `1` has index `2` in the binding pattern `[3, 2, 1]`
@@ -1816,7 +1938,8 @@ class Visitor {
// TODO(b/181591179): Remove this alias and casts
type AnyDuringTs42Migration = any;
const overridden: AnyDuringTs42Migration =
- toArray(type.symbol.members.values() as AnyDuringTs42Migration).find(overriddenCondition as AnyDuringTs42Migration);
+ toArray(type.symbol.members.values() as AnyDuringTs42Migration)
+ .find(overriddenCondition as AnyDuringTs42Migration);
if (overridden) {
const base = this.host.getSymbolName(overridden, TSNamespace.VALUE);
if (base) {
@@ -1901,7 +2024,8 @@ class Visitor {
this.visitType(decl.type);
}
- if (decl.typeParameters) this.visitTypeParameters(decl.typeParameters);
+ if (decl.typeParameters)
+ this.visitTypeParameters(vname, decl.typeParameters);
if (decl.body) {
this.visit(decl.body);
} else {
@@ -1968,6 +2092,12 @@ class Visitor {
recurseVisit(element);
}
}
+ // Handles case like:
+ // funtion doSomething({name}: Person) { ... }
+ // and adds refs from `name` variable to the Person.name field.
+ if (ts.isObjectBindingPattern(param.name)) {
+ this.connectObjectBindingPatternToType(param.name);
+ }
break;
default:
break;
@@ -2077,7 +2207,8 @@ class Visitor {
this.visitJSDoc(decl, kClass);
}
- if (decl.typeParameters) this.visitTypeParameters(decl.typeParameters);
+ if (decl.typeParameters)
+ this.visitTypeParameters(kClass, decl.typeParameters);
if (decl.heritageClauses) this.visitHeritage(kClass, decl.heritageClauses);
for (const member of decl.members) {
this.visit(member);
@@ -2187,6 +2318,17 @@ class Visitor {
this.emitFact(doc, FactName.TEXT, jsdoc);
}
+ visitAsExpressions(node: ts.AsExpression) {
+ ts.forEachChild(node, (child) => {
+ this.visit(child);
+ });
+ // Handle case like `{name: 'Alice'} as Person` and connect `name` property
+ // to Person.name.
+ if (ts.isObjectLiteralExpression(node.expression)) {
+ this.connectObjectLiteralToType(node.expression, node.type);
+ }
+ }
+
/**
* Tags a node as deprecated if its JSDoc marks it as so.
* TODO(TS 4.0): TS 4.0 exposes a JSDocDeprecatedTag.
@@ -2273,6 +2415,9 @@ class Visitor {
case ts.SyntaxKind.ReturnStatement:
this.visitReturnStatement(node as ts.ReturnStatement)
return;
+ case ts.SyntaxKind.AsExpression:
+ this.visitAsExpressions(node as ts.AsExpression);
+ return;
default:
// Use default recursive processing.
return ts.forEachChild(node, n => this.visit(n));
diff --git a/kythe/typescript/kythe.ts b/kythe/typescript/kythe.ts
index 9421bce55..fc9ed70d1 100644
--- a/kythe/typescript/kythe.ts
+++ b/kythe/typescript/kythe.ts
@@ -76,6 +76,7 @@ export enum EdgeKind {
REF_EXPANDS_TRANSITIVE = '/kythe/edge/ref/expands/transitive',
REF_FILE = '/kythe/edge/ref/file',
REF_IMPORTS = '/kythe/edge/ref/imports',
+ REF_ID = '/kythe/edge/ref/id',
REF_INCLUDES = '/kythe/edge/ref/includes',
REF_INIT = '/kythe/edge/ref/init',
REF_INIT_IMPLICIT = '/kythe/edge/ref/init/implicit',
@@ -84,6 +85,7 @@ export enum EdgeKind {
SPECIALIZES = '/kythe/edge/specializes',
SPECIALIZES_SPECULATIVE = '/kythe/edge/specializes/speculative',
TAGGED = '/kythe/edge/tagged',
+ TPARAM = '/kythe/edge/tparam',
TYPED = '/kythe/edge/typed',
UNDEFINES = '/kythe/edge/undefines',
}
@@ -108,7 +110,6 @@ export function makeOrdinalEdge(edge: EdgeKind, ordinal: number): OrdinalEdge {
* https://github.com/kythe/kythe/tree/master/kythe/data/schema_index.textproto#L64
*/
export enum NodeKind {
- ABS = 'abs',
ABSVAR = 'absvar',
ANCHOR = 'anchor',
CONSTANT = 'constant',
@@ -131,6 +132,7 @@ export enum NodeKind {
TBUILTIN = 'tbuiltin',
TNOMINAL = 'tnominal',
TSIGMA = 'tsigma',
+ TVAR = 'tvar',
VARIABLE = 'variable',
VCS = 'vcs',
}
diff --git a/kythe/typescript/languageserver/vscode-extension/package-lock.json b/kythe/typescript/languageserver/vscode-extension/package-lock.json
index 9344929e8..a8b5700c7 100644
--- a/kythe/typescript/languageserver/vscode-extension/package-lock.json
+++ b/kythe/typescript/languageserver/vscode-extension/package-lock.json
@@ -43,9 +43,9 @@
}
},
"node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true,
"engines": {
"node": ">=4"
@@ -176,7 +176,6 @@
"dependencies": {
"anymatch": "~3.1.1",
"braces": "~3.0.2",
- "fsevents": "~2.3.1",
"glob-parent": "~5.1.0",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
@@ -202,9 +201,9 @@
}
},
"node_modules/cliui/node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -970,9 +969,9 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -1071,9 +1070,9 @@
}
},
"node_modules/yargs/node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -1147,9 +1146,9 @@
"dev": true
},
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true
},
"ansi-styles": {
@@ -1269,9 +1268,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"is-fullwidth-code-point": {
@@ -1811,9 +1810,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"is-fullwidth-code-point": {
@@ -1872,9 +1871,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"is-fullwidth-code-point": {
diff --git a/kythe/typescript/testdata/class.ts b/kythe/typescript/testdata/class.ts
index f00bc69f2..53531ed9d 100644
--- a/kythe/typescript/testdata/class.ts
+++ b/kythe/typescript/testdata/class.ts
@@ -11,6 +11,7 @@ interface IFace {
//- @member defines/binding IFaceMember
//- IFaceMember.node/kind variable
+ //- IFaceMember.subkind field
member: number;
}
@@ -33,6 +34,7 @@ class Class implements IFace {
//- @member defines/binding Member
//- Member.node/kind variable
//- !{ Member.tag/static _ }
+ //- Member.subkind field
member: number;
//- @member defines/binding StaticMember
diff --git a/kythe/typescript/testdata/generic.ts b/kythe/typescript/testdata/generic_tvar.ts
index 7d98d2fd2..32882c632 100644
--- a/kythe/typescript/testdata/generic.ts
+++ b/kythe/typescript/testdata/generic_tvar.ts
@@ -18,7 +18,8 @@ x = new Map<string, IFace>();
// Create a generic type and instantiate it.
//- @Container defines/binding Container
//- @T defines/binding ContainerT
-//- ContainerT.node/kind absvar
+//- ContainerT.node/kind tvar
+//- Container tparam.0 ContainerT
interface Container<T> {
//- @T ref ContainerT
//- !{@T ref Container}
@@ -27,7 +28,9 @@ interface Container<T> {
let box: Container<IFace>;
//- @#0T defines/binding FnT
-//- FnT.node/kind absvar
+//- FnT.node/kind tvar
+//- @generic defines/binding FnGeneric
+//- FnGeneric tparam.0 FnT
//- @IFace ref IFace
function generic<T>(x: T, y: IFace) {
return x;
@@ -36,10 +39,14 @@ function generic<T>(x: T, y: IFace) {
// Simple constrained generic.
//- @T defines/binding ConstrainedGenericT
//- @IFace ref IFace
+//- ConstrainedGenericT.node/kind tvar
//- ConstrainedGenericT bounded/upper IFace
function constrainedGeneric<T extends IFace>() {}
// Constrained generic with reference to type param within it.
+//- @constrainedGenericRef defines/binding FnconstrainedGenericRef
+//- FnconstrainedGenericRef tparam.0 ConstrainedGenericT2
+//- FnconstrainedGenericRef tparam.1 ConstrainedGenericT2K
//- @#0T defines/binding ConstrainedGenericT2
//- !{@#0T ref ConstrainedGenericT}
//- @#1T ref ConstrainedGenericT2
@@ -48,17 +55,23 @@ function constrainedGeneric<T extends IFace>() {}
function constrainedGenericRef<T, K extends keyof T>(k: K) {}
// Recursive generic type.
+//- @constrainedGenericRecursive defines/binding FncGR
+//- FncGR tparam.0 ConstrainedGenericT3
//- @#0T defines/binding ConstrainedGenericT3
//- @#1T ref ConstrainedGenericT3
function constrainedGenericRecursive<T extends Array<T>>() {}
// Default generic.
+//- @defaultGeneric defines/binding FndefaultGeneric
+//- FndefaultGeneric tparam.0 DefaultGeneric
//- @#0T defines/binding DefaultGeneric
//- @#1T ref DefaultGeneric
//- @IFace ref IFace
function defaultGeneric<T = IFace>(t: T) {}
// Default generic with extends.
+//- @defaultGeneric2 defines/binding FndefaultGeneric2
+//- FndefaultGeneric2 tparam.0 DefaultGeneric2
//- @#0T defines/binding DefaultGeneric2
//- @#1T ref DefaultGeneric2
//- @#0IFace ref IFace
diff --git a/kythe/typescript/testdata/interface.ts b/kythe/typescript/testdata/interface.ts
new file mode 100644
index 000000000..122744a4d
--- /dev/null
+++ b/kythe/typescript/testdata/interface.ts
@@ -0,0 +1,64 @@
+/**
+ * @fileoverview File that test that interface properties are indexed correctly.
+ */
+
+interface Person {
+ //- @name defines/binding Name
+ name: string;
+ //- @getAge defines/binding GetAge
+ getAge(): void;
+}
+
+const p: Person = {
+ //- @name ref/id Name
+ name: 'Alice',
+ //- @getAge ref/id GetAge
+ getAge() {}
+};
+
+const p2 = {
+ //- @name ref/id Name
+ name: 'Alice',
+ //- @getAge ref/id GetAge
+ getAge() {}
+} as Person;
+
+//- @name ref Name
+p.name;
+
+//- @getAge ref GetAge
+p.getAge();
+
+//- @getAge ref/id GetAge
+const {getAge} = p;
+
+//- @name ref/id Name
+//- @getAge ref/id GetAge
+function takesPerson({name, getAge: newGetAge}: Person) {}
+
+//- @name ref/id Name
+//- @getAge ref/id GetAge
+takesPerson({name: 'Alice', getAge() {}});
+
+class PersonTaker {
+ constructor(p: Person) {}
+}
+
+//- @name ref/id Name
+//- @getAge ref/id GetAge
+new PersonTaker({name: 'Alice', getAge() {}});
+
+function returnPerson(): Person {
+ //- @name ref/id Name
+ //- @getAge ref/id GetAge
+ return {name: 'Alice', getAge() {}};
+}
+
+// test property shorthands
+{
+ const name = 'Alice';
+ const getAge = () = {};
+ //- @name ref/id Name
+ //- @getAge ref/id GetAge
+ const p3: Person = {name, getAge};
+}
diff --git a/kythe/typescript/testdata/object.ts b/kythe/typescript/testdata/object.ts
index 56c854bb2..c8e711467 100644
--- a/kythe/typescript/testdata/object.ts
+++ b/kythe/typescript/testdata/object.ts
@@ -8,10 +8,12 @@ const computed = 'computed';
const Object = {
//- @property defines/binding Property
//- Property.node/kind variable
+ //- Property.subkind field
property: 3,
//- @shortProperty defines/binding ShortProperty
//- ShortProperty.node/kind variable
+ //- ShortProperty.subkind field
shortProperty,
//- !{@"[computed]" defines/binding _}
@@ -28,6 +30,7 @@ const Object = {
//- @"123" defines/binding NLiteralProperty
//- NLiteralProperty.node/kind variable
+ //- NLiteralProperty.subkind field
123: 'nliteral',
};
diff --git a/kythe/typescript/testdata/schema.ts b/kythe/typescript/testdata/schema.ts
index 61a6255cb..d13811eb3 100644
--- a/kythe/typescript/testdata/schema.ts
+++ b/kythe/typescript/testdata/schema.ts
@@ -101,7 +101,7 @@ let v = {
//- @AliasArray defines/binding VName("AliasArray#type", _, _, "testdata/schema", "typescript")
type AliasArray<
// TypeParameter
- //- @#0"T" defines/binding VName("AliasArray.T#type", _, _, "testdata/schema", "typescript")
+ //- @#0"T" defines/binding VName("AliasArray.T#mtype", _, _, "testdata/schema", "typescript")
T> = Array<T>;
//- @arrowFun defines/binding VName("arrowFun", _, _, "testdata/schema", "typescript")
diff --git a/kythe/web/site/Gemfile.lock b/kythe/web/site/Gemfile.lock
index 103e13b5c..8307f221f 100644
--- a/kythe/web/site/Gemfile.lock
+++ b/kythe/web/site/Gemfile.lock
@@ -48,15 +48,15 @@ GEM
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
- mini_portile2 (2.6.1)
- nokogiri (1.12.5)
- mini_portile2 (~> 2.6.1)
+ mini_portile2 (2.8.0)
+ nokogiri (1.13.6)
+ mini_portile2 (~> 2.8.0)
racc (~> 1.4)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.6)
pygments.rb (2.1.0)
- racc (1.5.2)
+ racc (1.6.0)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
diff --git a/maven_install.json b/maven_install.json
new file mode 100644
index 000000000..89bea2de9
--- /dev/null
+++ b/maven_install.json
@@ -0,0 +1,900 @@
+{
+ "dependency_tree": {
+ "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": -1168462679,
+ "conflict_resolution": {},
+ "dependencies": [
+ {
+ "coord": "com.beust:jcommander:1.81",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/beust/jcommander/1.81/jcommander-1.81.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/beust/jcommander/1.81/jcommander-1.81.jar",
+ "https://maven.google.com/com/beust/jcommander/1.81/jcommander-1.81.jar",
+ "https://repo1.maven.org/maven2/com/beust/jcommander/1.81/jcommander-1.81.jar"
+ ],
+ "sha256": "9d8b42979c99f3daa99102fe9ba1fb25f52226cb48cf58bc18acb93132e41a05",
+ "url": "https://jcenter.bintray.com/com/beust/jcommander/1.81/jcommander-1.81.jar"
+ },
+ {
+ "coord": "com.beust:jcommander:jar:sources:1.81",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/beust/jcommander/1.81/jcommander-1.81-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/beust/jcommander/1.81/jcommander-1.81-sources.jar",
+ "https://maven.google.com/com/beust/jcommander/1.81/jcommander-1.81-sources.jar",
+ "https://repo1.maven.org/maven2/com/beust/jcommander/1.81/jcommander-1.81-sources.jar"
+ ],
+ "sha256": "5f6c8ad27ede729855c7fabc9fd0a15d31ce1a458c030387fb8ed355a982281b",
+ "url": "https://jcenter.bintray.com/com/beust/jcommander/1.81/jcommander-1.81-sources.jar"
+ },
+ {
+ "coord": "com.google.auto.service:auto-service-annotations:1.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0.jar",
+ "https://maven.google.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0.jar"
+ ],
+ "sha256": "44752893119fdaf01b4c5ee74e46e5dab86f2dcda18114c562f877355c6ed26e",
+ "url": "https://jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0.jar"
+ },
+ {
+ "coord": "com.google.auto.service:auto-service-annotations:jar:sources:1.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0-sources.jar",
+ "https://maven.google.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0-sources.jar"
+ ],
+ "sha256": "a063f495c8aaa763726529a241ca1510a6ff3d9c92f511dffd131c4303caed44",
+ "url": "https://jcenter.bintray.com/com/google/auto/service/auto-service-annotations/1.0/auto-service-annotations-1.0-sources.jar"
+ },
+ {
+ "coord": "com.google.auto.service:auto-service:1.0",
+ "dependencies": [
+ "com.google.auto.service:auto-service-annotations:1.0",
+ "com.google.auto:auto-common:1.0",
+ "com.google.guava:guava:31.0.1-jre"
+ ],
+ "directDependencies": [
+ "com.google.auto:auto-common:1.0",
+ "com.google.auto.service:auto-service-annotations:1.0",
+ "com.google.guava:guava:31.0.1-jre"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar",
+ "https://maven.google.com/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar"
+ ],
+ "sha256": "4ae44dd05b49a1109a463c0d2aaf920c24f76d1e996bb89f29481c4ff75ec526",
+ "url": "https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar"
+ },
+ {
+ "coord": "com.google.auto.service:auto-service:jar:sources:1.0",
+ "dependencies": [
+ "com.google.auto:auto-common:jar:sources:1.0",
+ "com.google.guava:guava:jar:sources:31.0.1-jre",
+ "com.google.auto.service:auto-service-annotations:jar:sources:1.0"
+ ],
+ "directDependencies": [
+ "com.google.auto:auto-common:jar:sources:1.0",
+ "com.google.auto.service:auto-service-annotations:jar:sources:1.0",
+ "com.google.guava:guava:jar:sources:31.0.1-jre"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/service/auto-service/1.0/auto-service-1.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0/auto-service-1.0-sources.jar",
+ "https://maven.google.com/com/google/auto/service/auto-service/1.0/auto-service-1.0-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0-sources.jar"
+ ],
+ "sha256": "0bfb7b31ff27fe53c716337e1f8dc4929763f8578c7f3e6b148fb6006622294e",
+ "url": "https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0/auto-service-1.0-sources.jar"
+ },
+ {
+ "coord": "com.google.auto.value:auto-value-annotations:1.8",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8.jar",
+ "https://maven.google.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8.jar"
+ ],
+ "sha256": "520e2bb9ed9f668cd6fa750b39bec1342e47ebbf185ead317ef23c0a1f7c8a06",
+ "url": "https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8.jar"
+ },
+ {
+ "coord": "com.google.auto.value:auto-value-annotations:jar:sources:1.8",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8-sources.jar",
+ "https://maven.google.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8-sources.jar"
+ ],
+ "sha256": "61091cba397fc747c08a4c49f77e5a8be80f98531a89f68296983f7dcfc4046b",
+ "url": "https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.8/auto-value-annotations-1.8-sources.jar"
+ },
+ {
+ "coord": "com.google.auto.value:auto-value:1.8",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/value/auto-value/1.8/auto-value-1.8.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/value/auto-value/1.8/auto-value-1.8.jar",
+ "https://maven.google.com/com/google/auto/value/auto-value/1.8/auto-value-1.8.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8/auto-value-1.8.jar"
+ ],
+ "sha256": "68dc539ca77611ff37d795bfc3d63cde4f9df69bffa7e606c5255ab5164b0e15",
+ "url": "https://jcenter.bintray.com/com/google/auto/value/auto-value/1.8/auto-value-1.8.jar"
+ },
+ {
+ "coord": "com.google.auto.value:auto-value:jar:sources:1.8",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/value/auto-value/1.8/auto-value-1.8-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/value/auto-value/1.8/auto-value-1.8-sources.jar",
+ "https://maven.google.com/com/google/auto/value/auto-value/1.8/auto-value-1.8-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8/auto-value-1.8-sources.jar"
+ ],
+ "sha256": "05e7e70626931f2f3e2aa7bb4e31bcc6f44269a269235c8b409764247fa704c9",
+ "url": "https://jcenter.bintray.com/com/google/auto/value/auto-value/1.8/auto-value-1.8-sources.jar"
+ },
+ {
+ "coord": "com.google.auto:auto-common:1.0",
+ "dependencies": [
+ "com.google.guava:guava:31.0.1-jre"
+ ],
+ "directDependencies": [
+ "com.google.guava:guava:31.0.1-jre"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/auto-common/1.0/auto-common-1.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/auto-common/1.0/auto-common-1.0.jar",
+ "https://maven.google.com/com/google/auto/auto-common/1.0/auto-common-1.0.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.0/auto-common-1.0.jar"
+ ],
+ "sha256": "b5164ef5c8314974f752aac82d49c102d4f64949bb9414e97bc2f8d1b97ff1f7",
+ "url": "https://jcenter.bintray.com/com/google/auto/auto-common/1.0/auto-common-1.0.jar"
+ },
+ {
+ "coord": "com.google.auto:auto-common:jar:sources:1.0",
+ "dependencies": [
+ "com.google.guava:guava:jar:sources:31.0.1-jre"
+ ],
+ "directDependencies": [
+ "com.google.guava:guava:jar:sources:31.0.1-jre"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/auto/auto-common/1.0/auto-common-1.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/auto/auto-common/1.0/auto-common-1.0-sources.jar",
+ "https://maven.google.com/com/google/auto/auto-common/1.0/auto-common-1.0-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.0/auto-common-1.0-sources.jar"
+ ],
+ "sha256": "ca4cc9bed3e886f189ee58448178877124acb290e4e1b905c87aabf2bf01e931",
+ "url": "https://jcenter.bintray.com/com/google/auto/auto-common/1.0/auto-common-1.0-sources.jar"
+ },
+ {
+ "coord": "com.google.code.findbugs:jsr305:3.0.2",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar",
+ "https://maven.google.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar",
+ "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar"
+ ],
+ "sha256": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
+ "url": "https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar"
+ },
+ {
+ "coord": "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar",
+ "https://maven.google.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar"
+ ],
+ "sha256": "1c9e85e272d0708c6a591dc74828c71603053b48cc75ae83cce56912a2aa063b",
+ "url": "https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2-sources.jar"
+ },
+ {
+ "coord": "com.google.code.gson:gson:2.8.6",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar",
+ "https://maven.google.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar",
+ "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar"
+ ],
+ "sha256": "c8fb4839054d280b3033f800d1f5a97de2f028eb8ba2eb458ad287e536f3f25f",
+ "url": "https://jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar"
+ },
+ {
+ "coord": "com.google.code.gson:gson:jar:sources:2.8.6",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6-sources.jar",
+ "https://maven.google.com/com/google/code/gson/gson/2.8.6/gson-2.8.6-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6-sources.jar"
+ ],
+ "sha256": "da4d787939dc8de214724a20d88614b70ef8c3a4931d9c694300b5d9098ed9bc",
+ "url": "https://jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6-sources.jar"
+ },
+ {
+ "coord": "com.google.common.html.types:types:1.0.8",
+ "dependencies": [
+ "com.google.protobuf:protobuf-java:3.3.0",
+ "com.google.code.findbugs:jsr305:3.0.2",
+ "com.google.errorprone:error_prone_annotations:2.6.0",
+ "com.google.guava:guava:31.0.1-jre",
+ "com.google.jsinterop:jsinterop-annotations:1.0.1",
+ "javax.annotation:jsr250-api:1.0"
+ ],
+ "directDependencies": [
+ "com.google.protobuf:protobuf-java:3.3.0",
+ "com.google.code.findbugs:jsr305:3.0.2",
+ "com.google.errorprone:error_prone_annotations:2.6.0",
+ "com.google.guava:guava:31.0.1-jre",
+ "com.google.jsinterop:jsinterop-annotations:1.0.1",
+ "javax.annotation:jsr250-api:1.0"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/common/html/types/types/1.0.8/types-1.0.8.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/common/html/types/types/1.0.8/types-1.0.8.jar",
+ "https://maven.google.com/com/google/common/html/types/types/1.0.8/types-1.0.8.jar",
+ "https://repo1.maven.org/maven2/com/google/common/html/types/types/1.0.8/types-1.0.8.jar"
+ ],
+ "sha256": "7d81d47117284457c8760f9372a47d6cdf45398d9e9a3dfbfd108fc57937aebe",
+ "url": "https://jcenter.bintray.com/com/google/common/html/types/types/1.0.8/types-1.0.8.jar"
+ },
+ {
+ "coord": "com.google.common.html.types:types:jar:sources:1.0.8",
+ "dependencies": [
+ "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
+ "com.google.guava:guava:jar:sources:31.0.1-jre",
+ "com.google.protobuf:protobuf-java:jar:sources:3.3.0",
+ "com.google.jsinterop:jsinterop-annotations:jar:sources:1.0.1",
+ "javax.annotation:jsr250-api:jar:sources:1.0"
+ ],
+ "directDependencies": [
+ "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
+ "com.google.guava:guava:jar:sources:31.0.1-jre",
+ "com.google.protobuf:protobuf-java:jar:sources:3.3.0",
+ "com.google.jsinterop:jsinterop-annotations:jar:sources:1.0.1",
+ "javax.annotation:jsr250-api:jar:sources:1.0"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/common/html/types/types/1.0.8/types-1.0.8-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/common/html/types/types/1.0.8/types-1.0.8-sources.jar",
+ "https://maven.google.com/com/google/common/html/types/types/1.0.8/types-1.0.8-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/common/html/types/types/1.0.8/types-1.0.8-sources.jar"
+ ],
+ "sha256": "67bd953b29c5ed25e1b02885aed8de17b8c0bd4c97059e89d27dd88c636efc06",
+ "url": "https://jcenter.bintray.com/com/google/common/html/types/types/1.0.8/types-1.0.8-sources.jar"
+ },
+ {
+ "coord": "com.google.errorprone:error_prone_annotations:2.6.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0.jar",
+ "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0.jar",
+ "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0.jar"
+ ],
+ "sha256": "94b131949e313af32d98538acdb80c8fd495131f0cd0e747e7dcca7866ff7283",
+ "url": "https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0.jar"
+ },
+ {
+ "coord": "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0-sources.jar",
+ "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0-sources.jar"
+ ],
+ "sha256": "8352ad9b2e125242209fb52ee2fecf3ce9dbd5a3e4b65a091486264fbc35ed31",
+ "url": "https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.6.0/error_prone_annotations-2.6.0-sources.jar"
+ },
+ {
+ "coord": "com.google.flogger:flogger-system-backend:0.7.3",
+ "dependencies": [
+ "org.checkerframework:checker-compat-qual:2.5.3",
+ "com.google.flogger:flogger:0.7.3"
+ ],
+ "directDependencies": [
+ "com.google.flogger:flogger:0.7.3",
+ "org.checkerframework:checker-compat-qual:2.5.3"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3.jar",
+ "https://maven.google.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3.jar",
+ "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3.jar"
+ ],
+ "sha256": "fd66f2615a9d8fe1b2274f1b5005a5555a0cd63cdfdab2ca9500e6eb81dc5f63",
+ "url": "https://jcenter.bintray.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3.jar"
+ },
+ {
+ "coord": "com.google.flogger:flogger-system-backend:jar:sources:0.7.3",
+ "dependencies": [
+ "com.google.flogger:flogger:jar:sources:0.7.3",
+ "org.checkerframework:checker-compat-qual:jar:sources:2.5.3"
+ ],
+ "directDependencies": [
+ "com.google.flogger:flogger:jar:sources:0.7.3",
+ "org.checkerframework:checker-compat-qual:jar:sources:2.5.3"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3-sources.jar",
+ "https://maven.google.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3-sources.jar"
+ ],
+ "sha256": "9fb7fc65b567b52ae150096bdddff5e8939e1a10e23e885c0bb8aba5e0fb2b7c",
+ "url": "https://jcenter.bintray.com/com/google/flogger/flogger-system-backend/0.7.3/flogger-system-backend-0.7.3-sources.jar"
+ },
+ {
+ "coord": "com.google.flogger:flogger:0.7.3",
+ "dependencies": [
+ "org.checkerframework:checker-compat-qual:2.5.3"
+ ],
+ "directDependencies": [
+ "org.checkerframework:checker-compat-qual:2.5.3"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3.jar",
+ "https://maven.google.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3.jar",
+ "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.7.3/flogger-0.7.3.jar"
+ ],
+ "sha256": "8c53d8d56ac3c1b1493590dd4234a1c175d44d404fda1bd74f4e5803de614568",
+ "url": "https://jcenter.bintray.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3.jar"
+ },
+ {
+ "coord": "com.google.flogger:flogger:jar:sources:0.7.3",
+ "dependencies": [
+ "org.checkerframework:checker-compat-qual:jar:sources:2.5.3"
+ ],
+ "directDependencies": [
+ "org.checkerframework:checker-compat-qual:jar:sources:2.5.3"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3-sources.jar",
+ "https://maven.google.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.7.3/flogger-0.7.3-sources.jar"
+ ],
+ "sha256": "b981c9fa749046c51daae47b75aa981d4244c86e54d287ab87f37390d080db01",
+ "url": "https://jcenter.bintray.com/com/google/flogger/flogger/0.7.3/flogger-0.7.3-sources.jar"
+ },
+ {
+ "coord": "com.google.guava:failureaccess:1.0.1",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar",
+ "https://maven.google.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar",
+ "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar"
+ ],
+ "sha256": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
+ "url": "https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar"
+ },
+ {
+ "coord": "com.google.guava:failureaccess:jar:sources:1.0.1",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1-sources.jar",
+ "https://maven.google.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1-sources.jar"
+ ],
+ "sha256": "092346eebbb1657b51aa7485a246bf602bb464cc0b0e2e1c7e7201fadce1e98f",
+ "url": "https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1-sources.jar"
+ },
+ {
+ "coord": "com.google.guava:guava:31.0.1-jre",
+ "dependencies": [
+ "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
+ "com.google.j2objc:j2objc-annotations:1.3",
+ "com.google.code.findbugs:jsr305:3.0.2",
+ "com.google.errorprone:error_prone_annotations:2.6.0",
+ "org.checkerframework:checker-qual:3.12.0",
+ "com.google.guava:failureaccess:1.0.1"
+ ],
+ "directDependencies": [
+ "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
+ "com.google.j2objc:j2objc-annotations:1.3",
+ "com.google.code.findbugs:jsr305:3.0.2",
+ "com.google.errorprone:error_prone_annotations:2.6.0",
+ "org.checkerframework:checker-qual:3.12.0",
+ "com.google.guava:failureaccess:1.0.1"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar",
+ "https://maven.google.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar",
+ "https://repo1.maven.org/maven2/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar"
+ ],
+ "sha256": "d5be94d65e87bd219fb3193ad1517baa55a3b88fc91d21cf735826ab5af087b9",
+ "url": "https://jcenter.bintray.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar"
+ },
+ {
+ "coord": "com.google.guava:guava:jar:sources:31.0.1-jre",
+ "dependencies": [
+ "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
+ "com.google.j2objc:j2objc-annotations:jar:sources:1.3",
+ "org.checkerframework:checker-qual:jar:sources:3.12.0",
+ "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava",
+ "com.google.guava:failureaccess:jar:sources:1.0.1"
+ ],
+ "directDependencies": [
+ "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
+ "com.google.j2objc:j2objc-annotations:jar:sources:1.3",
+ "org.checkerframework:checker-qual:jar:sources:3.12.0",
+ "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava",
+ "com.google.guava:failureaccess:jar:sources:1.0.1"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre-sources.jar",
+ "https://maven.google.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre-sources.jar"
+ ],
+ "sha256": "fc0fb66f315f10b8713fc43354936d3649a8ad63f789d42fd7c3e55ecf72e092",
+ "url": "https://jcenter.bintray.com/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre-sources.jar"
+ },
+ {
+ "coord": "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar",
+ "https://maven.google.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar",
+ "https://repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar"
+ ],
+ "sha256": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99",
+ "url": "https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar"
+ },
+ {
+ "coord": "com.google.j2objc:j2objc-annotations:1.3",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar",
+ "https://maven.google.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar",
+ "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar"
+ ],
+ "sha256": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b",
+ "url": "https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar"
+ },
+ {
+ "coord": "com.google.j2objc:j2objc-annotations:jar:sources:1.3",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3-sources.jar",
+ "https://maven.google.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3-sources.jar"
+ ],
+ "sha256": "ba4df669fec153fa4cd0ef8d02c6d3ef0702b7ac4cabe080facf3b6e490bb972",
+ "url": "https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3-sources.jar"
+ },
+ {
+ "coord": "com.google.jimfs:jimfs:1.2",
+ "dependencies": [
+ "com.google.guava:guava:31.0.1-jre"
+ ],
+ "directDependencies": [
+ "com.google.guava:guava:31.0.1-jre"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar",
+ "https://maven.google.com/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar",
+ "https://repo1.maven.org/maven2/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar"
+ ],
+ "sha256": "de16d5c8489729a8512f1a02fbd81f58f89249b72066987da4cc5c87ecb9f72d",
+ "url": "https://jcenter.bintray.com/com/google/jimfs/jimfs/1.2/jimfs-1.2.jar"
+ },
+ {
+ "coord": "com.google.jimfs:jimfs:jar:sources:1.2",
+ "dependencies": [
+ "com.google.guava:guava:jar:sources:31.0.1-jre"
+ ],
+ "directDependencies": [
+ "com.google.guava:guava:jar:sources:31.0.1-jre"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/jimfs/jimfs/1.2/jimfs-1.2-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/jimfs/jimfs/1.2/jimfs-1.2-sources.jar",
+ "https://maven.google.com/com/google/jimfs/jimfs/1.2/jimfs-1.2-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/jimfs/jimfs/1.2/jimfs-1.2-sources.jar"
+ ],
+ "sha256": "1f1b3209cb85d6cecadc0ed36831ba175557a4bd66798bd2f12cd2ee3d39129e",
+ "url": "https://jcenter.bintray.com/com/google/jimfs/jimfs/1.2/jimfs-1.2-sources.jar"
+ },
+ {
+ "coord": "com.google.jsinterop:jsinterop-annotations:1.0.1",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1.jar",
+ "https://maven.google.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1.jar",
+ "https://repo1.maven.org/maven2/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1.jar"
+ ],
+ "sha256": "b2cc45519d62a1144f8cd932fa0c2c30a944c3ae9f060934587a337d81b391c8",
+ "url": "https://jcenter.bintray.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1.jar"
+ },
+ {
+ "coord": "com.google.jsinterop:jsinterop-annotations:jar:sources:1.0.1",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1-sources.jar",
+ "https://maven.google.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1-sources.jar"
+ ],
+ "sha256": "082d7a7cba06f0543b7d0085929897f343054acd8491a4d7020ab433d4f6daf5",
+ "url": "https://jcenter.bintray.com/com/google/jsinterop/jsinterop-annotations/1.0.1/jsinterop-annotations-1.0.1-sources.jar"
+ },
+ {
+ "coord": "com.google.protobuf:protobuf-java:3.3.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar",
+ "https://maven.google.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar",
+ "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar"
+ ],
+ "sha256": "f3411ade77523d5f0d013d4f25c36879e66f0c5e1e4310f7096d54d0d2553554",
+ "url": "https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar"
+ },
+ {
+ "coord": "com.google.protobuf:protobuf-java:jar:sources:3.3.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0-sources.jar",
+ "https://maven.google.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0-sources.jar"
+ ],
+ "sha256": "d428e0fe2ed22e0d914349599c15c8bcdb2d75adab24a211d3046e5ed7f65961",
+ "url": "https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0-sources.jar"
+ },
+ {
+ "coord": "com.google.re2j:re2j:1.6",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/re2j/re2j/1.6/re2j-1.6.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/re2j/re2j/1.6/re2j-1.6.jar",
+ "https://maven.google.com/com/google/re2j/re2j/1.6/re2j-1.6.jar",
+ "https://repo1.maven.org/maven2/com/google/re2j/re2j/1.6/re2j-1.6.jar"
+ ],
+ "sha256": "c8b5c3472d4db594a865b2e47f835d07fb8b1415eeba559dccfb0a6945f033cd",
+ "url": "https://jcenter.bintray.com/com/google/re2j/re2j/1.6/re2j-1.6.jar"
+ },
+ {
+ "coord": "com.google.re2j:re2j:jar:sources:1.6",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/google/re2j/re2j/1.6/re2j-1.6-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/re2j/re2j/1.6/re2j-1.6-sources.jar",
+ "https://maven.google.com/com/google/re2j/re2j/1.6/re2j-1.6-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/re2j/re2j/1.6/re2j-1.6-sources.jar"
+ ],
+ "sha256": "93cddb0d06f582f6133d0a6d713efae558a1cfb92646cbd27ade5e7912134a95",
+ "url": "https://jcenter.bintray.com/com/google/re2j/re2j/1.6/re2j-1.6-sources.jar"
+ },
+ {
+ "coord": "com.google.truth:truth:1.1.2",
+ "dependencies": [
+ "com.google.errorprone:error_prone_annotations:2.6.0",
+ "org.checkerframework:checker-qual:3.12.0",
+ "org.ow2.asm:asm:9.1",
+ "junit:junit:4.13.2",
+ "com.google.guava:guava:31.0.1-jre",
+ "com.google.auto.value:auto-value-annotations:1.8"
+ ],
+ "directDependencies": [
+ "com.google.errorprone:error_prone_annotations:2.6.0",
+ "org.checkerframework:checker-qual:3.12.0",
+ "org.ow2.asm:asm:9.1",
+ "junit:junit:4.13.2",
+ "com.google.guava:guava:31.0.1-jre",
+ "com.google.auto.value:auto-value-annotations:1.8"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/truth/truth/1.1.2/truth-1.1.2.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/truth/truth/1.1.2/truth-1.1.2.jar",
+ "https://maven.google.com/com/google/truth/truth/1.1.2/truth-1.1.2.jar",
+ "https://repo1.maven.org/maven2/com/google/truth/truth/1.1.2/truth-1.1.2.jar"
+ ],
+ "sha256": "a85e03b8b6ae8780f060cfded9500a3d1b5f52808f99a2ea6da9c683313c7518",
+ "url": "https://jcenter.bintray.com/com/google/truth/truth/1.1.2/truth-1.1.2.jar"
+ },
+ {
+ "coord": "com.google.truth:truth:jar:sources:1.1.2",
+ "dependencies": [
+ "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "com.google.auto.value:auto-value-annotations:jar:sources:1.8",
+ "org.ow2.asm:asm:jar:sources:9.1",
+ "junit:junit:jar:sources:4.13.2",
+ "com.google.guava:guava:jar:sources:31.0.1-jre",
+ "org.checkerframework:checker-qual:jar:sources:3.12.0"
+ ],
+ "directDependencies": [
+ "com.google.errorprone:error_prone_annotations:jar:sources:2.6.0",
+ "com.google.auto.value:auto-value-annotations:jar:sources:1.8",
+ "org.ow2.asm:asm:jar:sources:9.1",
+ "junit:junit:jar:sources:4.13.2",
+ "com.google.guava:guava:jar:sources:31.0.1-jre",
+ "org.checkerframework:checker-qual:jar:sources:3.12.0"
+ ],
+ "file": "v1/https/jcenter.bintray.com/com/google/truth/truth/1.1.2/truth-1.1.2-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/google/truth/truth/1.1.2/truth-1.1.2-sources.jar",
+ "https://maven.google.com/com/google/truth/truth/1.1.2/truth-1.1.2-sources.jar",
+ "https://repo1.maven.org/maven2/com/google/truth/truth/1.1.2/truth-1.1.2-sources.jar"
+ ],
+ "sha256": "a98b2f82af388484dfe1b2b859c3c05a28fcae000fc532ef0155e1814fa3af05",
+ "url": "https://jcenter.bintray.com/com/google/truth/truth/1.1.2/truth-1.1.2-sources.jar"
+ },
+ {
+ "coord": "com.googlecode.java-diff-utils:diffutils:1.3.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0.jar",
+ "https://maven.google.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0.jar",
+ "https://repo1.maven.org/maven2/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0.jar"
+ ],
+ "sha256": "61ba4dc49adca95243beaa0569adc2a23aedb5292ae78aa01186fa782ebdc5c2",
+ "url": "https://jcenter.bintray.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0.jar"
+ },
+ {
+ "coord": "com.googlecode.java-diff-utils:diffutils:jar:sources:1.3.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0-sources.jar",
+ "https://maven.google.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0-sources.jar",
+ "https://repo1.maven.org/maven2/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0-sources.jar"
+ ],
+ "sha256": "7f4d40e97827f8a3285c3e47e8d28797ecfd45fb2ff94bd12cb6a83760a5f427",
+ "url": "https://jcenter.bintray.com/com/googlecode/java-diff-utils/diffutils/1.3.0/diffutils-1.3.0-sources.jar"
+ },
+ {
+ "coord": "javax.annotation:jsr250-api:1.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar",
+ "https://maven.google.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar",
+ "https://repo1.maven.org/maven2/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar"
+ ],
+ "sha256": "a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f",
+ "url": "https://jcenter.bintray.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar"
+ },
+ {
+ "coord": "javax.annotation:jsr250-api:jar:sources:1.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar",
+ "https://maven.google.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar",
+ "https://repo1.maven.org/maven2/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar"
+ ],
+ "sha256": "025c47d76c60199381be07012a0c5f9e74661aac5bd67f5aec847741c5b7f838",
+ "url": "https://jcenter.bintray.com/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar"
+ },
+ {
+ "coord": "junit:junit:4.13.2",
+ "dependencies": [
+ "org.hamcrest:hamcrest-core:1.3"
+ ],
+ "directDependencies": [
+ "org.hamcrest:hamcrest-core:1.3"
+ ],
+ "file": "v1/https/jcenter.bintray.com/junit/junit/4.13.2/junit-4.13.2.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/junit/junit/4.13.2/junit-4.13.2.jar",
+ "https://maven.google.com/junit/junit/4.13.2/junit-4.13.2.jar",
+ "https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar"
+ ],
+ "sha256": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3",
+ "url": "https://jcenter.bintray.com/junit/junit/4.13.2/junit-4.13.2.jar"
+ },
+ {
+ "coord": "junit:junit:jar:sources:4.13.2",
+ "dependencies": [
+ "org.hamcrest:hamcrest-core:jar:sources:1.3"
+ ],
+ "directDependencies": [
+ "org.hamcrest:hamcrest-core:jar:sources:1.3"
+ ],
+ "file": "v1/https/jcenter.bintray.com/junit/junit/4.13.2/junit-4.13.2-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/junit/junit/4.13.2/junit-4.13.2-sources.jar",
+ "https://maven.google.com/junit/junit/4.13.2/junit-4.13.2-sources.jar",
+ "https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2-sources.jar"
+ ],
+ "sha256": "34181df6482d40ea4c046b063cb53c7ffae94bdf1b1d62695bdf3adf9dea7e3a",
+ "url": "https://jcenter.bintray.com/junit/junit/4.13.2/junit-4.13.2-sources.jar"
+ },
+ {
+ "coord": "org.apache.tomcat:tomcat-annotations-api:9.0.45",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45.jar",
+ "https://maven.google.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45.jar",
+ "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45.jar"
+ ],
+ "sha256": "1aa1e342d105949e186079d18cffe121e860fc18bd9890060ce9673273562de6",
+ "url": "https://jcenter.bintray.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45.jar"
+ },
+ {
+ "coord": "org.apache.tomcat:tomcat-annotations-api:jar:sources:9.0.45",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45-sources.jar",
+ "https://maven.google.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45-sources.jar",
+ "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45-sources.jar"
+ ],
+ "sha256": "52b91a346343a3093123f1ca126ad76f6538bb35b86e69c55b05ea4481862434",
+ "url": "https://jcenter.bintray.com/org/apache/tomcat/tomcat-annotations-api/9.0.45/tomcat-annotations-api-9.0.45-sources.jar"
+ },
+ {
+ "coord": "org.checkerframework:checker-compat-qual:2.5.3",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar",
+ "https://maven.google.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar",
+ "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar"
+ ],
+ "sha256": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d",
+ "url": "https://jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar"
+ },
+ {
+ "coord": "org.checkerframework:checker-compat-qual:jar:sources:2.5.3",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3-sources.jar",
+ "https://maven.google.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3-sources.jar",
+ "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3-sources.jar"
+ ],
+ "sha256": "68011773fd60cfc7772508134086787210ba2a1443e3f9c3f5d4233a226c3346",
+ "url": "https://jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3-sources.jar"
+ },
+ {
+ "coord": "org.checkerframework:checker-qual:3.12.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar",
+ "https://maven.google.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar",
+ "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar"
+ ],
+ "sha256": "ff10785ac2a357ec5de9c293cb982a2cbb605c0309ea4cc1cb9b9bc6dbe7f3cb",
+ "url": "https://jcenter.bintray.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar"
+ },
+ {
+ "coord": "org.checkerframework:checker-qual:jar:sources:3.12.0",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0-sources.jar",
+ "https://maven.google.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0-sources.jar",
+ "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0-sources.jar"
+ ],
+ "sha256": "fd99a45195ed893803624d1030387056a96601013f5e61ccabd79abb4ddfa876",
+ "url": "https://jcenter.bintray.com/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0-sources.jar"
+ },
+ {
+ "coord": "org.hamcrest:hamcrest-core:1.3",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
+ "https://maven.google.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
+ "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
+ ],
+ "sha256": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
+ "url": "https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
+ },
+ {
+ "coord": "org.hamcrest:hamcrest-core:jar:sources:1.3",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar",
+ "https://maven.google.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar",
+ "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar"
+ ],
+ "sha256": "e223d2d8fbafd66057a8848cc94222d63c3cedd652cc48eddc0ab5c39c0f84df",
+ "url": "https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar"
+ },
+ {
+ "coord": "org.ow2.asm:asm:9.1",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/ow2/asm/asm/9.1/asm-9.1.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/ow2/asm/asm/9.1/asm-9.1.jar",
+ "https://maven.google.com/org/ow2/asm/asm/9.1/asm-9.1.jar",
+ "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.jar"
+ ],
+ "sha256": "cda4de455fab48ff0bcb7c48b4639447d4de859a7afc30a094a986f0936beba2",
+ "url": "https://jcenter.bintray.com/org/ow2/asm/asm/9.1/asm-9.1.jar"
+ },
+ {
+ "coord": "org.ow2.asm:asm:jar:sources:9.1",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": "v1/https/jcenter.bintray.com/org/ow2/asm/asm/9.1/asm-9.1-sources.jar",
+ "mirror_urls": [
+ "https://jcenter.bintray.com/org/ow2/asm/asm/9.1/asm-9.1-sources.jar",
+ "https://maven.google.com/org/ow2/asm/asm/9.1/asm-9.1-sources.jar",
+ "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1-sources.jar"
+ ],
+ "sha256": "64a1059b152dee08e203b4e1117b7979fff1578c545573f05329fb6d9090bb41",
+ "url": "https://jcenter.bintray.com/org/ow2/asm/asm/9.1/asm-9.1-sources.jar"
+ },
+ {
+ "coord": "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava",
+ "dependencies": [],
+ "directDependencies": [],
+ "file": null
+ }
+ ],
+ "version": "0.1.0"
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index beb509716..d0dc4b1b7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1459,9 +1459,9 @@
}
},
"minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
},
"minimist-options": {
@@ -1961,9 +1961,9 @@
"dev": true
},
"trim-off-newlines": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
- "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz",
+ "integrity": "sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg==",
"dev": true
},
"tslib": {
diff --git a/setup.bzl b/setup.bzl
index 55d78d296..bfd9ae74f 100644
--- a/setup.bzl
+++ b/setup.bzl
@@ -36,21 +36,21 @@ def kythe_rule_repositories():
maybe(
http_archive,
name = "io_bazel_rules_go",
- sha256 = "8e968b5fcea1d2d64071872b12737bbb5514524ee5f0a4f54f5920266c261acb",
+ sha256 = "f2dcd210c7095febe54b804bb1cd3a58fe8435a909db2ec04e31542631cf715c",
urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.28.0/rules_go-v0.28.0.zip",
- "https://github.com/bazelbuild/rules_go/releases/download/v0.28.0/rules_go-v0.28.0.zip",
+ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.31.0/rules_go-v0.31.0.zip",
+ "https://github.com/bazelbuild/rules_go/releases/download/v0.31.0/rules_go-v0.31.0.zip",
],
)
maybe(
http_archive,
name = "rules_cc",
- sha256 = "29daf0159f0cf552fcff60b49d8bcd4f08f08506d2da6e41b07058ec50cfeaec",
- strip_prefix = "rules_cc-b7fe9697c0c76ab2fd431a891dbb9a6a32ed7c3e",
+ sha256 = "ff7876d80cd3f6b8c7a064bd9aa42a78e02096544cca2b22a9cf390a4397a53e",
+ strip_prefix = "rules_cc-081771d4a0e9d7d3aa0eed2ef389fa4700dfb23e",
urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/rules_cc/archive/b7fe9697c0c76ab2fd431a891dbb9a6a32ed7c3e.tar.gz",
- "https://github.com/bazelbuild/rules_cc/archive/b7fe9697c0c76ab2fd431a891dbb9a6a32ed7c3e.tar.gz",
+ "https://mirror.bazel.build/github.com/bazelbuild/rules_cc/archive/081771d4a0e9d7d3aa0eed2ef389fa4700dfb23e.tar.gz",
+ "https://github.com/bazelbuild/rules_cc/archive/081771d4a0e9d7d3aa0eed2ef389fa4700dfb23e.tar.gz",
],
)
@@ -109,10 +109,10 @@ def kythe_rule_repositories():
maybe(
http_archive,
name = "rules_rust",
- sha256 = "f8c0132ea3855781d41ac574df0ca44959f17694d368c03c7cbaa5f29ef42d8b",
- strip_prefix = "rules_rust-5bb12cc451317581452b5441692d57eb4310b839",
+ sha256 = "05e15e536cc1e5fd7b395d044fc2dabf73d2b27622fbc10504b7e48219bb09bc",
urls = [
- "https://github.com/bazelbuild/rules_rust/archive/5bb12cc451317581452b5441692d57eb4310b839.tar.gz",
+ "https://mirror.bazel.build/github.com/bazelbuild/rules_rust/releases/download/0.8.1/rules_rust-v0.8.1.tar.gz",
+ "https://github.com/bazelbuild/rules_rust/releases/download/0.8.1/rules_rust-v0.8.1.tar.gz",
],
)
@@ -144,7 +144,13 @@ def kythe_rule_repositories():
commit = "4c564940a14f55d2315d2676b10fea0660ea814a",
name = "llvm-project-raw",
build_file_content = "#empty",
- sha256 = "938127d27b04c2fcff4814075771e2e434eb5e20a8b6935e0141454effaf6be7",
patch_args = ["-p1"],
patches = ["@io_kythe//third_party:llvm-bazel-glob.patch"],
)
+
+ maybe(
+ github_archive,
+ repo_name = "hedronvision/bazel-compile-commands-extractor",
+ name = "hedron_compile_commands",
+ commit = "d6734f1d7848800edc92de48fb9d9b82f2677958",
+ )
diff --git a/third_party/BUILD b/third_party/BUILD
index 3c63945fd..dd543e520 100644
--- a/third_party/BUILD
+++ b/third_party/BUILD
@@ -17,7 +17,6 @@ filegroup(
"//third_party/glog:COPYING",
"//third_party/go:licenses",
"//third_party/guava:COPYING",
- "//third_party/javac:license",
"//third_party/jcommander:license.txt",
"//third_party/jsr250_api:LICENSE",
"//third_party/jsr305:LICENSE",
@@ -35,7 +34,6 @@ filegroup(
"@com_github_google_leveldb//:license",
"@com_github_google_snappy//:license",
"@com_github_tencent_rapidjson//:license",
- "@com_google_common_flogger//:LICENSE",
"@com_google_protobuf//:LICENSE",
"@org_brotli//:LICENSE",
],
diff --git a/third_party/javac/BUILD b/third_party/javac/BUILD
deleted file mode 100644
index c87d47a16..000000000
--- a/third_party/javac/BUILD
+++ /dev/null
@@ -1,40 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_import")
-
-package(default_visibility = ["//visibility:public"])
-
-licenses(["restricted"]) # GNU GPL v2 with Classpath exception
-
-filegroup(
- name = "license",
- srcs = ["LICENSE"],
-)
-
-java_import(
- name = "javac",
- jars = [":javac_jar"],
- neverlink = True,
-)
-
-java_import(
- name = "javac9",
- jars = [
- ":jdk_compiler_jar",
- ":java_compiler_jar",
- ],
- neverlink = True,
-)
-
-filegroup(
- name = "javac_jar",
- srcs = ["javac-9+181-r4173-1.jar"],
-)
-
-filegroup(
- name = "jdk_compiler_jar",
- srcs = ["jdk_compiler.jar"],
-)
-
-filegroup(
- name = "java_compiler_jar",
- srcs = ["java_compiler.jar"],
-)
diff --git a/third_party/javac/LICENSE b/third_party/javac/LICENSE
deleted file mode 100644
index 8b400c7ab..000000000
--- a/third_party/javac/LICENSE
+++ /dev/null
@@ -1,347 +0,0 @@
-The GNU General Public License (GPL)
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this license
-document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom to share
-and change it. By contrast, the GNU General Public License is intended to
-guarantee your freedom to share and change free software--to make sure the
-software is free for all its users. This General Public License applies to
-most of the Free Software Foundation's software and to any other program whose
-authors commit to using it. (Some other Free Software Foundation software is
-covered by the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our
-General Public Licenses are designed to make sure that you have the freedom to
-distribute copies of free software (and charge for this service if you wish),
-that you receive source code or can get it if you want it, that you can change
-the software or use pieces of it in new free programs; and that you know you
-can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to deny
-you these rights or to ask you to surrender the rights. These restrictions
-translate to certain responsibilities for you if you distribute copies of the
-software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for
-a fee, you must give the recipients all the rights that you have. You must
-make sure that they, too, receive or can get the source code. And you must
-show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy, distribute
-and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If the
-software is modified by someone else and passed on, we want its recipients to
-know that what they have is not the original, so that any problems introduced
-by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We
-wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program proprietary.
-To prevent this, we have made it clear that any patent must be licensed for
-everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the terms of
-this General Public License. The "Program", below, refers to any such program
-or work, and a "work based on the Program" means either the Program or any
-derivative work under copyright law: that is to say, a work containing the
-Program or a portion of it, either verbatim or with modifications and/or
-translated into another language. (Hereinafter, translation is included
-without limitation in the term "modification".) Each licensee is addressed as
-"you".
-
-Activities other than copying, distribution and modification are not covered by
-this License; they are outside its scope. The act of running the Program is
-not restricted, and the output from the Program is covered only if its contents
-constitute a work based on the Program (independent of having been made by
-running the Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source code as
-you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this License
-and to the absence of any warranty; and give any other recipients of the
-Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you may
-at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it, thus
-forming a work based on the Program, and copy and distribute such modifications
-or work under the terms of Section 1 above, provided that you also meet all of
-these conditions:
-
- a) You must cause the modified files to carry prominent notices stating
- that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in whole or
- in part contains or is derived from the Program or any part thereof, to be
- licensed as a whole at no charge to all third parties under the terms of
- this License.
-
- c) If the modified program normally reads commands interactively when run,
- you must cause it, when started running for such interactive use in the
- most ordinary way, to print or display an announcement including an
- appropriate copyright notice and a notice that there is no warranty (or
- else, saying that you provide a warranty) and that users may redistribute
- the program under these conditions, and telling the user how to view a copy
- of this License. (Exception: if the Program itself is interactive but does
- not normally print such an announcement, your work based on the Program is
- not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If identifiable
-sections of that work are not derived from the Program, and can be reasonably
-considered independent and separate works in themselves, then this License, and
-its terms, do not apply to those sections when you distribute them as separate
-works. But when you distribute the same sections as part of a whole which is a
-work based on the Program, the distribution of the whole must be on the terms
-of this License, whose permissions for other licensees extend to the entire
-whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your
-rights to work written entirely by you; rather, the intent is to exercise the
-right to control the distribution of derivative or collective works based on
-the Program.
-
-In addition, mere aggregation of another work not based on the Program with the
-Program (or with a work based on the Program) on a volume of a storage or
-distribution medium does not bring the other work under the scope of this
-License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections 1 and
-2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable source
- code, which must be distributed under the terms of Sections 1 and 2 above
- on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three years, to
- give any third party, for a charge no more than your cost of physically
- performing source distribution, a complete machine-readable copy of the
- corresponding source code, to be distributed under the terms of Sections 1
- and 2 above on a medium customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer to
- distribute corresponding source code. (This alternative is allowed only
- for noncommercial distribution and only if you received the program in
- object code or executable form with such an offer, in accord with
- Subsection b above.)
-
-The source code for a work means the preferred form of the work for making
-modifications to it. For an executable work, complete source code means all
-the source code for all modules it contains, plus any associated interface
-definition files, plus the scripts used to control compilation and installation
-of the executable. However, as a special exception, the source code
-distributed need not include anything that is normally distributed (in either
-source or binary form) with the major components (compiler, kernel, and so on)
-of the operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the source
-code from the same place counts as distribution of the source code, even though
-third parties are not compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as
-expressly provided under this License. Any attempt otherwise to copy, modify,
-sublicense or distribute the Program is void, and will automatically terminate
-your rights under this License. However, parties who have received copies, or
-rights, from you under this License will not have their licenses terminated so
-long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it.
-However, nothing else grants you permission to modify or distribute the Program
-or its derivative works. These actions are prohibited by law if you do not
-accept this License. Therefore, by modifying or distributing the Program (or
-any work based on the Program), you indicate your acceptance of this License to
-do so, and all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the Program),
-the recipient automatically receives a license from the original licensor to
-copy, distribute or modify the Program subject to these terms and conditions.
-You may not impose any further restrictions on the recipients' exercise of the
-rights granted herein. You are not responsible for enforcing compliance by
-third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues), conditions
-are imposed on you (whether by court order, agreement or otherwise) that
-contradict the conditions of this License, they do not excuse you from the
-conditions of this License. If you cannot distribute so as to satisfy
-simultaneously your obligations under this License and any other pertinent
-obligations, then as a consequence you may not distribute the Program at all.
-For example, if a patent license would not permit royalty-free redistribution
-of the Program by all those who receive copies directly or indirectly through
-you, then the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply and
-the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or
-other property right claims or to contest validity of any such claims; this
-section has the sole purpose of protecting the integrity of the free software
-distribution system, which is implemented by public license practices. Many
-people have made generous contributions to the wide range of software
-distributed through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing to
-distribute software through any other system and a licensee cannot impose that
-choice.
-
-This section is intended to make thoroughly clear what is believed to be a
-consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain
-countries either by patents or by copyrighted interfaces, the original
-copyright holder who places the Program under this License may add an explicit
-geographical distribution limitation excluding those countries, so that
-distribution is permitted only in or among countries not thus excluded. In
-such case, this License incorporates the limitation as if written in the body
-of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions of the
-General Public License from time to time. Such new versions will be similar in
-spirit to the present version, but may differ in detail to address new problems
-or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any later
-version", you have the option of following the terms and conditions either of
-that version or of any later version published by the Free Software Foundation.
-If the Program does not specify a version number of this License, you may
-choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs
-whose distribution conditions are different, write to the author to ask for
-permission. For software which is copyrighted by the Free Software Foundation,
-write to the Free Software Foundation; we sometimes make exceptions for this.
-Our decision will be guided by the two goals of preserving the free status of
-all derivatives of our free software and of promoting the sharing and reuse of
-software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
-THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
-STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
-PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
-YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
-ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
-PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
-INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
-BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
-OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS
-
-How to Apply These Terms to Your New Programs
-
-If you develop a new program, and you want it to be of the greatest possible
-use to the public, the best way to achieve this is to make it free software
-which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest to attach
-them to the start of each source file to most effectively convey the exclusion
-of warranty; and each file should have at least the "copyright" line and a
-pointer to where the full notice is found.
-
- One line to give the program's name and a brief idea of what it does.
-
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this when it
-starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
- with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free
- software, and you are welcome to redistribute it under certain conditions;
- type 'show c' for details.
-
-The hypothetical commands 'show w' and 'show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may be
-called something other than 'show w' and 'show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your school,
-if any, to sign a "copyright disclaimer" for the program, if necessary. Here
-is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- 'Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- signature of Ty Coon, 1 April 1989
-
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General Public
-License instead of this License.
-
-
-"CLASSPATH" EXCEPTION TO THE GPL
-
-Certain source files distributed by Oracle America and/or its affiliates are
-subject to the following clarification and special exception to the GPL, but
-only where Oracle has expressly included in the particular source file's header
-the words "Oracle designates this particular file as subject to the "Classpath"
-exception as provided by Oracle in the LICENSE file that accompanied this code."
-
- Linking this library statically or dynamically with other modules is making
- a combined work based on this library. Thus, the terms and conditions of
- the GNU General Public License cover the whole combination.
-
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent modules,
- and to copy and distribute the resulting executable under terms of your
- choice, provided that you also meet, for each linked independent module,
- the terms and conditions of the license of that module. An independent
- module is a module which is not derived from or based on this library. If
- you modify this library, you may extend this exception to your version of
- the library, but you are not obligated to do so. If you do not wish to do
- so, delete this exception statement from your version.
diff --git a/third_party/javac/README.google b/third_party/javac/README.google
deleted file mode 100644
index 47ecaf9d2..000000000
--- a/third_party/javac/README.google
+++ /dev/null
@@ -1,7 +0,0 @@
-URL: http://repo1.maven.org/maven2/com/google/errorprone/javac/9-dev-r4023-1/javac-9+181-dev-r4173-1.jar
-Version: 9-dev-r4023-1
-License: GNU GPL v2 with Classpath exception
-License File: LICENSE
-Description: The OpenJDK javac.
-Local Modifications:
- No modifications.
diff --git a/third_party/javac/java_compiler-src.jar b/third_party/javac/java_compiler-src.jar
deleted file mode 100644
index 548412438..000000000
--- a/third_party/javac/java_compiler-src.jar
+++ /dev/null
Binary files differ
diff --git a/third_party/javac/java_compiler.jar b/third_party/javac/java_compiler.jar
deleted file mode 100644
index 8895cc70c..000000000
--- a/third_party/javac/java_compiler.jar
+++ /dev/null
Binary files differ
diff --git a/third_party/javac/javac-9+181-r4173-1.jar b/third_party/javac/javac-9+181-r4173-1.jar
deleted file mode 100644
index 168633db1..000000000
--- a/third_party/javac/javac-9+181-r4173-1.jar
+++ /dev/null
Binary files differ
diff --git a/third_party/javac/jdk_compiler-src.jar b/third_party/javac/jdk_compiler-src.jar
deleted file mode 100644
index 32ca99b39..000000000
--- a/third_party/javac/jdk_compiler-src.jar
+++ /dev/null
Binary files differ
diff --git a/third_party/javac/jdk_compiler.jar b/third_party/javac/jdk_compiler.jar
deleted file mode 100644
index ff932e338..000000000
--- a/third_party/javac/jdk_compiler.jar
+++ /dev/null
Binary files differ
diff --git a/tools/build_rules/external_tools/external_tools_configure.bzl b/tools/build_rules/external_tools/external_tools_configure.bzl
index 7ba06bb2f..dc336f579 100644
--- a/tools/build_rules/external_tools/external_tools_configure.bzl
+++ b/tools/build_rules/external_tools/external_tools_configure.bzl
@@ -40,6 +40,7 @@ def _external_toolchain_autoconf_impl(repository_ctx):
"mkdir",
"mktemp",
"mv",
+ "python3",
"readlink",
"rm",
"sed",
diff --git a/tools/build_rules/extraction.bzl b/tools/build_rules/extraction.bzl
index 0fe4505dd..03035509e 100644
--- a/tools/build_rules/extraction.bzl
+++ b/tools/build_rules/extraction.bzl
@@ -21,7 +21,7 @@ def _merge_kzips_impl(ctx):
inputs = ctx.files.srcs,
executable = ctx.executable._kzip,
mnemonic = "MergeKZips",
- arguments = ["merge", "--output", output.path] + [f.path for f in ctx.files.srcs],
+ arguments = ["merge", "--ignore_duplicate_cus", "--output", output.path] + [f.path for f in ctx.files.srcs],
)
return [DefaultInfo(files = depset([output]))]
@@ -39,3 +39,39 @@ merge_kzips = rule(
outputs = {"kzip": "%{name}.kzip"},
implementation = _merge_kzips_impl,
)
+
+def _filter_kzip_impl(ctx):
+ output = ctx.outputs.kzip
+ args = ctx.actions.args()
+ args.add("filter")
+ args.add("--input", ctx.file.src.path)
+ args.add_joined("--languages", ctx.attr.languages, join_with = ",")
+ args.add("--output", output.path)
+ ctx.actions.run(
+ outputs = [output],
+ inputs = [ctx.file.src],
+ executable = ctx.executable._kzip,
+ mnemonic = "FilterKZips",
+ arguments = [args],
+ )
+ return [DefaultInfo(files = depset([output]))]
+
+filter_kzip = rule(
+ attrs = {
+ "src": attr.label(
+ allow_single_file = True,
+ mandatory = True,
+ ),
+ "languages": attr.string_list(
+ doc = "List of languages to retain from the input kzip.",
+ mandatory = True,
+ ),
+ "_kzip": attr.label(
+ default = Label("//kythe/go/platform/tools/kzip"),
+ executable = True,
+ cfg = "host",
+ ),
+ },
+ outputs = {"kzip": "%{name}.kzip"},
+ implementation = _filter_kzip_impl,
+)
diff --git a/tools/build_rules/verifier_test/BUILD b/tools/build_rules/verifier_test/BUILD
index bdefdb25c..33b5fba51 100644
--- a/tools/build_rules/verifier_test/BUILD
+++ b/tools/build_rules/verifier_test/BUILD
@@ -3,7 +3,10 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
package(default_visibility = ["//visibility:public"])
-exports_files(["verifier_test.sh.in"])
+exports_files([
+ "verifier_test.sh.in",
+ "indexer.sh.in",
+])
py_binary(
name = "unbundle",
@@ -15,21 +18,31 @@ py_binary(
bzl_library(
name = "cc_indexer_test_bzl",
srcs = ["cc_indexer_test.bzl"],
+ deps = [
+ ":verifier_test_bzl",
+ "@bazel_skylib//lib:paths",
+ "@bazel_skylib//lib:shell",
+ ],
)
bzl_library(
name = "java_verifier_test_bzl",
srcs = ["java_verifier_test.bzl"],
+ deps = [":verifier_test_bzl"],
)
bzl_library(
name = "verifier_test_bzl",
srcs = ["verifier_test.bzl"],
+ deps = [
+ "@bazel_skylib//lib:shell",
+ ],
)
bzl_library(
name = "jvm_verifier_test_bzl",
srcs = ["jvm_verifier_test.bzl"],
+ deps = [":verifier_test_bzl"],
)
bzl_library(
@@ -40,4 +53,8 @@ bzl_library(
bzl_library(
name = "rust_indexer_test_bzl",
srcs = ["rust_indexer_test.bzl"],
+ deps = [
+ ":verifier_test_bzl",
+ "@bazel_skylib//lib:paths",
+ ],
)
diff --git a/tools/build_rules/verifier_test/cc_indexer_test.bzl b/tools/build_rules/verifier_test/cc_indexer_test.bzl
index b4f84b7f9..e377d2d17 100644
--- a/tools/build_rules/verifier_test/cc_indexer_test.bzl
+++ b/tools/build_rules/verifier_test/cc_indexer_test.bzl
@@ -19,11 +19,12 @@ load(
"@bazel_tools//tools/build_defs/cc:action_names.bzl",
"CPP_COMPILE_ACTION_NAME",
)
-load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
+load("//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", "use_cpp_toolchain")
load("@bazel_skylib//lib:paths.bzl", "paths")
+load("@bazel_skylib//lib:shell.bzl", "shell")
load(
":verifier_test.bzl",
- "KytheEntries",
+ "KytheEntryProducerInfo",
"KytheVerifierSources",
"extract",
"verifier_test",
@@ -57,12 +58,19 @@ _VERIFIER_FLAGS = {
"ignore_dups": False,
}
+_INDEXER_LOGGING_ENV = {
+ "GLOG_vmodule": "IndexerASTHooks=2,KytheGraphObserver=2,marked_source=2",
+ "GLOG_logtostderr": "1",
+}
+
_INDEXER_FLAGS = {
"experimental_alias_template_instantiations": False,
"experimental_drop_cpp_fwd_decl_docs": False,
"experimental_drop_instantiation_independent_data": False,
"experimental_drop_objc_fwd_class_docs": False,
+ "experimental_guess_proto_semantics": False,
"experimental_record_dataflow_edges": False,
+ "experimental_use_abs_nodes": True,
"experimental_usr_byte_size": 0,
"template_instance_exclude_path_pattern": "",
"fail_on_unimplemented_builtin": True,
@@ -172,14 +180,6 @@ def _split_flags(kwargs):
fail("Unrecognized verifier flags: %s" % (kwargs.keys(),))
return flags
-def _transitive_entries(deps):
- files, compressed = [], []
- for dep in deps:
- if KytheEntries in dep:
- files += dep[KytheEntries].files
- compressed += dep[KytheEntries].compressed
- return KytheEntries(compressed = depset(transitive = compressed), files = depset(transitive = files))
-
def _fix_path_for_generated_file(path):
virtual_imports = "/_virtual_imports/"
if virtual_imports in path:
@@ -238,12 +238,12 @@ _cc_kythe_proto_library_aspect = aspect(
"_protoc": attr.label(
default = Label("@com_google_protobuf//:protoc"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_plugin": attr.label(
default = Label("//kythe/cxx/tools:proto_metadata_plugin"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_runtime": attr.label(
default = Label("@com_google_protobuf//:protobuf"),
@@ -258,13 +258,12 @@ _cc_kythe_proto_library_aspect = aspect(
"_grep_includes": attr.label(
allow_single_file = True,
executable = True,
- cfg = "host",
+ cfg = "exec",
default = Label("//tools/cpp:grep-includes"),
),
},
fragments = ["cpp"],
- incompatible_use_toolchain_transition = True,
- toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
+ toolchains = use_cpp_toolchain(),
implementation = _cc_kythe_proto_library_aspect_impl,
)
@@ -330,7 +329,6 @@ def _cc_extract_kzip_impl(ctx):
DefaultInfo(files = outputs),
CxxCompilationUnits(files = outputs),
KytheVerifierSources(files = depset(ctx.files.srcs)),
- _transitive_entries(ctx.attr.deps),
]
cc_extract_kzip = rule(
@@ -366,7 +364,7 @@ cc_extract_kzip = rule(
"deps": attr.label_list(
doc = """Files which are required by the extracted sources.
- Additionally, targets providing KytheEntries or CxxCompilationUnits
+ Additionally, targets providing CxxCompilationUnits
may be used for dependencies which are required for an eventual
Kythe index, but should not be extracted here.
""",
@@ -378,7 +376,6 @@ cc_extract_kzip = rule(
],
providers = [
[CcInfo],
- [KytheEntries],
[CxxCompilationUnits],
],
),
@@ -445,7 +442,7 @@ cc_extract_bundle = rule(
"extractor": attr.label(
default = Label("//kythe/cxx/extractor:cxx_extractor"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"opts": attr.string_list(
doc = "Additional arguments to pass to the extractor.",
@@ -453,7 +450,7 @@ cc_extract_bundle = rule(
"unbundle": attr.label(
default = Label("//tools/build_rules/verifier_test:unbundle"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"vnames_config": attr.label(
default = Label("//kythe/cxx/indexer/cxx/testdata:test_vnames.json"),
@@ -507,10 +504,10 @@ _bazel_extract_kzip = rule(
"extractor": attr.label(
default = Label("//kythe/cxx/extractor:cxx_extractor_bazel"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"scripts": attr.label_list(
- cfg = "host",
+ cfg = "exec",
allow_files = True,
),
"vnames_config": attr.label(
@@ -523,7 +520,7 @@ _bazel_extract_kzip = rule(
implementation = _bazel_extract_kzip_impl,
)
-def _cc_index_source(ctx, src):
+def _cc_index_source(ctx, src, test_runners):
entries = ctx.actions.declare_file(
ctx.label.name + "/" + src.basename + ".entries",
)
@@ -542,9 +539,20 @@ def _cc_index_source(ctx, src):
"-c",
] + [ctx.expand_location(o) for o in ctx.attr.copts],
)
+ test_runners.append(_make_test_runner(
+ ctx,
+ src,
+ _INDEXER_LOGGING_ENV,
+ arguments = [ctx.expand_location(o) for o in ctx.attr.opts] + [
+ "-i",
+ src.short_path,
+ "--",
+ "-c",
+ ] + [ctx.expand_location(o) for o in ctx.attr.copts],
+ ))
return entries
-def _cc_index_compilation(ctx, compilation):
+def _cc_index_compilation(ctx, compilation, test_runners):
if ctx.attr.copts:
print("Ignoring compiler options:", ctx.attr.copts)
entries = ctx.actions.declare_file(
@@ -562,53 +570,87 @@ def _cc_index_compilation(ctx, compilation):
compilation.path,
],
)
+ test_runners.append(_make_test_runner(
+ ctx,
+ compilation,
+ _INDEXER_LOGGING_ENV,
+ arguments = [ctx.expand_location(o) for o in ctx.attr.opts] + [
+ compilation.short_path,
+ ],
+ ))
return entries
-def _cc_index_single_file(ctx, input):
+def _cc_index_single_file(ctx, input, test_runners):
if input.extension == "kzip":
- return _cc_index_compilation(ctx, input)
+ return _cc_index_compilation(ctx, input, test_runners)
elif input.extension in ("c", "cc", "m"):
- return _cc_index_source(ctx, input)
+ return _cc_index_source(ctx, input, test_runners)
fail("Cannot index input file: %s" % (input,))
+def _make_test_runner(ctx, source, env, arguments):
+ output = ctx.actions.declare_file(ctx.label.name + source.basename.replace(".", "_") + "_test_runner")
+ ctx.actions.expand_template(
+ output = output,
+ is_executable = True,
+ template = ctx.file._test_template,
+ substitutions = {
+ "@INDEXER@": shell.quote(ctx.executable.test_indexer.short_path),
+ "@ENV@": "\n".join([
+ shell.quote("{key}={value}".format(key = key, value = value))
+ for key, value in env.items()
+ ]),
+ "@ARGS@": "\n".join([
+ shell.quote(a)
+ for a in arguments
+ ]),
+ },
+ )
+ return output
+
def _cc_index_impl(ctx):
+ test_runners = []
intermediates = [
- _cc_index_single_file(ctx, src)
+ _cc_index_single_file(ctx, src, test_runners)
for src in ctx.files.srcs
if src.extension in ("m", "c", "cc", "kzip")
]
- intermediates += [
- _cc_index_compilation(ctx, kzip)
+ additional_kzips = [
+ kzip
for dep in ctx.attr.deps
if CxxCompilationUnits in dep
for kzip in dep[CxxCompilationUnits].files
if kzip not in ctx.files.deps
]
- entries = depset(
- intermediates,
- transitive = [
- dep[KytheEntries].files
- for dep in ctx.attr.deps
- if KytheEntries in dep
- ],
- )
+ intermediates += [
+ _cc_index_compilation(ctx, kzip, test_runners)
+ for kzip in additional_kzips
+ ]
ctx.actions.run_shell(
outputs = [ctx.outputs.entries],
- inputs = entries,
+ inputs = intermediates,
command = '("${@:1:${#@}-1}" || rm -f "${@:${#@}}") | gzip -c > "${@:${#@}}"',
mnemonic = "CompressEntries",
- arguments = ["cat"] + [i.path for i in entries.to_list()] + [ctx.outputs.entries.path],
+ arguments = ["cat"] + [i.path for i in intermediates] + [ctx.outputs.entries.path],
)
sources = [depset([src for src in ctx.files.srcs if src.extension != "kzip"])]
for dep in ctx.attr.srcs:
if KytheVerifierSources in dep:
sources.append(dep[KytheVerifierSources].files)
+
return [
KytheVerifierSources(files = depset(transitive = sources)),
- KytheEntries(compressed = depset([ctx.outputs.entries]), files = entries),
+ KytheEntryProducerInfo(
+ executables = test_runners,
+ runfiles = ctx.runfiles(
+ files = (test_runners +
+ ctx.files.deps +
+ ctx.files.srcs +
+ additional_kzips),
+ ).merge(ctx.attr.test_indexer[DefaultInfo].default_runfiles),
+ ),
]
# TODO(shahms): Support cc_library deps, along with cc toolchain support.
@@ -631,24 +673,30 @@ cc_index = rule(
"copts": attr.string_list(
doc = "Options to pass to the compiler while indexing.",
),
- "indexer": attr.label(
- default = Label("//kythe/cxx/indexer/cxx:indexer"),
- executable = True,
- cfg = "host",
- ),
"opts": attr.string_list(
doc = "Options to pass to the indexer.",
),
"deps": attr.label_list(
- doc = "Files required to index srcs or entries to include in the index.",
- # .meta files, .h files, .entries{,.gz}, KytheEntries
+ doc = "Files required to index srcs.",
+ # .meta files, .h files
allow_files = [
".h",
- ".entries",
- ".entries.gz",
".meta", # Cross language metadata files.
],
- providers = [KytheEntries],
+ ),
+ "indexer": attr.label(
+ default = Label("//kythe/cxx/indexer/cxx:indexer"),
+ executable = True,
+ cfg = "exec",
+ ),
+ "test_indexer": attr.label(
+ default = Label("//kythe/cxx/indexer/cxx:indexer"),
+ executable = True,
+ cfg = "target",
+ ),
+ "_test_template": attr.label(
+ default = Label("//tools/build_rules/verifier_test:indexer.sh.in"),
+ allow_single_file = True,
),
},
doc = """Produces a Kythe index from the C++ source files.
@@ -676,6 +724,7 @@ def _indexer_test(
indexer = None,
**kwargs):
flags = _split_flags(kwargs)
+ goals = srcs
if bundled:
if len(srcs) != 1:
fail("Bundled indexer tests require exactly one src!")
@@ -687,23 +736,35 @@ def _indexer_test(
restricted_to = restricted_to,
tags = tags,
)
+
+ # Verifier sources come from file nodes.
srcs = [":" + name + "_kzip"]
+ goals = []
+ indexer_args = {}
+ if indexer != None:
+ # Obnoxiously, we have to duplicate these attributes so that
+ # they both have the proper configuration.
+ indexer_args = {
+ "indexer": indexer,
+ "test_indexer": indexer,
+ }
+
cc_index(
name = name + "_entries",
testonly = True,
srcs = srcs,
copts = copts if not bundled else [],
- indexer = indexer,
opts = (["-claim_unknown=false"] if bundled else []) + flags.indexer,
restricted_to = restricted_to,
tags = tags,
deps = deps,
+ **indexer_args
)
verifier_test(
name = name,
size = size,
- # TODO(shahms): Use sources directly?
- srcs = [":" + name + "_entries"],
+ srcs = goals,
+ deps = [":" + name + "_entries"],
expect_success = not expect_fail_verify,
opts = flags.verifier,
restricted_to = restricted_to,
@@ -723,8 +784,8 @@ def cc_indexer_test(
std = "c++11",
bundled = False,
expect_fail_verify = False,
- indexer = "//kythe/cxx/indexer/cxx:indexer",
copts = [],
+ indexer = None,
**kwargs):
"""C++ indexer test rule.
@@ -775,7 +836,6 @@ def objc_indexer_test(
restricted_to = ["//buildenv:all"],
bundled = False,
expect_fail_verify = False,
- indexer = "//kythe/cxx/indexer/cxx:indexer",
**kwargs):
"""Objective C indexer test rule.
@@ -813,7 +873,6 @@ def objc_indexer_test(
restricted_to = restricted_to,
bundled = bundled,
expect_fail_verify = expect_fail_verify,
- indexer = indexer,
**kwargs
)
@@ -847,7 +906,8 @@ def objc_bazel_extractor_test(name, src, data, size = "small", tags = [], restri
return verifier_test(
name = name,
size = size,
- srcs = [":" + name + "_entries"],
+ srcs = [src],
+ deps = [":" + name + "_entries"],
opts = ["--ignore_dups"],
restricted_to = restricted_to,
tags = tags,
@@ -876,7 +936,8 @@ def cc_bazel_extractor_test(name, src, data, size = "small", tags = []):
return verifier_test(
name = name,
size = size,
- srcs = [":" + name + "_entries"],
+ srcs = [src],
+ deps = [":" + name + "_entries"],
opts = ["--ignore_dups"],
tags = tags,
)
@@ -913,9 +974,9 @@ def cc_extractor_test(
return verifier_test(
name = name,
size = size,
- srcs = [":" + name + "_entries"],
+ srcs = srcs,
opts = ["--ignore_dups"],
restricted_to = restricted_to,
tags = tags,
- deps = deps,
+ deps = deps + [":" + name + "_entries"],
)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/cc_wrapper.sh b/tools/build_rules/verifier_test/indexer.sh.in
index 42a751dcc..629b387bd 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/cc_wrapper.sh
+++ b/tools/build_rules/verifier_test/indexer.sh.in
@@ -1,12 +1,12 @@
-#!/bin/bash
+#!/bin/bash -e
#
-# Copyright 2015 The Bazel Authors. All rights reserved.
+# Copyright 2022 The Kythe Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
-# http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,12 +14,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# Ship the environment to the C++ action
-#
-set -eu
-
-# Set-up the environment
-
-
-# Call the C++ compiler
-/usr/local/bin/clang "$@"
+set -euo pipefail
+ENV=(@ENV@)
+ARGS=(
+ @INDEXER@
+ @ARGS@
+)
+export "${ENV[@]}"
+exec "${ARGS[@]}"
diff --git a/tools/build_rules/verifier_test/java_verifier_test.bzl b/tools/build_rules/verifier_test/java_verifier_test.bzl
index 0b10780e4..4008ba1d9 100644
--- a/tools/build_rules/verifier_test/java_verifier_test.bzl
+++ b/tools/build_rules/verifier_test/java_verifier_test.bzl
@@ -111,7 +111,7 @@ java_extract_kzip = rule(
"extractor": attr.label(
default = Label("@io_kythe//kythe/java/com/google/devtools/kythe/extractors/java/standalone:javac_extractor"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"opts": attr.string_list(),
"vnames_config": attr.label(
@@ -284,12 +284,12 @@ _generate_java_proto = rule(
"_protoc": attr.label(
default = Label("@com_google_protobuf//:protoc"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_singlejar": attr.label(
default = Label("@bazel_tools//tools/jdk:singlejar"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
},
implementation = _generate_java_proto_impl,
@@ -375,8 +375,8 @@ def java_proto_verifier_test(
name = name,
size = size,
srcs = [entries, proto_entries],
+ deps = [entries, proto_entries],
opts = verifier_opts,
tags = tags,
visibility = visibility,
- deps = [entries],
)
diff --git a/tools/build_rules/verifier_test/jvm_verifier_test.bzl b/tools/build_rules/verifier_test/jvm_verifier_test.bzl
index 6dcc2a534..deaa3522b 100644
--- a/tools/build_rules/verifier_test/jvm_verifier_test.bzl
+++ b/tools/build_rules/verifier_test/jvm_verifier_test.bzl
@@ -47,7 +47,7 @@ jvm_extract_kzip = rule(
"extractor": attr.label(
default = Label("//kythe/java/com/google/devtools/kythe/extractors/jvm:jar_extractor"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"opts": attr.string_list(),
"vnames_config": attr.label(
diff --git a/tools/build_rules/verifier_test/kzip_archive.bzl b/tools/build_rules/verifier_test/kzip_archive.bzl
index a0850d094..e952ceff6 100644
--- a/tools/build_rules/verifier_test/kzip_archive.bzl
+++ b/tools/build_rules/verifier_test/kzip_archive.bzl
@@ -119,7 +119,7 @@ kzip_archive = rule(
default = Label("//kythe/go/platform/tools/kzip"),
allow_single_file = True,
executable = True,
- cfg = "host",
+ cfg = "exec",
),
},
implementation = _kzip_archive,
diff --git a/tools/build_rules/verifier_test/rust_indexer_test.bzl b/tools/build_rules/verifier_test/rust_indexer_test.bzl
index 517ac9e4e..ae2b21f85 100644
--- a/tools/build_rules/verifier_test/rust_indexer_test.bzl
+++ b/tools/build_rules/verifier_test/rust_indexer_test.bzl
@@ -20,7 +20,7 @@ through the verifier
"""
load("@bazel_skylib//lib:paths.bzl", "paths")
-load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
+load("//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", "use_cpp_toolchain")
load(
"//tools/build_rules/verifier_test:verifier_test.bzl",
"KytheEntries",
@@ -41,22 +41,40 @@ def _rust_extract_impl(ctx):
# Rust toolchain
rust_toolchain = ctx.toolchains["@rules_rust//rust:toolchain"]
- rustc_lib = rust_toolchain.rustc_lib.files.to_list()
- rust_lib = rust_toolchain.rust_lib.files.to_list()
+ rustc_lib = rust_toolchain.rustc_lib.to_list()
+ rust_std = rust_toolchain.rust_std.to_list()
+
+ # Copy out_dir_files to out_dir
+ all_out_dir_files = []
+ for f in ctx.files.out_dir_files:
+ out = ctx.actions.declare_file("out_dir/%s" % f.basename)
+ all_out_dir_files.append(out)
+ ctx.actions.run_shell(
+ outputs = [out],
+ inputs = depset([f]),
+ arguments = [f.path, out.path],
+ command = "cp $1 $2",
+ )
# Generate extra_action file to be used by the extractor
extra_action_file = ctx.actions.declare_file(ctx.label.name + ".xa")
xa_maker = ctx.executable._extra_action
+ args = [
+ "--src_files=%s" % ",".join([f.path for f in ctx.files.srcs]),
+ "--output=%s" % extra_action_file.path,
+ "--owner=%s" % ctx.label.name,
+ "--crate_name=%s" % ctx.attr.crate_name,
+ "--sysroot=%s" % paths.dirname(rust_std[0].path),
+ "--linker=%s" % linker_path,
+ ]
+
+ # If there were out_dir_files, set --out_dir_env
+ if len(all_out_dir_files) != 0:
+ args.append("--out_dir_env=${pwd}/%s" % paths.dirname(all_out_dir_files[0].path))
+
ctx.actions.run(
executable = xa_maker,
- arguments = [
- "--src_files=%s" % ",".join([f.path for f in ctx.files.srcs]),
- "--output=%s" % extra_action_file.path,
- "--owner=%s" % ctx.label.name,
- "--crate_name=%s" % ctx.attr.crate_name,
- "--sysroot=%s" % paths.dirname(rust_lib[0].path),
- "--linker=%s" % linker_path,
- ],
+ arguments = args,
outputs = [extra_action_file],
)
@@ -70,13 +88,14 @@ def _rust_extract_impl(ctx):
"--output=%s" % output.path,
"--vnames_config=%s" % ctx.file._vnames_config_file.path,
],
- inputs = [extra_action_file, ctx.file._vnames_config_file] + rustc_lib + rust_lib + ctx.files.srcs,
+ inputs = [extra_action_file, ctx.file._vnames_config_file] + rustc_lib + rust_std + ctx.files.srcs + all_out_dir_files,
outputs = [output],
env = {
"KYTHE_CORPUS": "test_corpus",
},
)
+ # buildifier: disable=rule-impl-return
return struct(kzip = output)
# Generate a kzip with the compilations captured from a single Go library or
@@ -93,6 +112,10 @@ rust_extract = rule(
mandatory = True,
allow_files = [".rs"],
),
+ "out_dir_files": attr.label_list(
+ mandatory = True,
+ allow_files = [".rs"],
+ ),
"crate_name": attr.string(
default = "test_crate",
),
@@ -118,11 +141,9 @@ rust_extract = rule(
},
outputs = {"kzip": "%{name}.kzip"},
fragments = ["cpp"],
- toolchains = [
+ toolchains = use_cpp_toolchain() + [
"@rules_rust//rust:toolchain",
- "@bazel_tools//tools/cpp:toolchain_type",
],
- incompatible_use_toolchain_transition = True,
)
def _rust_entries_impl(ctx):
@@ -184,15 +205,14 @@ rust_entries = rule(
def _rust_indexer(
name,
srcs,
- data = None,
+ out_dir_files = [],
has_marked_source = False,
- emit_anchor_scopes = False,
- allow_duplicates = False,
- metadata_suffix = ""):
+ emit_anchor_scopes = False):
kzip = name + "_units"
rust_extract(
name = kzip,
srcs = srcs,
+ out_dir_files = out_dir_files,
)
entries = name + "_entries"
rust_entries(
@@ -203,19 +223,37 @@ def _rust_indexer(
)
return entries
+# buildifier: disable=function-docstring-return
def rust_indexer_test(
name,
srcs,
+ out_dir_files = [],
size = None,
tags = None,
log_entries = False,
has_marked_source = False,
emit_anchor_scopes = False,
allow_duplicates = False):
+ """
+ Runs a Rust verifier test on the source files
+
+ Args:
+ name: Rule name
+ srcs: A list of Rust source files to index and verify
+ out_dir_files: A list of files to include in $OUT_DIR
+ size: The size to pass to the verifier_test macro
+ tags: The tags to pass to the verifier_test macro
+ log_entries: Enable to make the verifier log all indexer entries
+ has_marked_source: Enable to make the indexer emit Marked Source (unused)
+ emit_anchor_scopes: Enable to make the indexer emit anchor scopes (unused)
+ allow_duplicates: Enable to make the verifier ignore duplicate entries
+ """
+
# Generate entries using the Rust indexer
entries = _rust_indexer(
name = name,
srcs = srcs,
+ out_dir_files = out_dir_files,
has_marked_source = has_marked_source,
emit_anchor_scopes = emit_anchor_scopes,
)
diff --git a/tools/build_rules/verifier_test/verifier_test.bzl b/tools/build_rules/verifier_test/verifier_test.bzl
index 0dd6a59fc..22a6caab6 100644
--- a/tools/build_rules/verifier_test/verifier_test.bzl
+++ b/tools/build_rules/verifier_test/verifier_test.bzl
@@ -14,6 +14,8 @@
# limitations under the License.
"""Rules and macros related to Kythe verifier-based tests."""
+load("@bazel_skylib//lib:shell.bzl", "shell")
+
KytheVerifierSources = provider(
doc = "Input files which the verifier should inspect for assertions.",
fields = {
@@ -29,6 +31,14 @@ KytheEntries = provider(
},
)
+KytheEntryProducerInfo = provider(
+ doc = "Provider indicating an executable to be called which will produce Kythe entries on stdout.",
+ fields = {
+ "executables": "A list of File objects to run which should produce Kythe entries on stdout.",
+ "runfiles": "Required runfiles.",
+ },
+)
+
def _atomize_entries_impl(ctx):
zcat = ctx.executable._zcat
entrystream = ctx.executable._entrystream
@@ -99,22 +109,22 @@ atomize_entries = rule(
"_atomizer": attr.label(
default = Label("//kythe/go/test/tools/xrefs_atomizer"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_entrystream": attr.label(
default = Label("//kythe/go/platform/tools/entrystream"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_postprocessor": attr.label(
default = Label("//kythe/go/serving/tools/write_tables"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"_zcat": attr.label(
default = Label("//tools:zcatext"),
executable = True,
- cfg = "host",
+ cfg = "exec",
),
},
outputs = {
@@ -234,11 +244,11 @@ index_compilation = rule(
"indexer": attr.label(
mandatory = True,
executable = True,
- cfg = "host",
+ cfg = "exec",
),
"opts": attr.string_list(),
"tools": attr.label_list(
- cfg = "host",
+ cfg = "exec",
allow_files = True,
),
"deps": attr.label_list(
@@ -260,29 +270,29 @@ def _verifier_test_impl(ctx):
for src in ctx.attr.srcs:
if KytheVerifierSources in src:
sources.append(src[KytheVerifierSources].files)
- if KytheEntries in src:
- if src[KytheEntries].files:
- entries.append(src[KytheEntries].files)
- else:
- entries_gz.append(src[KytheEntries].compressed)
else:
sources.append(src.files)
+ indexers = []
+ runfiles = []
for dep in ctx.attr.deps:
- # TODO(shahms): Allow specifying .entries files directly.
- if dep[KytheEntries].files:
- entries.append(dep[KytheEntries].files)
- else:
- entries_gz.append(dep[KytheEntries].compressed)
+ if KytheEntryProducerInfo in dep:
+ indexers.extend(dep[KytheEntryProducerInfo].executables)
+ runfiles.append(dep[KytheEntryProducerInfo].runfiles)
+ if KytheEntries in dep:
+ if dep[KytheEntries].files:
+ entries.append(dep[KytheEntries].files)
+ else:
+ entries_gz.append(dep[KytheEntries].compressed)
# Flatten input lists
entries = depset(transitive = entries).to_list()
entries_gz = depset(transitive = entries_gz).to_list()
sources = depset(transitive = sources).to_list()
- if not (entries or entries_gz):
+ if not (entries or entries_gz or indexers):
fail("Missing required entry stream input (check your deps!)")
- args = ctx.attr.opts + [src.short_path for src in sources]
+ args = ctx.attr.opts + [shell.quote(src.short_path) for src in sources]
# If no dependency specifies KytheVerifierSources and
# we aren't provided explicit sources, assume `--use_file_nodes`.
@@ -294,45 +304,39 @@ def _verifier_test_impl(ctx):
is_executable = True,
substitutions = {
"@ARGS@": " ".join(args),
- "@ENTRIES@": " ".join([e.short_path for e in entries]),
- "@ENTRIES_GZ@": " ".join([e.short_path for e in entries_gz]),
+ "@INDEXERS@": "\n".join([shell.quote(i.short_path) for i in indexers]),
+ "@ENTRIES@": " ".join([shell.quote(e.short_path) for e in entries]),
+ "@ENTRIES_GZ@": " ".join([shell.quote(e.short_path) for e in entries_gz]),
# If failure is expected, invert the sense of the verifier return.
"@INVERT@": "!" if not ctx.attr.expect_success else "",
- "@VERIFIER@": ctx.executable._verifier.short_path,
+ "@VERIFIER@": shell.quote(ctx.executable._verifier.short_path),
"@WORKSPACE_NAME@": ctx.workspace_name,
},
)
- runfiles = ctx.runfiles(files = list(sources + entries + entries_gz) + [
- ctx.outputs.executable,
- ctx.executable._verifier,
- ], collect_data = True)
return [
- DefaultInfo(runfiles = runfiles),
+ DefaultInfo(
+ runfiles = ctx.runfiles(files = sources + entries + entries_gz + [
+ ctx.outputs.executable,
+ ctx.executable._verifier,
+ ]).merge_all(runfiles),
+ executable = ctx.outputs.executable,
+ ),
]
verifier_test = rule(
attrs = {
"srcs": attr.label_list(
+ doc = "Targets or files containing verifier goals.",
allow_files = True,
- providers = [
- [KytheVerifierSources],
- [
- KytheVerifierSources,
- KytheEntries,
- ],
- ],
+ providers = [KytheVerifierSources],
),
# Arguably, "expect_failure" is more natural, but that
# attribute is used by Skylark.
"expect_success": attr.bool(default = True),
"opts": attr.string_list(),
"deps": attr.label_list(
- # TODO(shahms): Allow directly specifying sources/deps.
- #allow_files = [
- # ".entries",
- # ".entries.gz",
- #],
- providers = [KytheEntries],
+ doc = "Targets which produce graph entries to verify.",
+ providers = [[KytheEntries], [KytheEntryProducerInfo]],
),
"_template": attr.label(
default = Label("//tools/build_rules/verifier_test:verifier_test.sh.in"),
diff --git a/tools/build_rules/verifier_test/verifier_test.sh.in b/tools/build_rules/verifier_test/verifier_test.sh.in
index 005bdbcf8..9df4d43f4 100644
--- a/tools/build_rules/verifier_test/verifier_test.sh.in
+++ b/tools/build_rules/verifier_test/verifier_test.sh.in
@@ -14,13 +14,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-set -o pipefail
-RUNFILES="${RUNFILES_DIR:-${TEST_SRCDIR:-${0}.runfiles}}"
-WORKSPACE="${TEST_WORKSPACE:-@WORKSPACE_NAME@}"
-cd "${RUNFILES}/${WORKSPACE}"
+set -euo pipefail
+export RUNFILES_DIR="${RUNFILES_DIR:-${TEST_SRCDIR:-${0}.runfiles}}"
+export WORKSPACE_NAME="${TEST_WORKSPACE:-@WORKSPACE_NAME@}"
+cd "${RUNFILES_DIR}/${WORKSPACE_NAME}"
+
ENTRIES=(@ENTRIES@)
ENTRIES_GZ=(@ENTRIES_GZ@)
(
- if [[ $ENTRIES ]]; then cat "${ENTRIES[@]}"; fi
- if [[ $ENTRIES_GZ ]]; then gunzip -c "${ENTRIES_GZ[@]}"; fi
-) | if @INVERT@ @VERIFIER@ @ARGS@ "$@"; then exit 0; else exit 1; fi
+ @INDEXERS@
+ if (( ${#ENTRIES[@]} )); then cat "${ENTRIES[@]}"; fi
+ if (( ${#ENTRIES_GZ[@]} )); then gunzip -c "${ENTRIES_GZ[@]}"; fi
+) | (
+ if @INVERT@ @VERIFIER@ @ARGS@ "$@"; then exit 0; else exit 1; fi
+)
diff --git a/tools/clang_tidy/clang_tidy.sh b/tools/clang_tidy/clang_tidy.sh
index d4aa39223..d42db95ba 100755
--- a/tools/clang_tidy/clang_tidy.sh
+++ b/tools/clang_tidy/clang_tidy.sh
@@ -6,6 +6,7 @@ if [ -z "${CLANG_TIDY:=$(command -v clang-tidy)}" ]; then
exit 1
fi
-"$(dirname "${BASH_SOURCE[0]}")/../cpp/generate_compilation_database.sh"
+(cd "$(dirname "${BASH_SOURCE[0]}")"; bazel run //:refresh_compile_commands)
-"$CLANG_TIDY" -p "$(bazel info execution_root)" "$@"
+
+"$CLANG_TIDY" "$@"
diff --git a/tools/cpp/generate_compilation_database.sh b/tools/cpp/generate_compilation_database.sh
deleted file mode 100755
index 6ad9d3cdd..000000000
--- a/tools/cpp/generate_compilation_database.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-# Generates a compile_commands.json file at $(bazel info execution_root) for
-# the given file path.
-
-set -e
-
-FILENAME=${1:?Missing required source path}
-bazel build \
- --experimental_action_listener=//kythe/cxx/tools/generate_compile_commands:extract_json \
- --noshow_progress \
- --noshow_loading_progress \
- --output_groups=compilation_outputs \
- --compile_one_dependency \
- "$FILENAME" > /dev/null
-
-BAZEL_ROOT="$(bazel info execution_root)"
-pushd "$BAZEL_ROOT" > /dev/null
-find . -name '*.compile_command.json' -print0 | while read -r -d '' fname; do
- sed -e "s|@BAZEL_ROOT@|$BAZEL_ROOT|g" < "$fname" >> compile_commands.json
- echo "" >> compile_commands.json
-done
-# Decompose, insert and keep the most recent entry for a given file, then
-# recombine.
-sed 's/\(^[[]\)\|\([],]$\)//;/^$/d;' < compile_commands.json \
- | tac | sort -u -t, -k1,1 \
- | sed '1s/^./[\0/;s/}$/},/;$s/,$/]/' > compile_commands.json.tmp
-mv compile_commands.json{.tmp,}
-popd > /dev/null
diff --git a/tools/cpp/toolchain_utils.bzl b/tools/cpp/toolchain_utils.bzl
new file mode 100644
index 000000000..608ccb6cc
--- /dev/null
+++ b/tools/cpp/toolchain_utils.bzl
@@ -0,0 +1,8 @@
+"""Wrapper around @bazel_tools//tools/cpp:toolchain_utils.bzl to simplify imports."""
+
+load("@bazel_tools//tools/cpp:toolchain_utils.bzl", _find_cpp_toolchain = "find_cpp_toolchain")
+
+find_cpp_toolchain = _find_cpp_toolchain
+
+def use_cpp_toolchain():
+ return ["@bazel_tools//tools/cpp:toolchain_type"]
diff --git a/tools/platforms/BUILD b/tools/platforms/BUILD
index 1c7af2cba..8625e320e 100644
--- a/tools/platforms/BUILD
+++ b/tools/platforms/BUILD
@@ -2,5 +2,5 @@ package(default_visibility = ["//visibility:public"])
platform(
name = "rbe",
- parents = ["@rbe_default//config:platform"],
+ parents = ["//tools/platforms/configs/rbe_default/config:platform"],
)
diff --git a/tools/platforms/Dockerfile b/tools/platforms/Dockerfile
index 2d3426fdb..6a2fd3c3f 100644
--- a/tools/platforms/Dockerfile
+++ b/tools/platforms/Dockerfile
@@ -15,10 +15,19 @@
# docker build -t gcr.io/kythe-repo/kythe-builder .
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu18-04@sha256:48b67b41118dbcdfc265e7335f454fbefa62681ab8d47200971fc7a52fb32054
-RUN apt-get update && \
+RUN DEBIAN_FRONTEND=noninteractive \
+ apt-get update -y && \
apt-get install -y \
# Kythe C++ dependencies
uuid-dev flex bison make \
# Kythe misc dependencies
asciidoc ruby-dev source-highlight graphviz && \
apt-get clean
+
+# bazel-toolchains 5+ pulls the JDK from the image's JAVA_HOME
+# which defaults to JDK8 and breaks.
+# See https://github.com/bazelbuild/bazel-toolchains/issues/961
+ENV JAVA_HOME=/usr/lib/jvm/11.29.3-ca-jdk11.0.2/reduced
+
+# Ensure JAVA_HOME exists.
+RUN [[ -d "$JAVA_HOME" ]]
diff --git a/tools/platforms/configs/.latest.bazelrc b/tools/platforms/configs/.latest.bazelrc
deleted file mode 100644
index ec296a93a..000000000
--- a/tools/platforms/configs/.latest.bazelrc
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This .bazelrc file is generated by rbe_autoconfig
-# when the output_base attr is used.
-# It contains some of the flags required for the provided
-# toolchain with Remote Build Execution.
-# Specifically, it includes all toolchain/platform flags
-# This file is used for testing purposes.
-
-build:remote --host_javabase=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/java:jdk
-build:remote --javabase=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/java:jdk
-build:remote --crosstool_top=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc:toolchain
-build:remote --extra_toolchains=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config:cc-toolchain
-build:remote --extra_execution_platforms=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config:platform
-build:remote --host_platform=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config:platform
-build:remote --platforms=//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config:platform
-
-# Import the default bazelrc file in bazel-toolchains repo.
-# This will only work for tests executed from bazel-toolchains
-# repo.
-try-import %workspace%/bazelrc/.bazelrc.notoolchain
diff --git a/tools/platforms/configs/BUILD b/tools/platforms/configs/BUILD
index ba1f2186f..95abea43f 100644
--- a/tools/platforms/configs/BUILD
+++ b/tools/platforms/configs/BUILD
@@ -1,15 +1,16 @@
-# Copyright 2020 The Kythe Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-exports_files(glob(["*.bzl"]))
+# Targets related to platform configs.
+sh_binary(
+ name = "rebuild",
+ srcs = ["rebuild.sh"],
+ data = [
+ "@bazel_toolchains_rbe_gen_config_linux_amd64//file",
+ ],
+ env = {
+ "RBE_GEN_CONFIG": "$(execpath @bazel_toolchains_rbe_gen_config_linux_amd64//file)",
+ "OUTPUT_CONFIG_PATH": "tools/platforms/configs/rbe_default",
+ },
+ tags = [
+ "local",
+ "manual",
+ ],
+)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/BUILD b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/BUILD
deleted file mode 100755
index 8411d4907..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/BUILD
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This becomes the BUILD file for @local_config_cc// under non-BSD unixes.
-
-package(default_visibility = ["//visibility:public"])
-
-load(":cc_toolchain_config.bzl", "cc_toolchain_config")
-load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
-load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
-
-licenses(["notice"]) # Apache 2.0
-
-cc_library(
- name = "malloc",
-)
-
-filegroup(
- name = "empty",
- srcs = [],
-)
-
-filegroup(
- name = "cc_wrapper",
- srcs = ["cc_wrapper.sh"],
-)
-
-filegroup(
- name = "compiler_deps",
- srcs = glob(["extra_tools/**"], allow_empty = True) + [":builtin_include_directory_paths"],
-)
-
-# This is the entry point for --crosstool_top. Toolchains are found
-# by lopping off the name of --crosstool_top and searching for
-# the "${CPU}" entry in the toolchains attribute.
-cc_toolchain_suite(
- name = "toolchain",
- toolchains = {
- "k8|clang": ":cc-compiler-k8",
- "k8": ":cc-compiler-k8",
- "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
- "armeabi-v7a": ":cc-compiler-armeabi-v7a",
- },
-)
-
-cc_toolchain(
- name = "cc-compiler-k8",
- toolchain_identifier = "linux_gnu_x86",
- toolchain_config = ":linux_gnu_x86",
- all_files = ":compiler_deps",
- ar_files = ":compiler_deps",
- as_files = ":compiler_deps",
- compiler_files = ":compiler_deps",
- dwp_files = ":empty",
- linker_files = ":compiler_deps",
- objcopy_files = ":empty",
- strip_files = ":empty",
- supports_param_files = 1,
- module_map = ":module.modulemap",
-)
-
-cc_toolchain_config(
- name = "linux_gnu_x86",
- cpu = "k8",
- compiler = "clang",
- toolchain_identifier = "linux_gnu_x86",
- host_system_name = "i686-unknown-linux-gnu",
- target_system_name = "x86_64-unknown-linux-gnu",
- target_libc = "glibc_2.19",
- abi_version = "clang",
- abi_libc_version = "glibc_2.19",
- cxx_builtin_include_directories = ["/usr/local/include",
- "/usr/local/lib/clang/12.0.0/include",
- "/usr/include/x86_64-linux-gnu",
- "/usr/include",
- "/usr/local/lib/clang/12.0.0/share",
- "/usr/include/c++/7.5.0",
- "/usr/include/x86_64-linux-gnu/c++/7.5.0",
- "/usr/include/c++/7.5.0/backward"],
- tool_paths = {"ar": "/usr/bin/ar",
- "ld": "/usr/bin/ld",
- "llvm-cov": "/usr/local/bin/llvm-cov",
- "cpp": "/usr/bin/cpp",
- "gcc": "/usr/local/bin/clang",
- "dwp": "/usr/bin/dwp",
- "gcov": "/dev/null",
- "nm": "/usr/bin/nm",
- "objcopy": "/usr/bin/objcopy",
- "objdump": "/usr/bin/objdump",
- "strip": "/usr/bin/strip"},
- compile_flags = ["-U_FORTIFY_SOURCE",
- "-fstack-protector",
- "-Wall",
- "-Wthread-safety",
- "-Wself-assign",
- "-fcolor-diagnostics",
- "-fno-omit-frame-pointer"],
- opt_compile_flags = ["-g0",
- "-O2",
- "-D_FORTIFY_SOURCE=1",
- "-DNDEBUG",
- "-ffunction-sections",
- "-fdata-sections"],
- dbg_compile_flags = ["-g"],
- cxx_flags = ["-std=c++0x"],
- link_flags = ["-fuse-ld=/usr/bin/ld.gold",
- "-Wl,-no-as-needed",
- "-Wl,-z,relro,-z,now",
- "-B/usr/local/bin"],
- link_libs = ["-lstdc++",
- "-lm"],
- opt_link_flags = ["-Wl,--gc-sections"],
- unfiltered_compile_flags = ["-no-canonical-prefixes",
- "-Wno-builtin-macro-redefined",
- "-D__DATE__=\"redacted\"",
- "-D__TIMESTAMP__=\"redacted\"",
- "-D__TIME__=\"redacted\""],
- coverage_compile_flags = ["--coverage"],
- coverage_link_flags = ["--coverage"],
- supports_start_end_lib = True,
-)
-
-# Android tooling requires a default toolchain for the armeabi-v7a cpu.
-cc_toolchain(
- name = "cc-compiler-armeabi-v7a",
- toolchain_identifier = "stub_armeabi-v7a",
- toolchain_config = ":stub_armeabi-v7a",
- all_files = ":empty",
- ar_files = ":empty",
- as_files = ":empty",
- compiler_files = ":empty",
- dwp_files = ":empty",
- linker_files = ":empty",
- objcopy_files = ":empty",
- strip_files = ":empty",
- supports_param_files = 1,
-)
-
-armeabi_cc_toolchain_config(name = "stub_armeabi-v7a")
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/builtin_include_directory_paths b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/builtin_include_directory_paths
deleted file mode 100755
index a09dfbc08..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/builtin_include_directory_paths
+++ /dev/null
@@ -1,14 +0,0 @@
-This file is generated by cc_configure and contains builtin include directories
-that /usr/local/bin/clang reported. This file is a dependency of every compilation action and
-changes to it will be reflected in the action cache key. When some of these
-paths change, Bazel will make sure to rerun the action, even though none of
-declared action inputs or the action commandline changes.
-
-/usr/local/include
-/usr/local/lib/clang/12.0.0/include
-/usr/include/x86_64-linux-gnu
-/usr/include
-/usr/local/lib/clang/12.0.0/share
-/usr/include/c++/7.5.0
-/usr/include/x86_64-linux-gnu/c++/7.5.0
-/usr/include/c++/7.5.0/backward
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_toolchain_config.bzl b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_toolchain_config.bzl
deleted file mode 100755
index 5dbaa86ab..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_toolchain_config.bzl
+++ /dev/null
@@ -1,1272 +0,0 @@
-# Copyright 2019 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""A Starlark cc_toolchain configuration rule"""
-
-load(
- "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
- "action_config",
- "feature",
- "feature_set",
- "flag_group",
- "flag_set",
- "tool",
- "tool_path",
- "variable_with_value",
- "with_feature_set",
-)
-load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
-
-def layering_check_features(compiler):
- if compiler != "clang":
- return []
- return [
- feature(
- name = "use_module_maps",
- requires = [feature_set(features = ["module_maps"])],
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-fmodule-name=%{module_name}",
- "-fmodule-map-file=%{module_map_file}",
- ],
- ),
- ],
- ),
- ],
- ),
-
- # Tell blaze we support module maps in general, so they will be generated
- # for all c/c++ rules.
- # Note: not all C++ rules support module maps; thus, do not imply this
- # feature from other features - instead, require it.
- feature(name = "module_maps", enabled = True),
- feature(
- name = "layering_check",
- implies = ["use_module_maps"],
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(flags = [
- "-fmodules-strict-decluse",
- "-Wprivate-header",
- ]),
- flag_group(
- iterate_over = "dependent_module_map_files",
- flags = [
- "-fmodule-map-file=%{dependent_module_map_files}",
- ],
- ),
- ],
- ),
- ],
- ),
- ]
-
-all_compile_actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.clif_match,
- ACTION_NAMES.lto_backend,
-]
-
-all_cpp_compile_actions = [
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.clif_match,
-]
-
-preprocessor_compile_actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
-]
-
-codegen_compile_actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.lto_backend,
-]
-
-all_link_actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
-]
-
-lto_index_actions = [
- ACTION_NAMES.lto_index_for_executable,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
-]
-
-def _impl(ctx):
- tool_paths = [
- tool_path(name = name, path = path)
- for name, path in ctx.attr.tool_paths.items()
- ]
- action_configs = []
-
- llvm_cov_action = action_config(
- action_name = ACTION_NAMES.llvm_cov,
- tools = [
- tool(
- path = ctx.attr.tool_paths["llvm-cov"],
- ),
- ],
- )
-
- action_configs.append(llvm_cov_action)
-
- supports_pic_feature = feature(
- name = "supports_pic",
- enabled = True,
- )
- supports_start_end_lib_feature = feature(
- name = "supports_start_end_lib",
- enabled = True,
- )
-
- default_compile_flags_feature = feature(
- name = "default_compile_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.compile_flags,
- ),
- ] if ctx.attr.compile_flags else []),
- ),
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.dbg_compile_flags,
- ),
- ] if ctx.attr.dbg_compile_flags else []),
- with_features = [with_feature_set(features = ["dbg"])],
- ),
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.opt_compile_flags,
- ),
- ] if ctx.attr.opt_compile_flags else []),
- with_features = [with_feature_set(features = ["opt"])],
- ),
- flag_set(
- actions = all_cpp_compile_actions + [ACTION_NAMES.lto_backend],
- flag_groups = ([
- flag_group(
- flags = ctx.attr.cxx_flags,
- ),
- ] if ctx.attr.cxx_flags else []),
- ),
- ],
- )
-
- default_link_flags_feature = feature(
- name = "default_link_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.link_flags,
- ),
- ] if ctx.attr.link_flags else []),
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.opt_link_flags,
- ),
- ] if ctx.attr.opt_link_flags else []),
- with_features = [with_feature_set(features = ["opt"])],
- ),
- ],
- )
-
- dbg_feature = feature(name = "dbg")
-
- opt_feature = feature(name = "opt")
-
- sysroot_feature = feature(
- name = "sysroot",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.lto_backend,
- ACTION_NAMES.clif_match,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["--sysroot=%{sysroot}"],
- expand_if_available = "sysroot",
- ),
- ],
- ),
- ],
- )
-
- fdo_optimize_feature = feature(
- name = "fdo_optimize",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-use=%{fdo_profile_path}",
- "-fprofile-correction",
- ],
- expand_if_available = "fdo_profile_path",
- ),
- ],
- ),
- ],
- provides = ["profile"],
- )
-
- supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
-
- user_compile_flags_feature = feature(
- name = "user_compile_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_compile_actions,
- flag_groups = [
- flag_group(
- flags = ["%{user_compile_flags}"],
- iterate_over = "user_compile_flags",
- expand_if_available = "user_compile_flags",
- ),
- ],
- ),
- ],
- )
-
- unfiltered_compile_flags_feature = feature(
- name = "unfiltered_compile_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.unfiltered_compile_flags,
- ),
- ] if ctx.attr.unfiltered_compile_flags else []),
- ),
- ],
- )
-
- library_search_directories_feature = feature(
- name = "library_search_directories",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-L%{library_search_directories}"],
- iterate_over = "library_search_directories",
- expand_if_available = "library_search_directories",
- ),
- ],
- ),
- ],
- )
-
- static_libgcc_feature = feature(
- name = "static_libgcc",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.lto_index_for_executable,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ],
- flag_groups = [flag_group(flags = ["-static-libgcc"])],
- with_features = [
- with_feature_set(features = ["static_link_cpp_runtimes"]),
- ],
- ),
- ],
- )
-
- pic_feature = feature(
- name = "pic",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(flags = ["-fPIC"], expand_if_available = "pic"),
- ],
- ),
- ],
- )
-
- per_object_debug_info_feature = feature(
- name = "per_object_debug_info",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
- flag_groups = [
- flag_group(
- flags = ["-gsplit-dwarf"],
- expand_if_available = "per_object_debug_info_file",
- ),
- ],
- ),
- ],
- )
-
- preprocessor_defines_feature = feature(
- name = "preprocessor_defines",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
- ],
- flag_groups = [
- flag_group(
- flags = ["-D%{preprocessor_defines}"],
- iterate_over = "preprocessor_defines",
- ),
- ],
- ),
- ],
- )
-
- cs_fdo_optimize_feature = feature(
- name = "cs_fdo_optimize",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.lto_backend],
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-use=%{fdo_profile_path}",
- "-Wno-profile-instr-unprofiled",
- "-Wno-profile-instr-out-of-date",
- "-fprofile-correction",
- ],
- expand_if_available = "fdo_profile_path",
- ),
- ],
- ),
- ],
- provides = ["csprofile"],
- )
-
- autofdo_feature = feature(
- name = "autofdo",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = [
- "-fauto-profile=%{fdo_profile_path}",
- "-fprofile-correction",
- ],
- expand_if_available = "fdo_profile_path",
- ),
- ],
- ),
- ],
- provides = ["profile"],
- )
-
- runtime_library_search_directories_feature = feature(
- name = "runtime_library_search_directories",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- iterate_over = "runtime_library_search_directories",
- flag_groups = [
- flag_group(
- flags = [
- "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}",
- ],
- expand_if_true = "is_cc_test",
- ),
- flag_group(
- flags = [
- "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
- ],
- expand_if_false = "is_cc_test",
- ),
- ],
- expand_if_available =
- "runtime_library_search_directories",
- ),
- ],
- with_features = [
- with_feature_set(features = ["static_link_cpp_runtimes"]),
- ],
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- iterate_over = "runtime_library_search_directories",
- flag_groups = [
- flag_group(
- flags = [
- "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
- ],
- ),
- ],
- expand_if_available =
- "runtime_library_search_directories",
- ),
- ],
- with_features = [
- with_feature_set(
- not_features = ["static_link_cpp_runtimes"],
- ),
- ],
- ),
- ],
- )
-
- fission_support_feature = feature(
- name = "fission_support",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-Wl,--gdb-index"],
- expand_if_available = "is_using_fission",
- ),
- ],
- ),
- ],
- )
-
- shared_flag_feature = feature(
- name = "shared_flag",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
- ],
- flag_groups = [flag_group(flags = ["-shared"])],
- ),
- ],
- )
-
- random_seed_feature = feature(
- name = "random_seed",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(
- flags = ["-frandom-seed=%{output_file}"],
- expand_if_available = "output_file",
- ),
- ],
- ),
- ],
- )
-
- includes_feature = feature(
- name = "includes",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ],
- flag_groups = [
- flag_group(
- flags = ["-include", "%{includes}"],
- iterate_over = "includes",
- expand_if_available = "includes",
- ),
- ],
- ),
- ],
- )
-
- fdo_instrument_feature = feature(
- name = "fdo_instrument",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-generate=%{fdo_instrument_path}",
- "-fno-data-sections",
- ],
- expand_if_available = "fdo_instrument_path",
- ),
- ],
- ),
- ],
- provides = ["profile"],
- )
-
- cs_fdo_instrument_feature = feature(
- name = "cs_fdo_instrument",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.lto_backend,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = [
- "-fcs-profile-generate=%{cs_fdo_instrument_path}",
- ],
- expand_if_available = "cs_fdo_instrument_path",
- ),
- ],
- ),
- ],
- provides = ["csprofile"],
- )
-
- include_paths_feature = feature(
- name = "include_paths",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ],
- flag_groups = [
- flag_group(
- flags = ["-iquote", "%{quote_include_paths}"],
- iterate_over = "quote_include_paths",
- ),
- flag_group(
- flags = ["-I%{include_paths}"],
- iterate_over = "include_paths",
- ),
- flag_group(
- flags = ["-isystem", "%{system_include_paths}"],
- iterate_over = "system_include_paths",
- ),
- ],
- ),
- ],
- )
-
- symbol_counts_feature = feature(
- name = "symbol_counts",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = [
- "-Wl,--print-symbol-counts=%{symbol_counts_output}",
- ],
- expand_if_available = "symbol_counts_output",
- ),
- ],
- ),
- ],
- )
-
- llvm_coverage_map_format_feature = feature(
- name = "llvm_coverage_map_format",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-instr-generate",
- "-fcoverage-mapping",
- ],
- ),
- ],
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions + [
- "objc-executable",
- "objc++-executable",
- ],
- flag_groups = [
- flag_group(flags = ["-fprofile-instr-generate"]),
- ],
- ),
- ],
- requires = [feature_set(features = ["coverage"])],
- provides = ["profile"],
- )
-
- strip_debug_symbols_feature = feature(
- name = "strip_debug_symbols",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-Wl,-S"],
- expand_if_available = "strip_debug_symbols",
- ),
- ],
- ),
- ],
- )
-
- build_interface_libraries_feature = feature(
- name = "build_interface_libraries",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "%{generate_interface_library}",
- "%{interface_library_builder_path}",
- "%{interface_library_input_path}",
- "%{interface_library_output_path}",
- ],
- expand_if_available = "generate_interface_library",
- ),
- ],
- with_features = [
- with_feature_set(
- features = ["supports_interface_shared_libraries"],
- ),
- ],
- ),
- ],
- )
-
- libraries_to_link_feature = feature(
- name = "libraries_to_link",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link",
- flag_groups = [
- flag_group(
- flags = ["-Wl,--start-lib"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- flag_group(
- flags = ["-Wl,-whole-archive"],
- expand_if_true =
- "libraries_to_link.is_whole_archive",
- ),
- flag_group(
- flags = ["%{libraries_to_link.object_files}"],
- iterate_over = "libraries_to_link.object_files",
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "interface_library",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "static_library",
- ),
- ),
- flag_group(
- flags = ["-l%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "dynamic_library",
- ),
- ),
- flag_group(
- flags = ["-l:%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "versioned_dynamic_library",
- ),
- ),
- flag_group(
- flags = ["-Wl,-no-whole-archive"],
- expand_if_true = "libraries_to_link.is_whole_archive",
- ),
- flag_group(
- flags = ["-Wl,--end-lib"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- ],
- expand_if_available = "libraries_to_link",
- ),
- flag_group(
- flags = ["-Wl,@%{thinlto_param_file}"],
- expand_if_true = "thinlto_param_file",
- ),
- ],
- ),
- ],
- )
-
- user_link_flags_feature = feature(
- name = "user_link_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["%{user_link_flags}"],
- iterate_over = "user_link_flags",
- expand_if_available = "user_link_flags",
- ),
- ] + ([flag_group(flags = ctx.attr.link_libs)] if ctx.attr.link_libs else []),
- ),
- ],
- )
-
- fdo_prefetch_hints_feature = feature(
- name = "fdo_prefetch_hints",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.lto_backend,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-mllvm",
- "-prefetch-hints-file=%{fdo_prefetch_hints_path}",
- ],
- expand_if_available = "fdo_prefetch_hints_path",
- ),
- ],
- ),
- ],
- )
-
- linkstamps_feature = feature(
- name = "linkstamps",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["%{linkstamp_paths}"],
- iterate_over = "linkstamp_paths",
- expand_if_available = "linkstamp_paths",
- ),
- ],
- ),
- ],
- )
-
- gcc_coverage_map_format_feature = feature(
- name = "gcc_coverage_map_format",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- "objc-executable",
- "objc++-executable",
- ],
- flag_groups = [
- flag_group(
- flags = ["-fprofile-arcs", "-ftest-coverage"],
- expand_if_available = "gcov_gcno_file",
- ),
- ],
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [flag_group(flags = ["--coverage"])],
- ),
- ],
- requires = [feature_set(features = ["coverage"])],
- provides = ["profile"],
- )
-
- archiver_flags_feature = feature(
- name = "archiver_flags",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(flags = ["rcsD"]),
- flag_group(
- flags = ["%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link",
- flag_groups = [
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.object_files}"],
- iterate_over = "libraries_to_link.object_files",
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- ],
- expand_if_available = "libraries_to_link",
- ),
- ],
- ),
- ],
- )
-
- force_pic_flags_feature = feature(
- name = "force_pic_flags",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.lto_index_for_executable,
- ],
- flag_groups = [
- flag_group(
- flags = ["-pie"],
- expand_if_available = "force_pic",
- ),
- ],
- ),
- ],
- )
-
- dependency_file_feature = feature(
- name = "dependency_file",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.clif_match,
- ],
- flag_groups = [
- flag_group(
- flags = ["-MD", "-MF", "%{dependency_file}"],
- expand_if_available = "dependency_file",
- ),
- ],
- ),
- ],
- )
-
- dynamic_library_linker_tool_path = tool_paths
- dynamic_library_linker_tool_feature = feature(
- name = "dynamic_library_linker_tool",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = [" + cppLinkDynamicLibraryToolPath + "],
- expand_if_available = "generate_interface_library",
- ),
- ],
- with_features = [
- with_feature_set(
- features = ["supports_interface_shared_libraries"],
- ),
- ],
- ),
- ],
- )
-
- output_execpath_flags_feature = feature(
- name = "output_execpath_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-o", "%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
- ),
- ],
- )
-
- # Note that we also set --coverage for c++-link-nodeps-dynamic-library. The
- # generated code contains references to gcov symbols, and the dynamic linker
- # can't resolve them unless the library is linked against gcov.
- coverage_feature = feature(
- name = "coverage",
- provides = ["profile"],
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = ([
- flag_group(flags = ctx.attr.coverage_compile_flags),
- ] if ctx.attr.coverage_compile_flags else []),
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = ([
- flag_group(flags = ctx.attr.coverage_link_flags),
- ] if ctx.attr.coverage_link_flags else []),
- ),
- ],
- )
-
- thinlto_feature = feature(
- name = "thin_lto",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(flags = ["-flto=thin"]),
- flag_group(
- expand_if_available = "lto_indexing_bitcode_file",
- flags = [
- "-Xclang",
- "-fthin-link-bitcode=%{lto_indexing_bitcode_file}",
- ],
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.linkstamp_compile],
- flag_groups = [flag_group(flags = ["-DBUILD_LTO_TYPE=thin"])],
- ),
- flag_set(
- actions = lto_index_actions,
- flag_groups = [
- flag_group(flags = [
- "-flto=thin",
- "-Wl,-plugin-opt,thinlto-index-only%{thinlto_optional_params_file}",
- "-Wl,-plugin-opt,thinlto-emit-imports-files",
- "-Wl,-plugin-opt,thinlto-prefix-replace=%{thinlto_prefix_replace}",
- ]),
- flag_group(
- expand_if_available = "thinlto_object_suffix_replace",
- flags = [
- "-Wl,-plugin-opt,thinlto-object-suffix-replace=%{thinlto_object_suffix_replace}",
- ],
- ),
- flag_group(
- expand_if_available = "thinlto_merged_object_file",
- flags = [
- "-Wl,-plugin-opt,obj-path=%{thinlto_merged_object_file}",
- ],
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.lto_backend],
- flag_groups = [
- flag_group(flags = [
- "-c",
- "-fthinlto-index=%{thinlto_index}",
- "-o",
- "%{thinlto_output_object_file}",
- "-x",
- "ir",
- "%{thinlto_input_bitcode_file}",
- ]),
- ],
- ),
- ],
- )
-
- is_linux = ctx.attr.target_libc != "macosx"
-
- # TODO(#8303): Mac crosstool should also declare every feature.
- if is_linux:
- features = [
- dependency_file_feature,
- random_seed_feature,
- pic_feature,
- per_object_debug_info_feature,
- preprocessor_defines_feature,
- includes_feature,
- include_paths_feature,
- fdo_instrument_feature,
- cs_fdo_instrument_feature,
- cs_fdo_optimize_feature,
- thinlto_feature,
- fdo_prefetch_hints_feature,
- autofdo_feature,
- build_interface_libraries_feature,
- dynamic_library_linker_tool_feature,
- symbol_counts_feature,
- shared_flag_feature,
- linkstamps_feature,
- output_execpath_flags_feature,
- runtime_library_search_directories_feature,
- library_search_directories_feature,
- archiver_flags_feature,
- force_pic_flags_feature,
- fission_support_feature,
- strip_debug_symbols_feature,
- coverage_feature,
- supports_pic_feature,
- ] + (
- [
- supports_start_end_lib_feature,
- ] if ctx.attr.supports_start_end_lib else []
- ) + [
- default_compile_flags_feature,
- default_link_flags_feature,
- libraries_to_link_feature,
- user_link_flags_feature,
- static_libgcc_feature,
- fdo_optimize_feature,
- supports_dynamic_linker_feature,
- dbg_feature,
- opt_feature,
- user_compile_flags_feature,
- sysroot_feature,
- unfiltered_compile_flags_feature,
- ] + layering_check_features(ctx.attr.compiler)
- else:
- features = [
- supports_pic_feature,
- ] + (
- [
- supports_start_end_lib_feature,
- ] if ctx.attr.supports_start_end_lib else []
- ) + [
- coverage_feature,
- default_compile_flags_feature,
- default_link_flags_feature,
- fdo_optimize_feature,
- supports_dynamic_linker_feature,
- dbg_feature,
- opt_feature,
- user_compile_flags_feature,
- sysroot_feature,
- unfiltered_compile_flags_feature,
- ] + layering_check_features(ctx.attr.compiler)
-
- return cc_common.create_cc_toolchain_config_info(
- ctx = ctx,
- features = features,
- action_configs = action_configs,
- cxx_builtin_include_directories = ctx.attr.cxx_builtin_include_directories,
- toolchain_identifier = ctx.attr.toolchain_identifier,
- host_system_name = ctx.attr.host_system_name,
- target_system_name = ctx.attr.target_system_name,
- target_cpu = ctx.attr.cpu,
- target_libc = ctx.attr.target_libc,
- compiler = ctx.attr.compiler,
- abi_version = ctx.attr.abi_version,
- abi_libc_version = ctx.attr.abi_libc_version,
- tool_paths = tool_paths,
- builtin_sysroot = ctx.attr.builtin_sysroot,
- )
-
-cc_toolchain_config = rule(
- implementation = _impl,
- attrs = {
- "cpu": attr.string(mandatory = True),
- "compiler": attr.string(mandatory = True),
- "toolchain_identifier": attr.string(mandatory = True),
- "host_system_name": attr.string(mandatory = True),
- "target_system_name": attr.string(mandatory = True),
- "target_libc": attr.string(mandatory = True),
- "abi_version": attr.string(mandatory = True),
- "abi_libc_version": attr.string(mandatory = True),
- "cxx_builtin_include_directories": attr.string_list(),
- "tool_paths": attr.string_dict(),
- "compile_flags": attr.string_list(),
- "dbg_compile_flags": attr.string_list(),
- "opt_compile_flags": attr.string_list(),
- "cxx_flags": attr.string_list(),
- "link_flags": attr.string_list(),
- "link_libs": attr.string_list(),
- "opt_link_flags": attr.string_list(),
- "unfiltered_compile_flags": attr.string_list(),
- "coverage_compile_flags": attr.string_list(),
- "coverage_link_flags": attr.string_list(),
- "supports_start_end_lib": attr.bool(),
- "builtin_sysroot": attr.string(),
- },
- provides = [CcToolchainConfigInfo],
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_wrapper.sh b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_wrapper.sh
deleted file mode 100755
index 42a751dcc..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/cc_wrapper.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Ship the environment to the C++ action
-#
-set -eu
-
-# Set-up the environment
-
-
-# Call the C++ compiler
-/usr/local/bin/clang "$@"
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/config/BUILD b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/config/BUILD
deleted file mode 100644
index e01852d0c..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/config/BUILD
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is auto-generated by an rbe_autoconfig repository rule
-# and should not be modified directly.
-# See @bazel_toolchains//rules:rbe_repo.bzl
-
-package(default_visibility = ["//visibility:public"])
-
-toolchain(
- name = "cc-toolchain",
- exec_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//tools/cpp:clang",
- ],
- target_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
- ],
- toolchain = "//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc:cc-compiler-k8",
- toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
-)
-
-platform(
- name = "platform",
- constraint_values = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//tools/cpp:clang",
- ],
- exec_properties = {"container-image": "docker://gcr.io/kythe-repo/kythe-builder@sha256:49a7a2a52ac943571dbf7c49e888c74eebe1e56ac28badab746e49841fadd3a3", "OSFamily": "Linux"},
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/java/BUILD b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/java/BUILD
deleted file mode 100644
index 47c3ef12f..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/java/BUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is auto-generated by an rbe_autoconfig repository rule
-# and should not be modified directly.
-# See @bazel_toolchains//rules:rbe_repo.bzl
-
-package(default_visibility = ["//visibility:public"])
-
-java_runtime(
- name = "jdk",
- srcs = [],
- java_home = "/usr/lib/jvm/11.29.3-ca-jdk11.0.2/reduced",
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/BUILD b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/BUILD
deleted file mode 100755
index 8411d4907..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/BUILD
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This becomes the BUILD file for @local_config_cc// under non-BSD unixes.
-
-package(default_visibility = ["//visibility:public"])
-
-load(":cc_toolchain_config.bzl", "cc_toolchain_config")
-load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
-load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
-
-licenses(["notice"]) # Apache 2.0
-
-cc_library(
- name = "malloc",
-)
-
-filegroup(
- name = "empty",
- srcs = [],
-)
-
-filegroup(
- name = "cc_wrapper",
- srcs = ["cc_wrapper.sh"],
-)
-
-filegroup(
- name = "compiler_deps",
- srcs = glob(["extra_tools/**"], allow_empty = True) + [":builtin_include_directory_paths"],
-)
-
-# This is the entry point for --crosstool_top. Toolchains are found
-# by lopping off the name of --crosstool_top and searching for
-# the "${CPU}" entry in the toolchains attribute.
-cc_toolchain_suite(
- name = "toolchain",
- toolchains = {
- "k8|clang": ":cc-compiler-k8",
- "k8": ":cc-compiler-k8",
- "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
- "armeabi-v7a": ":cc-compiler-armeabi-v7a",
- },
-)
-
-cc_toolchain(
- name = "cc-compiler-k8",
- toolchain_identifier = "linux_gnu_x86",
- toolchain_config = ":linux_gnu_x86",
- all_files = ":compiler_deps",
- ar_files = ":compiler_deps",
- as_files = ":compiler_deps",
- compiler_files = ":compiler_deps",
- dwp_files = ":empty",
- linker_files = ":compiler_deps",
- objcopy_files = ":empty",
- strip_files = ":empty",
- supports_param_files = 1,
- module_map = ":module.modulemap",
-)
-
-cc_toolchain_config(
- name = "linux_gnu_x86",
- cpu = "k8",
- compiler = "clang",
- toolchain_identifier = "linux_gnu_x86",
- host_system_name = "i686-unknown-linux-gnu",
- target_system_name = "x86_64-unknown-linux-gnu",
- target_libc = "glibc_2.19",
- abi_version = "clang",
- abi_libc_version = "glibc_2.19",
- cxx_builtin_include_directories = ["/usr/local/include",
- "/usr/local/lib/clang/12.0.0/include",
- "/usr/include/x86_64-linux-gnu",
- "/usr/include",
- "/usr/local/lib/clang/12.0.0/share",
- "/usr/include/c++/7.5.0",
- "/usr/include/x86_64-linux-gnu/c++/7.5.0",
- "/usr/include/c++/7.5.0/backward"],
- tool_paths = {"ar": "/usr/bin/ar",
- "ld": "/usr/bin/ld",
- "llvm-cov": "/usr/local/bin/llvm-cov",
- "cpp": "/usr/bin/cpp",
- "gcc": "/usr/local/bin/clang",
- "dwp": "/usr/bin/dwp",
- "gcov": "/dev/null",
- "nm": "/usr/bin/nm",
- "objcopy": "/usr/bin/objcopy",
- "objdump": "/usr/bin/objdump",
- "strip": "/usr/bin/strip"},
- compile_flags = ["-U_FORTIFY_SOURCE",
- "-fstack-protector",
- "-Wall",
- "-Wthread-safety",
- "-Wself-assign",
- "-fcolor-diagnostics",
- "-fno-omit-frame-pointer"],
- opt_compile_flags = ["-g0",
- "-O2",
- "-D_FORTIFY_SOURCE=1",
- "-DNDEBUG",
- "-ffunction-sections",
- "-fdata-sections"],
- dbg_compile_flags = ["-g"],
- cxx_flags = ["-std=c++0x"],
- link_flags = ["-fuse-ld=/usr/bin/ld.gold",
- "-Wl,-no-as-needed",
- "-Wl,-z,relro,-z,now",
- "-B/usr/local/bin"],
- link_libs = ["-lstdc++",
- "-lm"],
- opt_link_flags = ["-Wl,--gc-sections"],
- unfiltered_compile_flags = ["-no-canonical-prefixes",
- "-Wno-builtin-macro-redefined",
- "-D__DATE__=\"redacted\"",
- "-D__TIMESTAMP__=\"redacted\"",
- "-D__TIME__=\"redacted\""],
- coverage_compile_flags = ["--coverage"],
- coverage_link_flags = ["--coverage"],
- supports_start_end_lib = True,
-)
-
-# Android tooling requires a default toolchain for the armeabi-v7a cpu.
-cc_toolchain(
- name = "cc-compiler-armeabi-v7a",
- toolchain_identifier = "stub_armeabi-v7a",
- toolchain_config = ":stub_armeabi-v7a",
- all_files = ":empty",
- ar_files = ":empty",
- as_files = ":empty",
- compiler_files = ":empty",
- dwp_files = ":empty",
- linker_files = ":empty",
- objcopy_files = ":empty",
- strip_files = ":empty",
- supports_param_files = 1,
-)
-
-armeabi_cc_toolchain_config(name = "stub_armeabi-v7a")
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/armeabi_cc_toolchain_config.bzl b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/armeabi_cc_toolchain_config.bzl
deleted file mode 100755
index 94e0720bf..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/armeabi_cc_toolchain_config.bzl
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright 2019 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""A Starlark cc_toolchain configuration rule"""
-
-load(
- "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
- "feature",
- "tool_path",
-)
-
-def _impl(ctx):
- toolchain_identifier = "stub_armeabi-v7a"
- host_system_name = "armeabi-v7a"
- target_system_name = "armeabi-v7a"
- target_cpu = "armeabi-v7a"
- target_libc = "armeabi-v7a"
- compiler = "compiler"
- abi_version = "armeabi-v7a"
- abi_libc_version = "armeabi-v7a"
- cc_target_os = None
- builtin_sysroot = None
- action_configs = []
-
- supports_pic_feature = feature(name = "supports_pic", enabled = True)
- supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
- features = [supports_dynamic_linker_feature, supports_pic_feature]
-
- cxx_builtin_include_directories = []
- artifact_name_patterns = []
- make_variables = []
-
- tool_paths = [
- tool_path(name = "ar", path = "/bin/false"),
- tool_path(name = "compat-ld", path = "/bin/false"),
- tool_path(name = "cpp", path = "/bin/false"),
- tool_path(name = "dwp", path = "/bin/false"),
- tool_path(name = "gcc", path = "/bin/false"),
- tool_path(name = "gcov", path = "/bin/false"),
- tool_path(name = "ld", path = "/bin/false"),
- tool_path(name = "nm", path = "/bin/false"),
- tool_path(name = "objcopy", path = "/bin/false"),
- tool_path(name = "objdump", path = "/bin/false"),
- tool_path(name = "strip", path = "/bin/false"),
- ]
-
- return cc_common.create_cc_toolchain_config_info(
- ctx = ctx,
- features = features,
- action_configs = action_configs,
- artifact_name_patterns = artifact_name_patterns,
- cxx_builtin_include_directories = cxx_builtin_include_directories,
- toolchain_identifier = toolchain_identifier,
- host_system_name = host_system_name,
- target_system_name = target_system_name,
- target_cpu = target_cpu,
- target_libc = target_libc,
- compiler = compiler,
- abi_version = abi_version,
- abi_libc_version = abi_libc_version,
- tool_paths = tool_paths,
- make_variables = make_variables,
- builtin_sysroot = builtin_sysroot,
- cc_target_os = cc_target_os,
- )
-
-armeabi_cc_toolchain_config = rule(
- implementation = _impl,
- attrs = {},
- provides = [CcToolchainConfigInfo],
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/builtin_include_directory_paths b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/builtin_include_directory_paths
deleted file mode 100755
index a09dfbc08..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/builtin_include_directory_paths
+++ /dev/null
@@ -1,14 +0,0 @@
-This file is generated by cc_configure and contains builtin include directories
-that /usr/local/bin/clang reported. This file is a dependency of every compilation action and
-changes to it will be reflected in the action cache key. When some of these
-paths change, Bazel will make sure to rerun the action, even though none of
-declared action inputs or the action commandline changes.
-
-/usr/local/include
-/usr/local/lib/clang/12.0.0/include
-/usr/include/x86_64-linux-gnu
-/usr/include
-/usr/local/lib/clang/12.0.0/share
-/usr/include/c++/7.5.0
-/usr/include/x86_64-linux-gnu/c++/7.5.0
-/usr/include/c++/7.5.0/backward
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/module.modulemap b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/module.modulemap
deleted file mode 100755
index 5671c2bcb..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/module.modulemap
+++ /dev/null
@@ -1,4757 +0,0 @@
-module "crosstool" [system] {
- textual header "/usr/local/include/c++/v1/__bit_reference"
- textual header "/usr/local/include/c++/v1/__bsd_locale_defaults.h"
- textual header "/usr/local/include/c++/v1/__bsd_locale_fallbacks.h"
- textual header "/usr/local/include/c++/v1/__config"
- textual header "/usr/local/include/c++/v1/__cxxabi_config.h"
- textual header "/usr/local/include/c++/v1/__debug"
- textual header "/usr/local/include/c++/v1/__errc"
- textual header "/usr/local/include/c++/v1/__functional_03"
- textual header "/usr/local/include/c++/v1/__functional_base"
- textual header "/usr/local/include/c++/v1/__functional_base_03"
- textual header "/usr/local/include/c++/v1/__hash_table"
- textual header "/usr/local/include/c++/v1/__libcpp_version"
- textual header "/usr/local/include/c++/v1/__locale"
- textual header "/usr/local/include/c++/v1/__mutex_base"
- textual header "/usr/local/include/c++/v1/__node_handle"
- textual header "/usr/local/include/c++/v1/__nullptr"
- textual header "/usr/local/include/c++/v1/__split_buffer"
- textual header "/usr/local/include/c++/v1/__sso_allocator"
- textual header "/usr/local/include/c++/v1/__std_stream"
- textual header "/usr/local/include/c++/v1/__string"
- textual header "/usr/local/include/c++/v1/__threading_support"
- textual header "/usr/local/include/c++/v1/__tree"
- textual header "/usr/local/include/c++/v1/__tuple"
- textual header "/usr/local/include/c++/v1/__undef_macros"
- textual header "/usr/local/include/c++/v1/algorithm"
- textual header "/usr/local/include/c++/v1/any"
- textual header "/usr/local/include/c++/v1/array"
- textual header "/usr/local/include/c++/v1/atomic"
- textual header "/usr/local/include/c++/v1/barrier"
- textual header "/usr/local/include/c++/v1/bit"
- textual header "/usr/local/include/c++/v1/bitset"
- textual header "/usr/local/include/c++/v1/cassert"
- textual header "/usr/local/include/c++/v1/ccomplex"
- textual header "/usr/local/include/c++/v1/cctype"
- textual header "/usr/local/include/c++/v1/cerrno"
- textual header "/usr/local/include/c++/v1/cfenv"
- textual header "/usr/local/include/c++/v1/cfloat"
- textual header "/usr/local/include/c++/v1/charconv"
- textual header "/usr/local/include/c++/v1/chrono"
- textual header "/usr/local/include/c++/v1/cinttypes"
- textual header "/usr/local/include/c++/v1/ciso646"
- textual header "/usr/local/include/c++/v1/climits"
- textual header "/usr/local/include/c++/v1/clocale"
- textual header "/usr/local/include/c++/v1/cmath"
- textual header "/usr/local/include/c++/v1/codecvt"
- textual header "/usr/local/include/c++/v1/compare"
- textual header "/usr/local/include/c++/v1/complex"
- textual header "/usr/local/include/c++/v1/complex.h"
- textual header "/usr/local/include/c++/v1/concepts"
- textual header "/usr/local/include/c++/v1/condition_variable"
- textual header "/usr/local/include/c++/v1/csetjmp"
- textual header "/usr/local/include/c++/v1/csignal"
- textual header "/usr/local/include/c++/v1/cstdarg"
- textual header "/usr/local/include/c++/v1/cstdbool"
- textual header "/usr/local/include/c++/v1/cstddef"
- textual header "/usr/local/include/c++/v1/cstdint"
- textual header "/usr/local/include/c++/v1/cstdio"
- textual header "/usr/local/include/c++/v1/cstdlib"
- textual header "/usr/local/include/c++/v1/cstring"
- textual header "/usr/local/include/c++/v1/ctgmath"
- textual header "/usr/local/include/c++/v1/ctime"
- textual header "/usr/local/include/c++/v1/ctype.h"
- textual header "/usr/local/include/c++/v1/cwchar"
- textual header "/usr/local/include/c++/v1/cwctype"
- textual header "/usr/local/include/c++/v1/cxxabi.h"
- textual header "/usr/local/include/c++/v1/deque"
- textual header "/usr/local/include/c++/v1/errno.h"
- textual header "/usr/local/include/c++/v1/exception"
- textual header "/usr/local/include/c++/v1/execution"
- textual header "/usr/local/include/c++/v1/experimental/__config"
- textual header "/usr/local/include/c++/v1/experimental/__memory"
- textual header "/usr/local/include/c++/v1/experimental/algorithm"
- textual header "/usr/local/include/c++/v1/experimental/coroutine"
- textual header "/usr/local/include/c++/v1/experimental/deque"
- textual header "/usr/local/include/c++/v1/experimental/filesystem"
- textual header "/usr/local/include/c++/v1/experimental/forward_list"
- textual header "/usr/local/include/c++/v1/experimental/functional"
- textual header "/usr/local/include/c++/v1/experimental/iterator"
- textual header "/usr/local/include/c++/v1/experimental/list"
- textual header "/usr/local/include/c++/v1/experimental/map"
- textual header "/usr/local/include/c++/v1/experimental/memory_resource"
- textual header "/usr/local/include/c++/v1/experimental/propagate_const"
- textual header "/usr/local/include/c++/v1/experimental/regex"
- textual header "/usr/local/include/c++/v1/experimental/set"
- textual header "/usr/local/include/c++/v1/experimental/simd"
- textual header "/usr/local/include/c++/v1/experimental/string"
- textual header "/usr/local/include/c++/v1/experimental/type_traits"
- textual header "/usr/local/include/c++/v1/experimental/unordered_map"
- textual header "/usr/local/include/c++/v1/experimental/unordered_set"
- textual header "/usr/local/include/c++/v1/experimental/utility"
- textual header "/usr/local/include/c++/v1/experimental/vector"
- textual header "/usr/local/include/c++/v1/ext/__hash"
- textual header "/usr/local/include/c++/v1/ext/hash_map"
- textual header "/usr/local/include/c++/v1/ext/hash_set"
- textual header "/usr/local/include/c++/v1/fenv.h"
- textual header "/usr/local/include/c++/v1/filesystem"
- textual header "/usr/local/include/c++/v1/float.h"
- textual header "/usr/local/include/c++/v1/forward_list"
- textual header "/usr/local/include/c++/v1/fstream"
- textual header "/usr/local/include/c++/v1/functional"
- textual header "/usr/local/include/c++/v1/future"
- textual header "/usr/local/include/c++/v1/initializer_list"
- textual header "/usr/local/include/c++/v1/inttypes.h"
- textual header "/usr/local/include/c++/v1/iomanip"
- textual header "/usr/local/include/c++/v1/ios"
- textual header "/usr/local/include/c++/v1/iosfwd"
- textual header "/usr/local/include/c++/v1/iostream"
- textual header "/usr/local/include/c++/v1/istream"
- textual header "/usr/local/include/c++/v1/iterator"
- textual header "/usr/local/include/c++/v1/latch"
- textual header "/usr/local/include/c++/v1/limits"
- textual header "/usr/local/include/c++/v1/limits.h"
- textual header "/usr/local/include/c++/v1/list"
- textual header "/usr/local/include/c++/v1/locale"
- textual header "/usr/local/include/c++/v1/locale.h"
- textual header "/usr/local/include/c++/v1/map"
- textual header "/usr/local/include/c++/v1/math.h"
- textual header "/usr/local/include/c++/v1/memory"
- textual header "/usr/local/include/c++/v1/module.modulemap"
- textual header "/usr/local/include/c++/v1/mutex"
- textual header "/usr/local/include/c++/v1/new"
- textual header "/usr/local/include/c++/v1/numbers"
- textual header "/usr/local/include/c++/v1/numeric"
- textual header "/usr/local/include/c++/v1/optional"
- textual header "/usr/local/include/c++/v1/ostream"
- textual header "/usr/local/include/c++/v1/queue"
- textual header "/usr/local/include/c++/v1/random"
- textual header "/usr/local/include/c++/v1/ratio"
- textual header "/usr/local/include/c++/v1/regex"
- textual header "/usr/local/include/c++/v1/scoped_allocator"
- textual header "/usr/local/include/c++/v1/semaphore"
- textual header "/usr/local/include/c++/v1/set"
- textual header "/usr/local/include/c++/v1/setjmp.h"
- textual header "/usr/local/include/c++/v1/shared_mutex"
- textual header "/usr/local/include/c++/v1/span"
- textual header "/usr/local/include/c++/v1/sstream"
- textual header "/usr/local/include/c++/v1/stack"
- textual header "/usr/local/include/c++/v1/stdbool.h"
- textual header "/usr/local/include/c++/v1/stddef.h"
- textual header "/usr/local/include/c++/v1/stdexcept"
- textual header "/usr/local/include/c++/v1/stdint.h"
- textual header "/usr/local/include/c++/v1/stdio.h"
- textual header "/usr/local/include/c++/v1/stdlib.h"
- textual header "/usr/local/include/c++/v1/streambuf"
- textual header "/usr/local/include/c++/v1/string"
- textual header "/usr/local/include/c++/v1/string.h"
- textual header "/usr/local/include/c++/v1/string_view"
- textual header "/usr/local/include/c++/v1/strstream"
- textual header "/usr/local/include/c++/v1/support/android/locale_bionic.h"
- textual header "/usr/local/include/c++/v1/support/fuchsia/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/ibm/limits.h"
- textual header "/usr/local/include/c++/v1/support/ibm/locale_mgmt_aix.h"
- textual header "/usr/local/include/c++/v1/support/ibm/support.h"
- textual header "/usr/local/include/c++/v1/support/ibm/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/musl/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/newlib/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/solaris/floatingpoint.h"
- textual header "/usr/local/include/c++/v1/support/solaris/wchar.h"
- textual header "/usr/local/include/c++/v1/support/solaris/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/win32/limits_msvc_win32.h"
- textual header "/usr/local/include/c++/v1/support/win32/locale_win32.h"
- textual header "/usr/local/include/c++/v1/support/xlocale/__nop_locale_mgmt.h"
- textual header "/usr/local/include/c++/v1/support/xlocale/__posix_l_fallback.h"
- textual header "/usr/local/include/c++/v1/support/xlocale/__strtonum_fallback.h"
- textual header "/usr/local/include/c++/v1/system_error"
- textual header "/usr/local/include/c++/v1/tgmath.h"
- textual header "/usr/local/include/c++/v1/thread"
- textual header "/usr/local/include/c++/v1/tuple"
- textual header "/usr/local/include/c++/v1/type_traits"
- textual header "/usr/local/include/c++/v1/typeindex"
- textual header "/usr/local/include/c++/v1/typeinfo"
- textual header "/usr/local/include/c++/v1/unordered_map"
- textual header "/usr/local/include/c++/v1/unordered_set"
- textual header "/usr/local/include/c++/v1/utility"
- textual header "/usr/local/include/c++/v1/valarray"
- textual header "/usr/local/include/c++/v1/variant"
- textual header "/usr/local/include/c++/v1/vector"
- textual header "/usr/local/include/c++/v1/version"
- textual header "/usr/local/include/c++/v1/wchar.h"
- textual header "/usr/local/include/c++/v1/wctype.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_builtin_vars.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_cmath.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_complex_builtins.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_device_functions.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_intrinsics.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_libdevice_declares.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_math.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_math_forward_declares.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_runtime_wrapper.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_hip_libdevice_declares.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_hip_math.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_hip_runtime_wrapper.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__stddef_max_align_t.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__wmmintrin_aes.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__wmmintrin_pclmul.h"
- textual header "/usr/local/lib/clang/12.0.0/include/adxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/altivec.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ammintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/amxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm64intr.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_acle.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_bf16.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_cde.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_cmse.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_fp16.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_mve.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_neon.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_sve.h"
- textual header "/usr/local/lib/clang/12.0.0/include/armintr.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512bf16intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512bitalgintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512bwintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512cdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512dqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512erintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512fintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512ifmaintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512ifmavlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512pfintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vbmi2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vbmiintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vbmivlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlbf16intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlbitalgintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlbwintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlcdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vldqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlvbmi2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlvnniintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlvp2intersectintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vnniintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vp2intersectintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vpopcntdqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vpopcntdqvlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/bmi2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/bmiintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cet.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cetintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cldemoteintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/clflushoptintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/clwbintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/clzerointrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cpuid.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cuda_wrappers/algorithm"
- textual header "/usr/local/lib/clang/12.0.0/include/cuda_wrappers/complex"
- textual header "/usr/local/lib/clang/12.0.0/include/cuda_wrappers/new"
- textual header "/usr/local/lib/clang/12.0.0/include/emmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/enqcmdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/f16cintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/float.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fma4intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fmaintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fuzzer/FuzzedDataProvider.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fxsrintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/gfniintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/htmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/htmxlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ia32intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/immintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/inttypes.h"
- textual header "/usr/local/lib/clang/12.0.0/include/invpcidintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/iso646.h"
- textual header "/usr/local/lib/clang/12.0.0/include/keylocker_wide_intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/keylockerintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/limits.h"
- textual header "/usr/local/lib/clang/12.0.0/include/lwpintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/lzcntintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mm3dnow.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mm_malloc.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/module.modulemap"
- textual header "/usr/local/lib/clang/12.0.0/include/movdirintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/msa.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mwaitxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/nmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/opencl-c-base.h"
- textual header "/usr/local/lib/clang/12.0.0/include/opencl-c.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/cmath"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/complex"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/complex.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/complex_cmath.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/math.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/new"
- textual header "/usr/local/lib/clang/12.0.0/include/pconfigintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/pkuintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/pmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/popcntintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/emmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/mm_malloc.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/mmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/pmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/smmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/tmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/xmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/prfchwintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/profile/InstrProfData.inc"
- textual header "/usr/local/lib/clang/12.0.0/include/ptwriteintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/rdseedintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/rtmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/s390intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/allocator_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/asan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/common_interface_defs.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/coverage_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/dfsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/hwasan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/linux_syscall_hooks.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/lsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/msan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/netbsd_syscall_hooks.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/scudo_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/tsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/tsan_interface_atomic.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/ubsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/serializeintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sgxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/shaintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/smmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdalign.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdarg.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdatomic.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdbool.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stddef.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdint.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdnoreturn.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tbmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tgmath.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tsxldtrkintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/unwind.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vadefs.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vaesintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/varargs.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vecintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vpclmulqdqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/waitpkgintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/wasm_simd128.h"
- textual header "/usr/local/lib/clang/12.0.0/include/wbnoinvdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/wmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/x86intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xopintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xray/xray_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xray/xray_log_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xray/xray_records.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsavecintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsaveintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsaveoptintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsavesintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xtestintrin.h"
- textual header "/usr/include/x86_64-linux-gnu/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/auxvec.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/boot.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bootparam.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bpf_perf_event.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/byteorder.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/e820.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hw_breakpoint.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hwcap2.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hyperv.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ipcbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ist.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_para.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_perf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ldt.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mce.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msgbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mtrr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/param.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/perf_regs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/processor-flags.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace-abi.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sembuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/setup.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/shmbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/siginfo.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sockios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/svm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/swab.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termbits.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vmx.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vsyscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/_G_config.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cmathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/confname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cpu-set.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dirent.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dlfcn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/elfclass.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/endian.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/environments.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/error.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenvinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn-common.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-fast.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-logb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_core.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_posix.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/hwcap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/in.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/initspin.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctl-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipctypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/iscanonical.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/link.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/local_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/locale.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/long-double.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-finite.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-vector.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathdef.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/monetary-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/msq.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/netdb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/param.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix_opt.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/printf-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ptrace-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sched.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/semaphore.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigaction.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum-generic.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigthread.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket_type.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ss_flags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stab.def"
- textual header "/usr/include/x86_64-linux-gnu/bits/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/string_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/strings_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-path.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/time.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clock_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/res_state.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/stack_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_rusage.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/time_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/timer_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/wint_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/typesizes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uintn-identity.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio-ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmpx.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitflags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitstatus.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wordsize.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xtitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/expat_config.h"
- textual header "/usr/include/x86_64-linux-gnu/fpu_control.h"
- textual header "/usr/include/x86_64-linux-gnu/gmp.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/libc-version.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/ieee754.h"
- textual header "/usr/include/x86_64-linux-gnu/python2.7/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/python3.7m/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/ruby-2.5.0/ruby/config.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/acct.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/bitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/cdefs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/dir.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/elf.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fanotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/file.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fsuid.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon_out.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/io.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/kd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/klog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mount.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/msg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mtio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/param.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/pci.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/perm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/personality.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/procfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/profil.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/queue.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/quota.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/random.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/raw.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reboot.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/select.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sendfile.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socketvar.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/soundcard.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/swap.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysinfo.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/time.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timeb.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/times.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttychars.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttydefaults.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/types.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/uio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/un.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/user.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vlimit.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vt.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vtimes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/wait.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/xattr.h"
- textual header "/usr/include/FlexLexer.h"
- textual header "/usr/include/X11/bitmaps/1x1"
- textual header "/usr/include/X11/bitmaps/2x2"
- textual header "/usr/include/X11/bitmaps/black"
- textual header "/usr/include/X11/bitmaps/black6"
- textual header "/usr/include/X11/bitmaps/box6"
- textual header "/usr/include/X11/bitmaps/boxes"
- textual header "/usr/include/X11/bitmaps/calculator"
- textual header "/usr/include/X11/bitmaps/cntr_ptr"
- textual header "/usr/include/X11/bitmaps/cntr_ptrmsk"
- textual header "/usr/include/X11/bitmaps/cross_weave"
- textual header "/usr/include/X11/bitmaps/dimple1"
- textual header "/usr/include/X11/bitmaps/dimple3"
- textual header "/usr/include/X11/bitmaps/dot"
- textual header "/usr/include/X11/bitmaps/dropbar7"
- textual header "/usr/include/X11/bitmaps/dropbar8"
- textual header "/usr/include/X11/bitmaps/escherknot"
- textual header "/usr/include/X11/bitmaps/flagdown"
- textual header "/usr/include/X11/bitmaps/flagup"
- textual header "/usr/include/X11/bitmaps/flipped_gray"
- textual header "/usr/include/X11/bitmaps/gray"
- textual header "/usr/include/X11/bitmaps/gray1"
- textual header "/usr/include/X11/bitmaps/gray3"
- textual header "/usr/include/X11/bitmaps/grid16"
- textual header "/usr/include/X11/bitmaps/grid2"
- textual header "/usr/include/X11/bitmaps/grid4"
- textual header "/usr/include/X11/bitmaps/grid8"
- textual header "/usr/include/X11/bitmaps/hlines2"
- textual header "/usr/include/X11/bitmaps/hlines3"
- textual header "/usr/include/X11/bitmaps/icon"
- textual header "/usr/include/X11/bitmaps/keyboard16"
- textual header "/usr/include/X11/bitmaps/left_ptr"
- textual header "/usr/include/X11/bitmaps/left_ptrmsk"
- textual header "/usr/include/X11/bitmaps/letters"
- textual header "/usr/include/X11/bitmaps/light_gray"
- textual header "/usr/include/X11/bitmaps/mailempty"
- textual header "/usr/include/X11/bitmaps/mailemptymsk"
- textual header "/usr/include/X11/bitmaps/mailfull"
- textual header "/usr/include/X11/bitmaps/mailfullmsk"
- textual header "/usr/include/X11/bitmaps/mensetmanus"
- textual header "/usr/include/X11/bitmaps/menu10"
- textual header "/usr/include/X11/bitmaps/menu12"
- textual header "/usr/include/X11/bitmaps/menu16"
- textual header "/usr/include/X11/bitmaps/menu6"
- textual header "/usr/include/X11/bitmaps/menu8"
- textual header "/usr/include/X11/bitmaps/noletters"
- textual header "/usr/include/X11/bitmaps/opendot"
- textual header "/usr/include/X11/bitmaps/opendotMask"
- textual header "/usr/include/X11/bitmaps/plaid"
- textual header "/usr/include/X11/bitmaps/right_ptr"
- textual header "/usr/include/X11/bitmaps/right_ptrmsk"
- textual header "/usr/include/X11/bitmaps/root_weave"
- textual header "/usr/include/X11/bitmaps/scales"
- textual header "/usr/include/X11/bitmaps/sipb"
- textual header "/usr/include/X11/bitmaps/star"
- textual header "/usr/include/X11/bitmaps/starMask"
- textual header "/usr/include/X11/bitmaps/stipple"
- textual header "/usr/include/X11/bitmaps/target"
- textual header "/usr/include/X11/bitmaps/terminal"
- textual header "/usr/include/X11/bitmaps/tie_fighter"
- textual header "/usr/include/X11/bitmaps/vlines2"
- textual header "/usr/include/X11/bitmaps/vlines3"
- textual header "/usr/include/X11/bitmaps/weird_size"
- textual header "/usr/include/X11/bitmaps/wide_weave"
- textual header "/usr/include/X11/bitmaps/wingdogs"
- textual header "/usr/include/X11/bitmaps/woman"
- textual header "/usr/include/X11/bitmaps/xfd_icon"
- textual header "/usr/include/X11/bitmaps/xlogo11"
- textual header "/usr/include/X11/bitmaps/xlogo16"
- textual header "/usr/include/X11/bitmaps/xlogo32"
- textual header "/usr/include/X11/bitmaps/xlogo64"
- textual header "/usr/include/X11/bitmaps/xsnow"
- textual header "/usr/include/_G_config.h"
- textual header "/usr/include/aio.h"
- textual header "/usr/include/aliases.h"
- textual header "/usr/include/alloca.h"
- textual header "/usr/include/ar.h"
- textual header "/usr/include/argp.h"
- textual header "/usr/include/argz.h"
- textual header "/usr/include/arpa/ftp.h"
- textual header "/usr/include/arpa/inet.h"
- textual header "/usr/include/arpa/nameser.h"
- textual header "/usr/include/arpa/nameser_compat.h"
- textual header "/usr/include/arpa/telnet.h"
- textual header "/usr/include/arpa/tftp.h"
- textual header "/usr/include/asm-generic/auxvec.h"
- textual header "/usr/include/asm-generic/bitsperlong.h"
- textual header "/usr/include/asm-generic/bpf_perf_event.h"
- textual header "/usr/include/asm-generic/errno-base.h"
- textual header "/usr/include/asm-generic/errno.h"
- textual header "/usr/include/asm-generic/fcntl.h"
- textual header "/usr/include/asm-generic/hugetlb_encode.h"
- textual header "/usr/include/asm-generic/int-l64.h"
- textual header "/usr/include/asm-generic/int-ll64.h"
- textual header "/usr/include/asm-generic/ioctl.h"
- textual header "/usr/include/asm-generic/ioctls.h"
- textual header "/usr/include/asm-generic/ipcbuf.h"
- textual header "/usr/include/asm-generic/kvm_para.h"
- textual header "/usr/include/asm-generic/mman-common.h"
- textual header "/usr/include/asm-generic/mman.h"
- textual header "/usr/include/asm-generic/msgbuf.h"
- textual header "/usr/include/asm-generic/param.h"
- textual header "/usr/include/asm-generic/poll.h"
- textual header "/usr/include/asm-generic/posix_types.h"
- textual header "/usr/include/asm-generic/resource.h"
- textual header "/usr/include/asm-generic/sembuf.h"
- textual header "/usr/include/asm-generic/setup.h"
- textual header "/usr/include/asm-generic/shmbuf.h"
- textual header "/usr/include/asm-generic/shmparam.h"
- textual header "/usr/include/asm-generic/siginfo.h"
- textual header "/usr/include/asm-generic/signal-defs.h"
- textual header "/usr/include/asm-generic/signal.h"
- textual header "/usr/include/asm-generic/socket.h"
- textual header "/usr/include/asm-generic/sockios.h"
- textual header "/usr/include/asm-generic/stat.h"
- textual header "/usr/include/asm-generic/statfs.h"
- textual header "/usr/include/asm-generic/swab.h"
- textual header "/usr/include/asm-generic/termbits.h"
- textual header "/usr/include/asm-generic/termios.h"
- textual header "/usr/include/asm-generic/types.h"
- textual header "/usr/include/asm-generic/ucontext.h"
- textual header "/usr/include/asm-generic/unistd.h"
- textual header "/usr/include/assert.h"
- textual header "/usr/include/byteswap.h"
- textual header "/usr/include/c++/7.5.0/algorithm"
- textual header "/usr/include/c++/7.5.0/any"
- textual header "/usr/include/c++/7.5.0/array"
- textual header "/usr/include/c++/7.5.0/atomic"
- textual header "/usr/include/c++/7.5.0/backward/auto_ptr.h"
- textual header "/usr/include/c++/7.5.0/backward/backward_warning.h"
- textual header "/usr/include/c++/7.5.0/backward/binders.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_fun.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_map"
- textual header "/usr/include/c++/7.5.0/backward/hash_set"
- textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
- textual header "/usr/include/c++/7.5.0/backward/strstream"
- textual header "/usr/include/c++/7.5.0/bits/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/allocated_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_base.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_futex.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_lockfree_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.tcc"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.tcc"
- textual header "/usr/include/c++/7.5.0/bits/boost_concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/c++0x_warning.h"
- textual header "/usr/include/c++/7.5.0/bits/char_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/codecvt.h"
- textual header "/usr/include/c++/7.5.0/bits/concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/cpp_type_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_forced.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_init_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/deque.tcc"
- textual header "/usr/include/c++/7.5.0/bits/enable_special_members.h"
- textual header "/usr/include/c++/7.5.0/bits/exception.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/fstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/functexcept.h"
- textual header "/usr/include/c++/7.5.0/bits/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/hash_bytes.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/bits/indirect_array.h"
- textual header "/usr/include/c++/7.5.0/bits/invoke.h"
- textual header "/usr/include/c++/7.5.0/bits/ios_base.h"
- textual header "/usr/include/c++/7.5.0/bits/istream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_conv.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.tcc"
- textual header "/usr/include/c++/7.5.0/bits/localefwd.h"
- textual header "/usr/include/c++/7.5.0/bits/mask_array.h"
- textual header "/usr/include/c++/7.5.0/bits/memoryfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/move.h"
- textual header "/usr/include/c++/7.5.0/bits/nested_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/node_handle.h"
- textual header "/usr/include/c++/7.5.0/bits/ostream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/ostream_insert.h"
- textual header "/usr/include/c++/7.5.0/bits/parse_numbers.h"
- textual header "/usr/include/c++/7.5.0/bits/postypes.h"
- textual header "/usr/include/c++/7.5.0/bits/predefined_ops.h"
- textual header "/usr/include/c++/7.5.0/bits/ptr_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/quoted_string.h"
- textual header "/usr/include/c++/7.5.0/bits/random.h"
- textual header "/usr/include/c++/7.5.0/bits/random.tcc"
- textual header "/usr/include/c++/7.5.0/bits/range_access.h"
- textual header "/usr/include/c++/7.5.0/bits/refwrap.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_constants.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_error.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.tcc"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_atomic.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_base.h"
- textual header "/usr/include/c++/7.5.0/bits/slice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/specfun.h"
- textual header "/usr/include/c++/7.5.0/bits/sstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/std_abs.h"
- textual header "/usr/include/c++/7.5.0/bits/std_function.h"
- textual header "/usr/include/c++/7.5.0/bits/std_mutex.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algo.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algobase.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_bvector.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_construct.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_deque.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_function.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_heap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_funcs.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_types.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_list.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_map.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multimap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multiset.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_numeric.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_pair.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_queue.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_raw_storage_iter.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_relops.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_set.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_stack.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tempbuf.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tree.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_uninitialized.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_vector.h"
- textual header "/usr/include/c++/7.5.0/bits/stream_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/streambuf.tcc"
- textual header "/usr/include/c++/7.5.0/bits/streambuf_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/bits/stringfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/uniform_int_dist.h"
- textual header "/usr/include/c++/7.5.0/bits/unique_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/bits/uses_allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_after.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.tcc"
- textual header "/usr/include/c++/7.5.0/bits/valarray_before.h"
- textual header "/usr/include/c++/7.5.0/bits/vector.tcc"
- textual header "/usr/include/c++/7.5.0/bitset"
- textual header "/usr/include/c++/7.5.0/cassert"
- textual header "/usr/include/c++/7.5.0/ccomplex"
- textual header "/usr/include/c++/7.5.0/cctype"
- textual header "/usr/include/c++/7.5.0/cerrno"
- textual header "/usr/include/c++/7.5.0/cfenv"
- textual header "/usr/include/c++/7.5.0/cfloat"
- textual header "/usr/include/c++/7.5.0/chrono"
- textual header "/usr/include/c++/7.5.0/cinttypes"
- textual header "/usr/include/c++/7.5.0/ciso646"
- textual header "/usr/include/c++/7.5.0/climits"
- textual header "/usr/include/c++/7.5.0/clocale"
- textual header "/usr/include/c++/7.5.0/cmath"
- textual header "/usr/include/c++/7.5.0/codecvt"
- textual header "/usr/include/c++/7.5.0/complex"
- textual header "/usr/include/c++/7.5.0/complex.h"
- textual header "/usr/include/c++/7.5.0/condition_variable"
- textual header "/usr/include/c++/7.5.0/csetjmp"
- textual header "/usr/include/c++/7.5.0/csignal"
- textual header "/usr/include/c++/7.5.0/cstdalign"
- textual header "/usr/include/c++/7.5.0/cstdarg"
- textual header "/usr/include/c++/7.5.0/cstdbool"
- textual header "/usr/include/c++/7.5.0/cstddef"
- textual header "/usr/include/c++/7.5.0/cstdint"
- textual header "/usr/include/c++/7.5.0/cstdio"
- textual header "/usr/include/c++/7.5.0/cstdlib"
- textual header "/usr/include/c++/7.5.0/cstring"
- textual header "/usr/include/c++/7.5.0/ctgmath"
- textual header "/usr/include/c++/7.5.0/ctime"
- textual header "/usr/include/c++/7.5.0/cuchar"
- textual header "/usr/include/c++/7.5.0/cwchar"
- textual header "/usr/include/c++/7.5.0/cwctype"
- textual header "/usr/include/c++/7.5.0/cxxabi.h"
- textual header "/usr/include/c++/7.5.0/debug/array"
- textual header "/usr/include/c++/7.5.0/debug/assertions.h"
- textual header "/usr/include/c++/7.5.0/debug/bitset"
- textual header "/usr/include/c++/7.5.0/debug/debug.h"
- textual header "/usr/include/c++/7.5.0/debug/deque"
- textual header "/usr/include/c++/7.5.0/debug/formatter.h"
- textual header "/usr/include/c++/7.5.0/debug/forward_list"
- textual header "/usr/include/c++/7.5.0/debug/functions.h"
- textual header "/usr/include/c++/7.5.0/debug/helper_functions.h"
- textual header "/usr/include/c++/7.5.0/debug/list"
- textual header "/usr/include/c++/7.5.0/debug/macros.h"
- textual header "/usr/include/c++/7.5.0/debug/map"
- textual header "/usr/include/c++/7.5.0/debug/map.h"
- textual header "/usr/include/c++/7.5.0/debug/multimap.h"
- textual header "/usr/include/c++/7.5.0/debug/multiset.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.tcc"
- textual header "/usr/include/c++/7.5.0/debug/set"
- textual header "/usr/include/c++/7.5.0/debug/set.h"
- textual header "/usr/include/c++/7.5.0/debug/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/string"
- textual header "/usr/include/c++/7.5.0/debug/unordered_map"
- textual header "/usr/include/c++/7.5.0/debug/unordered_set"
- textual header "/usr/include/c++/7.5.0/debug/vector"
- textual header "/usr/include/c++/7.5.0/decimal/decimal"
- textual header "/usr/include/c++/7.5.0/decimal/decimal.h"
- textual header "/usr/include/c++/7.5.0/deque"
- textual header "/usr/include/c++/7.5.0/exception"
- textual header "/usr/include/c++/7.5.0/experimental/algorithm"
- textual header "/usr/include/c++/7.5.0/experimental/any"
- textual header "/usr/include/c++/7.5.0/experimental/array"
- textual header "/usr/include/c++/7.5.0/experimental/bits/erase_if.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_dir.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_fwd.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_ops.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_path.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/lfts_config.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/experimental/chrono"
- textual header "/usr/include/c++/7.5.0/experimental/deque"
- textual header "/usr/include/c++/7.5.0/experimental/filesystem"
- textual header "/usr/include/c++/7.5.0/experimental/forward_list"
- textual header "/usr/include/c++/7.5.0/experimental/functional"
- textual header "/usr/include/c++/7.5.0/experimental/iterator"
- textual header "/usr/include/c++/7.5.0/experimental/list"
- textual header "/usr/include/c++/7.5.0/experimental/map"
- textual header "/usr/include/c++/7.5.0/experimental/memory"
- textual header "/usr/include/c++/7.5.0/experimental/memory_resource"
- textual header "/usr/include/c++/7.5.0/experimental/numeric"
- textual header "/usr/include/c++/7.5.0/experimental/optional"
- textual header "/usr/include/c++/7.5.0/experimental/propagate_const"
- textual header "/usr/include/c++/7.5.0/experimental/random"
- textual header "/usr/include/c++/7.5.0/experimental/ratio"
- textual header "/usr/include/c++/7.5.0/experimental/regex"
- textual header "/usr/include/c++/7.5.0/experimental/set"
- textual header "/usr/include/c++/7.5.0/experimental/source_location"
- textual header "/usr/include/c++/7.5.0/experimental/string"
- textual header "/usr/include/c++/7.5.0/experimental/string_view"
- textual header "/usr/include/c++/7.5.0/experimental/system_error"
- textual header "/usr/include/c++/7.5.0/experimental/tuple"
- textual header "/usr/include/c++/7.5.0/experimental/type_traits"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_map"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_set"
- textual header "/usr/include/c++/7.5.0/experimental/utility"
- textual header "/usr/include/c++/7.5.0/experimental/vector"
- textual header "/usr/include/c++/7.5.0/ext/algorithm"
- textual header "/usr/include/c++/7.5.0/ext/aligned_buffer.h"
- textual header "/usr/include/c++/7.5.0/ext/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/array_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/atomicity.h"
- textual header "/usr/include/c++/7.5.0/ext/bitmap_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/cast.h"
- textual header "/usr/include/c++/7.5.0/ext/cmath"
- textual header "/usr/include/c++/7.5.0/ext/codecvt_specializations.h"
- textual header "/usr/include/c++/7.5.0/ext/concurrence.h"
- textual header "/usr/include/c++/7.5.0/ext/debug_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/enc_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/extptr_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/functional"
- textual header "/usr/include/c++/7.5.0/ext/hash_map"
- textual header "/usr/include/c++/7.5.0/ext/hash_set"
- textual header "/usr/include/c++/7.5.0/ext/iterator"
- textual header "/usr/include/c++/7.5.0/ext/malloc_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/memory"
- textual header "/usr/include/c++/7.5.0/ext/mt_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/new_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/numeric"
- textual header "/usr/include/c++/7.5.0/ext/numeric_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/assoc_container.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cond_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/container_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/debug_map_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/standard_policies.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_trace_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/type_utils.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/types_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/exception.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/hash_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/list_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/priority_queue.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tag_and_trait.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tree_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/trie_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pod_char_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pointer.h"
- textual header "/usr/include/c++/7.5.0/ext/pool_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/random"
- textual header "/usr/include/c++/7.5.0/ext/random.tcc"
- textual header "/usr/include/c++/7.5.0/ext/rb_tree"
- textual header "/usr/include/c++/7.5.0/ext/rc_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/rope"
- textual header "/usr/include/c++/7.5.0/ext/ropeimpl.h"
- textual header "/usr/include/c++/7.5.0/ext/slist"
- textual header "/usr/include/c++/7.5.0/ext/sso_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_sync_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/string_conversions.h"
- textual header "/usr/include/c++/7.5.0/ext/throw_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/type_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/typelist.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.tcc"
- textual header "/usr/include/c++/7.5.0/ext/vstring_fwd.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring_util.h"
- textual header "/usr/include/c++/7.5.0/fenv.h"
- textual header "/usr/include/c++/7.5.0/forward_list"
- textual header "/usr/include/c++/7.5.0/fstream"
- textual header "/usr/include/c++/7.5.0/functional"
- textual header "/usr/include/c++/7.5.0/future"
- textual header "/usr/include/c++/7.5.0/initializer_list"
- textual header "/usr/include/c++/7.5.0/iomanip"
- textual header "/usr/include/c++/7.5.0/ios"
- textual header "/usr/include/c++/7.5.0/iosfwd"
- textual header "/usr/include/c++/7.5.0/iostream"
- textual header "/usr/include/c++/7.5.0/istream"
- textual header "/usr/include/c++/7.5.0/iterator"
- textual header "/usr/include/c++/7.5.0/limits"
- textual header "/usr/include/c++/7.5.0/list"
- textual header "/usr/include/c++/7.5.0/locale"
- textual header "/usr/include/c++/7.5.0/map"
- textual header "/usr/include/c++/7.5.0/math.h"
- textual header "/usr/include/c++/7.5.0/memory"
- textual header "/usr/include/c++/7.5.0/mutex"
- textual header "/usr/include/c++/7.5.0/new"
- textual header "/usr/include/c++/7.5.0/numeric"
- textual header "/usr/include/c++/7.5.0/optional"
- textual header "/usr/include/c++/7.5.0/ostream"
- textual header "/usr/include/c++/7.5.0/parallel/algo.h"
- textual header "/usr/include/c++/7.5.0/parallel/algobase.h"
- textual header "/usr/include/c++/7.5.0/parallel/algorithm"
- textual header "/usr/include/c++/7.5.0/parallel/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/balanced_quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/base.h"
- textual header "/usr/include/c++/7.5.0/parallel/basic_iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/checkers.h"
- textual header "/usr/include/c++/7.5.0/parallel/compatibility.h"
- textual header "/usr/include/c++/7.5.0/parallel/compiletime_settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/equally_split.h"
- textual header "/usr/include/c++/7.5.0/parallel/features.h"
- textual header "/usr/include/c++/7.5.0/parallel/find.h"
- textual header "/usr/include/c++/7.5.0/parallel/find_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/list_partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/losertree.h"
- textual header "/usr/include/c++/7.5.0/parallel/merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiseq_selection.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_mergesort.h"
- textual header "/usr/include/c++/7.5.0/parallel/numeric"
- textual header "/usr/include/c++/7.5.0/parallel/numericfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop_static.h"
- textual header "/usr/include/c++/7.5.0/parallel/par_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/parallel.h"
- textual header "/usr/include/c++/7.5.0/parallel/partial_sum.h"
- textual header "/usr/include/c++/7.5.0/parallel/partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/queue.h"
- textual header "/usr/include/c++/7.5.0/parallel/quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_number.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_shuffle.h"
- textual header "/usr/include/c++/7.5.0/parallel/search.h"
- textual header "/usr/include/c++/7.5.0/parallel/set_operations.h"
- textual header "/usr/include/c++/7.5.0/parallel/settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/sort.h"
- textual header "/usr/include/c++/7.5.0/parallel/tags.h"
- textual header "/usr/include/c++/7.5.0/parallel/types.h"
- textual header "/usr/include/c++/7.5.0/parallel/unique_copy.h"
- textual header "/usr/include/c++/7.5.0/parallel/workstealing.h"
- textual header "/usr/include/c++/7.5.0/profile/array"
- textual header "/usr/include/c++/7.5.0/profile/base.h"
- textual header "/usr/include/c++/7.5.0/profile/bitset"
- textual header "/usr/include/c++/7.5.0/profile/deque"
- textual header "/usr/include/c++/7.5.0/profile/forward_list"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_algos.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_container_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hash_func.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hashtable_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_slist.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_vector.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_map_to_unordered_map.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_node.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_state.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_trace.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_to_list.h"
- textual header "/usr/include/c++/7.5.0/profile/iterator_tracker.h"
- textual header "/usr/include/c++/7.5.0/profile/list"
- textual header "/usr/include/c++/7.5.0/profile/map"
- textual header "/usr/include/c++/7.5.0/profile/map.h"
- textual header "/usr/include/c++/7.5.0/profile/multimap.h"
- textual header "/usr/include/c++/7.5.0/profile/multiset.h"
- textual header "/usr/include/c++/7.5.0/profile/ordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/set"
- textual header "/usr/include/c++/7.5.0/profile/set.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_map"
- textual header "/usr/include/c++/7.5.0/profile/unordered_set"
- textual header "/usr/include/c++/7.5.0/profile/vector"
- textual header "/usr/include/c++/7.5.0/queue"
- textual header "/usr/include/c++/7.5.0/random"
- textual header "/usr/include/c++/7.5.0/ratio"
- textual header "/usr/include/c++/7.5.0/regex"
- textual header "/usr/include/c++/7.5.0/scoped_allocator"
- textual header "/usr/include/c++/7.5.0/set"
- textual header "/usr/include/c++/7.5.0/shared_mutex"
- textual header "/usr/include/c++/7.5.0/sstream"
- textual header "/usr/include/c++/7.5.0/stack"
- textual header "/usr/include/c++/7.5.0/stdexcept"
- textual header "/usr/include/c++/7.5.0/stdlib.h"
- textual header "/usr/include/c++/7.5.0/streambuf"
- textual header "/usr/include/c++/7.5.0/string"
- textual header "/usr/include/c++/7.5.0/string_view"
- textual header "/usr/include/c++/7.5.0/system_error"
- textual header "/usr/include/c++/7.5.0/tgmath.h"
- textual header "/usr/include/c++/7.5.0/thread"
- textual header "/usr/include/c++/7.5.0/tr1/array"
- textual header "/usr/include/c++/7.5.0/tr1/bessel_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/beta_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/ccomplex"
- textual header "/usr/include/c++/7.5.0/tr1/cctype"
- textual header "/usr/include/c++/7.5.0/tr1/cfenv"
- textual header "/usr/include/c++/7.5.0/tr1/cfloat"
- textual header "/usr/include/c++/7.5.0/tr1/cinttypes"
- textual header "/usr/include/c++/7.5.0/tr1/climits"
- textual header "/usr/include/c++/7.5.0/tr1/cmath"
- textual header "/usr/include/c++/7.5.0/tr1/complex"
- textual header "/usr/include/c++/7.5.0/tr1/complex.h"
- textual header "/usr/include/c++/7.5.0/tr1/cstdarg"
- textual header "/usr/include/c++/7.5.0/tr1/cstdbool"
- textual header "/usr/include/c++/7.5.0/tr1/cstdint"
- textual header "/usr/include/c++/7.5.0/tr1/cstdio"
- textual header "/usr/include/c++/7.5.0/tr1/cstdlib"
- textual header "/usr/include/c++/7.5.0/tr1/ctgmath"
- textual header "/usr/include/c++/7.5.0/tr1/ctime"
- textual header "/usr/include/c++/7.5.0/tr1/ctype.h"
- textual header "/usr/include/c++/7.5.0/tr1/cwchar"
- textual header "/usr/include/c++/7.5.0/tr1/cwctype"
- textual header "/usr/include/c++/7.5.0/tr1/ell_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/exp_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/fenv.h"
- textual header "/usr/include/c++/7.5.0/tr1/float.h"
- textual header "/usr/include/c++/7.5.0/tr1/functional"
- textual header "/usr/include/c++/7.5.0/tr1/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/tr1/gamma.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable.h"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/tr1/hypergeometric.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/inttypes.h"
- textual header "/usr/include/c++/7.5.0/tr1/legendre_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/limits.h"
- textual header "/usr/include/c++/7.5.0/tr1/math.h"
- textual header "/usr/include/c++/7.5.0/tr1/memory"
- textual header "/usr/include/c++/7.5.0/tr1/modified_bessel_func.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_hermite.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_laguerre.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/random"
- textual header "/usr/include/c++/7.5.0/tr1/random.h"
- textual header "/usr/include/c++/7.5.0/tr1/random.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/regex"
- textual header "/usr/include/c++/7.5.0/tr1/riemann_zeta.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/tr1/special_function_util.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdarg.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdbool.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdint.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdio.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdlib.h"
- textual header "/usr/include/c++/7.5.0/tr1/tgmath.h"
- textual header "/usr/include/c++/7.5.0/tr1/tuple"
- textual header "/usr/include/c++/7.5.0/tr1/type_traits"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/tr1/utility"
- textual header "/usr/include/c++/7.5.0/tr1/wchar.h"
- textual header "/usr/include/c++/7.5.0/tr1/wctype.h"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/ratio"
- textual header "/usr/include/c++/7.5.0/tr2/type_traits"
- textual header "/usr/include/c++/7.5.0/tuple"
- textual header "/usr/include/c++/7.5.0/type_traits"
- textual header "/usr/include/c++/7.5.0/typeindex"
- textual header "/usr/include/c++/7.5.0/typeinfo"
- textual header "/usr/include/c++/7.5.0/unordered_map"
- textual header "/usr/include/c++/7.5.0/unordered_set"
- textual header "/usr/include/c++/7.5.0/utility"
- textual header "/usr/include/c++/7.5.0/valarray"
- textual header "/usr/include/c++/7.5.0/variant"
- textual header "/usr/include/c++/7.5.0/vector"
- textual header "/usr/include/c++/7/algorithm"
- textual header "/usr/include/c++/7/any"
- textual header "/usr/include/c++/7/array"
- textual header "/usr/include/c++/7/atomic"
- textual header "/usr/include/c++/7/backward/auto_ptr.h"
- textual header "/usr/include/c++/7/backward/backward_warning.h"
- textual header "/usr/include/c++/7/backward/binders.h"
- textual header "/usr/include/c++/7/backward/hash_fun.h"
- textual header "/usr/include/c++/7/backward/hash_map"
- textual header "/usr/include/c++/7/backward/hash_set"
- textual header "/usr/include/c++/7/backward/hashtable.h"
- textual header "/usr/include/c++/7/backward/strstream"
- textual header "/usr/include/c++/7/bits/algorithmfwd.h"
- textual header "/usr/include/c++/7/bits/alloc_traits.h"
- textual header "/usr/include/c++/7/bits/allocated_ptr.h"
- textual header "/usr/include/c++/7/bits/allocator.h"
- textual header "/usr/include/c++/7/bits/atomic_base.h"
- textual header "/usr/include/c++/7/bits/atomic_futex.h"
- textual header "/usr/include/c++/7/bits/atomic_lockfree_defines.h"
- textual header "/usr/include/c++/7/bits/basic_ios.h"
- textual header "/usr/include/c++/7/bits/basic_ios.tcc"
- textual header "/usr/include/c++/7/bits/basic_string.h"
- textual header "/usr/include/c++/7/bits/basic_string.tcc"
- textual header "/usr/include/c++/7/bits/boost_concept_check.h"
- textual header "/usr/include/c++/7/bits/c++0x_warning.h"
- textual header "/usr/include/c++/7/bits/char_traits.h"
- textual header "/usr/include/c++/7/bits/codecvt.h"
- textual header "/usr/include/c++/7/bits/concept_check.h"
- textual header "/usr/include/c++/7/bits/cpp_type_traits.h"
- textual header "/usr/include/c++/7/bits/cxxabi_forced.h"
- textual header "/usr/include/c++/7/bits/cxxabi_init_exception.h"
- textual header "/usr/include/c++/7/bits/deque.tcc"
- textual header "/usr/include/c++/7/bits/enable_special_members.h"
- textual header "/usr/include/c++/7/bits/exception.h"
- textual header "/usr/include/c++/7/bits/exception_defines.h"
- textual header "/usr/include/c++/7/bits/exception_ptr.h"
- textual header "/usr/include/c++/7/bits/forward_list.h"
- textual header "/usr/include/c++/7/bits/forward_list.tcc"
- textual header "/usr/include/c++/7/bits/fstream.tcc"
- textual header "/usr/include/c++/7/bits/functexcept.h"
- textual header "/usr/include/c++/7/bits/functional_hash.h"
- textual header "/usr/include/c++/7/bits/gslice.h"
- textual header "/usr/include/c++/7/bits/gslice_array.h"
- textual header "/usr/include/c++/7/bits/hash_bytes.h"
- textual header "/usr/include/c++/7/bits/hashtable.h"
- textual header "/usr/include/c++/7/bits/hashtable_policy.h"
- textual header "/usr/include/c++/7/bits/indirect_array.h"
- textual header "/usr/include/c++/7/bits/invoke.h"
- textual header "/usr/include/c++/7/bits/ios_base.h"
- textual header "/usr/include/c++/7/bits/istream.tcc"
- textual header "/usr/include/c++/7/bits/list.tcc"
- textual header "/usr/include/c++/7/bits/locale_classes.h"
- textual header "/usr/include/c++/7/bits/locale_classes.tcc"
- textual header "/usr/include/c++/7/bits/locale_conv.h"
- textual header "/usr/include/c++/7/bits/locale_facets.h"
- textual header "/usr/include/c++/7/bits/locale_facets.tcc"
- textual header "/usr/include/c++/7/bits/locale_facets_nonio.h"
- textual header "/usr/include/c++/7/bits/locale_facets_nonio.tcc"
- textual header "/usr/include/c++/7/bits/localefwd.h"
- textual header "/usr/include/c++/7/bits/mask_array.h"
- textual header "/usr/include/c++/7/bits/memoryfwd.h"
- textual header "/usr/include/c++/7/bits/move.h"
- textual header "/usr/include/c++/7/bits/nested_exception.h"
- textual header "/usr/include/c++/7/bits/node_handle.h"
- textual header "/usr/include/c++/7/bits/ostream.tcc"
- textual header "/usr/include/c++/7/bits/ostream_insert.h"
- textual header "/usr/include/c++/7/bits/parse_numbers.h"
- textual header "/usr/include/c++/7/bits/postypes.h"
- textual header "/usr/include/c++/7/bits/predefined_ops.h"
- textual header "/usr/include/c++/7/bits/ptr_traits.h"
- textual header "/usr/include/c++/7/bits/quoted_string.h"
- textual header "/usr/include/c++/7/bits/random.h"
- textual header "/usr/include/c++/7/bits/random.tcc"
- textual header "/usr/include/c++/7/bits/range_access.h"
- textual header "/usr/include/c++/7/bits/refwrap.h"
- textual header "/usr/include/c++/7/bits/regex.h"
- textual header "/usr/include/c++/7/bits/regex.tcc"
- textual header "/usr/include/c++/7/bits/regex_automaton.h"
- textual header "/usr/include/c++/7/bits/regex_automaton.tcc"
- textual header "/usr/include/c++/7/bits/regex_compiler.h"
- textual header "/usr/include/c++/7/bits/regex_compiler.tcc"
- textual header "/usr/include/c++/7/bits/regex_constants.h"
- textual header "/usr/include/c++/7/bits/regex_error.h"
- textual header "/usr/include/c++/7/bits/regex_executor.h"
- textual header "/usr/include/c++/7/bits/regex_executor.tcc"
- textual header "/usr/include/c++/7/bits/regex_scanner.h"
- textual header "/usr/include/c++/7/bits/regex_scanner.tcc"
- textual header "/usr/include/c++/7/bits/shared_ptr.h"
- textual header "/usr/include/c++/7/bits/shared_ptr_atomic.h"
- textual header "/usr/include/c++/7/bits/shared_ptr_base.h"
- textual header "/usr/include/c++/7/bits/slice_array.h"
- textual header "/usr/include/c++/7/bits/specfun.h"
- textual header "/usr/include/c++/7/bits/sstream.tcc"
- textual header "/usr/include/c++/7/bits/std_abs.h"
- textual header "/usr/include/c++/7/bits/std_function.h"
- textual header "/usr/include/c++/7/bits/std_mutex.h"
- textual header "/usr/include/c++/7/bits/stl_algo.h"
- textual header "/usr/include/c++/7/bits/stl_algobase.h"
- textual header "/usr/include/c++/7/bits/stl_bvector.h"
- textual header "/usr/include/c++/7/bits/stl_construct.h"
- textual header "/usr/include/c++/7/bits/stl_deque.h"
- textual header "/usr/include/c++/7/bits/stl_function.h"
- textual header "/usr/include/c++/7/bits/stl_heap.h"
- textual header "/usr/include/c++/7/bits/stl_iterator.h"
- textual header "/usr/include/c++/7/bits/stl_iterator_base_funcs.h"
- textual header "/usr/include/c++/7/bits/stl_iterator_base_types.h"
- textual header "/usr/include/c++/7/bits/stl_list.h"
- textual header "/usr/include/c++/7/bits/stl_map.h"
- textual header "/usr/include/c++/7/bits/stl_multimap.h"
- textual header "/usr/include/c++/7/bits/stl_multiset.h"
- textual header "/usr/include/c++/7/bits/stl_numeric.h"
- textual header "/usr/include/c++/7/bits/stl_pair.h"
- textual header "/usr/include/c++/7/bits/stl_queue.h"
- textual header "/usr/include/c++/7/bits/stl_raw_storage_iter.h"
- textual header "/usr/include/c++/7/bits/stl_relops.h"
- textual header "/usr/include/c++/7/bits/stl_set.h"
- textual header "/usr/include/c++/7/bits/stl_stack.h"
- textual header "/usr/include/c++/7/bits/stl_tempbuf.h"
- textual header "/usr/include/c++/7/bits/stl_tree.h"
- textual header "/usr/include/c++/7/bits/stl_uninitialized.h"
- textual header "/usr/include/c++/7/bits/stl_vector.h"
- textual header "/usr/include/c++/7/bits/stream_iterator.h"
- textual header "/usr/include/c++/7/bits/streambuf.tcc"
- textual header "/usr/include/c++/7/bits/streambuf_iterator.h"
- textual header "/usr/include/c++/7/bits/string_view.tcc"
- textual header "/usr/include/c++/7/bits/stringfwd.h"
- textual header "/usr/include/c++/7/bits/uniform_int_dist.h"
- textual header "/usr/include/c++/7/bits/unique_ptr.h"
- textual header "/usr/include/c++/7/bits/unordered_map.h"
- textual header "/usr/include/c++/7/bits/unordered_set.h"
- textual header "/usr/include/c++/7/bits/uses_allocator.h"
- textual header "/usr/include/c++/7/bits/valarray_after.h"
- textual header "/usr/include/c++/7/bits/valarray_array.h"
- textual header "/usr/include/c++/7/bits/valarray_array.tcc"
- textual header "/usr/include/c++/7/bits/valarray_before.h"
- textual header "/usr/include/c++/7/bits/vector.tcc"
- textual header "/usr/include/c++/7/bitset"
- textual header "/usr/include/c++/7/cassert"
- textual header "/usr/include/c++/7/ccomplex"
- textual header "/usr/include/c++/7/cctype"
- textual header "/usr/include/c++/7/cerrno"
- textual header "/usr/include/c++/7/cfenv"
- textual header "/usr/include/c++/7/cfloat"
- textual header "/usr/include/c++/7/chrono"
- textual header "/usr/include/c++/7/cinttypes"
- textual header "/usr/include/c++/7/ciso646"
- textual header "/usr/include/c++/7/climits"
- textual header "/usr/include/c++/7/clocale"
- textual header "/usr/include/c++/7/cmath"
- textual header "/usr/include/c++/7/codecvt"
- textual header "/usr/include/c++/7/complex"
- textual header "/usr/include/c++/7/complex.h"
- textual header "/usr/include/c++/7/condition_variable"
- textual header "/usr/include/c++/7/csetjmp"
- textual header "/usr/include/c++/7/csignal"
- textual header "/usr/include/c++/7/cstdalign"
- textual header "/usr/include/c++/7/cstdarg"
- textual header "/usr/include/c++/7/cstdbool"
- textual header "/usr/include/c++/7/cstddef"
- textual header "/usr/include/c++/7/cstdint"
- textual header "/usr/include/c++/7/cstdio"
- textual header "/usr/include/c++/7/cstdlib"
- textual header "/usr/include/c++/7/cstring"
- textual header "/usr/include/c++/7/ctgmath"
- textual header "/usr/include/c++/7/ctime"
- textual header "/usr/include/c++/7/cuchar"
- textual header "/usr/include/c++/7/cwchar"
- textual header "/usr/include/c++/7/cwctype"
- textual header "/usr/include/c++/7/cxxabi.h"
- textual header "/usr/include/c++/7/debug/array"
- textual header "/usr/include/c++/7/debug/assertions.h"
- textual header "/usr/include/c++/7/debug/bitset"
- textual header "/usr/include/c++/7/debug/debug.h"
- textual header "/usr/include/c++/7/debug/deque"
- textual header "/usr/include/c++/7/debug/formatter.h"
- textual header "/usr/include/c++/7/debug/forward_list"
- textual header "/usr/include/c++/7/debug/functions.h"
- textual header "/usr/include/c++/7/debug/helper_functions.h"
- textual header "/usr/include/c++/7/debug/list"
- textual header "/usr/include/c++/7/debug/macros.h"
- textual header "/usr/include/c++/7/debug/map"
- textual header "/usr/include/c++/7/debug/map.h"
- textual header "/usr/include/c++/7/debug/multimap.h"
- textual header "/usr/include/c++/7/debug/multiset.h"
- textual header "/usr/include/c++/7/debug/safe_base.h"
- textual header "/usr/include/c++/7/debug/safe_container.h"
- textual header "/usr/include/c++/7/debug/safe_iterator.h"
- textual header "/usr/include/c++/7/debug/safe_iterator.tcc"
- textual header "/usr/include/c++/7/debug/safe_local_iterator.h"
- textual header "/usr/include/c++/7/debug/safe_local_iterator.tcc"
- textual header "/usr/include/c++/7/debug/safe_sequence.h"
- textual header "/usr/include/c++/7/debug/safe_sequence.tcc"
- textual header "/usr/include/c++/7/debug/safe_unordered_base.h"
- textual header "/usr/include/c++/7/debug/safe_unordered_container.h"
- textual header "/usr/include/c++/7/debug/safe_unordered_container.tcc"
- textual header "/usr/include/c++/7/debug/set"
- textual header "/usr/include/c++/7/debug/set.h"
- textual header "/usr/include/c++/7/debug/stl_iterator.h"
- textual header "/usr/include/c++/7/debug/string"
- textual header "/usr/include/c++/7/debug/unordered_map"
- textual header "/usr/include/c++/7/debug/unordered_set"
- textual header "/usr/include/c++/7/debug/vector"
- textual header "/usr/include/c++/7/decimal/decimal"
- textual header "/usr/include/c++/7/decimal/decimal.h"
- textual header "/usr/include/c++/7/deque"
- textual header "/usr/include/c++/7/exception"
- textual header "/usr/include/c++/7/experimental/algorithm"
- textual header "/usr/include/c++/7/experimental/any"
- textual header "/usr/include/c++/7/experimental/array"
- textual header "/usr/include/c++/7/experimental/bits/erase_if.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_dir.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_fwd.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_ops.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_path.h"
- textual header "/usr/include/c++/7/experimental/bits/lfts_config.h"
- textual header "/usr/include/c++/7/experimental/bits/shared_ptr.h"
- textual header "/usr/include/c++/7/experimental/bits/string_view.tcc"
- textual header "/usr/include/c++/7/experimental/chrono"
- textual header "/usr/include/c++/7/experimental/deque"
- textual header "/usr/include/c++/7/experimental/filesystem"
- textual header "/usr/include/c++/7/experimental/forward_list"
- textual header "/usr/include/c++/7/experimental/functional"
- textual header "/usr/include/c++/7/experimental/iterator"
- textual header "/usr/include/c++/7/experimental/list"
- textual header "/usr/include/c++/7/experimental/map"
- textual header "/usr/include/c++/7/experimental/memory"
- textual header "/usr/include/c++/7/experimental/memory_resource"
- textual header "/usr/include/c++/7/experimental/numeric"
- textual header "/usr/include/c++/7/experimental/optional"
- textual header "/usr/include/c++/7/experimental/propagate_const"
- textual header "/usr/include/c++/7/experimental/random"
- textual header "/usr/include/c++/7/experimental/ratio"
- textual header "/usr/include/c++/7/experimental/regex"
- textual header "/usr/include/c++/7/experimental/set"
- textual header "/usr/include/c++/7/experimental/source_location"
- textual header "/usr/include/c++/7/experimental/string"
- textual header "/usr/include/c++/7/experimental/string_view"
- textual header "/usr/include/c++/7/experimental/system_error"
- textual header "/usr/include/c++/7/experimental/tuple"
- textual header "/usr/include/c++/7/experimental/type_traits"
- textual header "/usr/include/c++/7/experimental/unordered_map"
- textual header "/usr/include/c++/7/experimental/unordered_set"
- textual header "/usr/include/c++/7/experimental/utility"
- textual header "/usr/include/c++/7/experimental/vector"
- textual header "/usr/include/c++/7/ext/algorithm"
- textual header "/usr/include/c++/7/ext/aligned_buffer.h"
- textual header "/usr/include/c++/7/ext/alloc_traits.h"
- textual header "/usr/include/c++/7/ext/array_allocator.h"
- textual header "/usr/include/c++/7/ext/atomicity.h"
- textual header "/usr/include/c++/7/ext/bitmap_allocator.h"
- textual header "/usr/include/c++/7/ext/cast.h"
- textual header "/usr/include/c++/7/ext/cmath"
- textual header "/usr/include/c++/7/ext/codecvt_specializations.h"
- textual header "/usr/include/c++/7/ext/concurrence.h"
- textual header "/usr/include/c++/7/ext/debug_allocator.h"
- textual header "/usr/include/c++/7/ext/enc_filebuf.h"
- textual header "/usr/include/c++/7/ext/extptr_allocator.h"
- textual header "/usr/include/c++/7/ext/functional"
- textual header "/usr/include/c++/7/ext/hash_map"
- textual header "/usr/include/c++/7/ext/hash_set"
- textual header "/usr/include/c++/7/ext/iterator"
- textual header "/usr/include/c++/7/ext/malloc_allocator.h"
- textual header "/usr/include/c++/7/ext/memory"
- textual header "/usr/include/c++/7/ext/mt_allocator.h"
- textual header "/usr/include/c++/7/ext/new_allocator.h"
- textual header "/usr/include/c++/7/ext/numeric"
- textual header "/usr/include/c++/7/ext/numeric_traits.h"
- textual header "/usr/include/c++/7/ext/pb_ds/assoc_container.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/entry_pred.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/resize_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/branch_policy/branch_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/branch_policy/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cond_dealtor.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/container_base_dispatch.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/debug_map_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/eq_fn/eq_by_less.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/lu_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/priority_queue_base_dispatch.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/node.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/node.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/standard_policies.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_trace_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/type_utils.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/types_traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/exception.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/hash_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/list_update_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/priority_queue.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/tag_and_trait.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/tree_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/trie_policy.hpp"
- textual header "/usr/include/c++/7/ext/pod_char_traits.h"
- textual header "/usr/include/c++/7/ext/pointer.h"
- textual header "/usr/include/c++/7/ext/pool_allocator.h"
- textual header "/usr/include/c++/7/ext/random"
- textual header "/usr/include/c++/7/ext/random.tcc"
- textual header "/usr/include/c++/7/ext/rb_tree"
- textual header "/usr/include/c++/7/ext/rc_string_base.h"
- textual header "/usr/include/c++/7/ext/rope"
- textual header "/usr/include/c++/7/ext/ropeimpl.h"
- textual header "/usr/include/c++/7/ext/slist"
- textual header "/usr/include/c++/7/ext/sso_string_base.h"
- textual header "/usr/include/c++/7/ext/stdio_filebuf.h"
- textual header "/usr/include/c++/7/ext/stdio_sync_filebuf.h"
- textual header "/usr/include/c++/7/ext/string_conversions.h"
- textual header "/usr/include/c++/7/ext/throw_allocator.h"
- textual header "/usr/include/c++/7/ext/type_traits.h"
- textual header "/usr/include/c++/7/ext/typelist.h"
- textual header "/usr/include/c++/7/ext/vstring.h"
- textual header "/usr/include/c++/7/ext/vstring.tcc"
- textual header "/usr/include/c++/7/ext/vstring_fwd.h"
- textual header "/usr/include/c++/7/ext/vstring_util.h"
- textual header "/usr/include/c++/7/fenv.h"
- textual header "/usr/include/c++/7/forward_list"
- textual header "/usr/include/c++/7/fstream"
- textual header "/usr/include/c++/7/functional"
- textual header "/usr/include/c++/7/future"
- textual header "/usr/include/c++/7/initializer_list"
- textual header "/usr/include/c++/7/iomanip"
- textual header "/usr/include/c++/7/ios"
- textual header "/usr/include/c++/7/iosfwd"
- textual header "/usr/include/c++/7/iostream"
- textual header "/usr/include/c++/7/istream"
- textual header "/usr/include/c++/7/iterator"
- textual header "/usr/include/c++/7/limits"
- textual header "/usr/include/c++/7/list"
- textual header "/usr/include/c++/7/locale"
- textual header "/usr/include/c++/7/map"
- textual header "/usr/include/c++/7/math.h"
- textual header "/usr/include/c++/7/memory"
- textual header "/usr/include/c++/7/mutex"
- textual header "/usr/include/c++/7/new"
- textual header "/usr/include/c++/7/numeric"
- textual header "/usr/include/c++/7/optional"
- textual header "/usr/include/c++/7/ostream"
- textual header "/usr/include/c++/7/parallel/algo.h"
- textual header "/usr/include/c++/7/parallel/algobase.h"
- textual header "/usr/include/c++/7/parallel/algorithm"
- textual header "/usr/include/c++/7/parallel/algorithmfwd.h"
- textual header "/usr/include/c++/7/parallel/balanced_quicksort.h"
- textual header "/usr/include/c++/7/parallel/base.h"
- textual header "/usr/include/c++/7/parallel/basic_iterator.h"
- textual header "/usr/include/c++/7/parallel/checkers.h"
- textual header "/usr/include/c++/7/parallel/compatibility.h"
- textual header "/usr/include/c++/7/parallel/compiletime_settings.h"
- textual header "/usr/include/c++/7/parallel/equally_split.h"
- textual header "/usr/include/c++/7/parallel/features.h"
- textual header "/usr/include/c++/7/parallel/find.h"
- textual header "/usr/include/c++/7/parallel/find_selectors.h"
- textual header "/usr/include/c++/7/parallel/for_each.h"
- textual header "/usr/include/c++/7/parallel/for_each_selectors.h"
- textual header "/usr/include/c++/7/parallel/iterator.h"
- textual header "/usr/include/c++/7/parallel/list_partition.h"
- textual header "/usr/include/c++/7/parallel/losertree.h"
- textual header "/usr/include/c++/7/parallel/merge.h"
- textual header "/usr/include/c++/7/parallel/multiseq_selection.h"
- textual header "/usr/include/c++/7/parallel/multiway_merge.h"
- textual header "/usr/include/c++/7/parallel/multiway_mergesort.h"
- textual header "/usr/include/c++/7/parallel/numeric"
- textual header "/usr/include/c++/7/parallel/numericfwd.h"
- textual header "/usr/include/c++/7/parallel/omp_loop.h"
- textual header "/usr/include/c++/7/parallel/omp_loop_static.h"
- textual header "/usr/include/c++/7/parallel/par_loop.h"
- textual header "/usr/include/c++/7/parallel/parallel.h"
- textual header "/usr/include/c++/7/parallel/partial_sum.h"
- textual header "/usr/include/c++/7/parallel/partition.h"
- textual header "/usr/include/c++/7/parallel/queue.h"
- textual header "/usr/include/c++/7/parallel/quicksort.h"
- textual header "/usr/include/c++/7/parallel/random_number.h"
- textual header "/usr/include/c++/7/parallel/random_shuffle.h"
- textual header "/usr/include/c++/7/parallel/search.h"
- textual header "/usr/include/c++/7/parallel/set_operations.h"
- textual header "/usr/include/c++/7/parallel/settings.h"
- textual header "/usr/include/c++/7/parallel/sort.h"
- textual header "/usr/include/c++/7/parallel/tags.h"
- textual header "/usr/include/c++/7/parallel/types.h"
- textual header "/usr/include/c++/7/parallel/unique_copy.h"
- textual header "/usr/include/c++/7/parallel/workstealing.h"
- textual header "/usr/include/c++/7/profile/array"
- textual header "/usr/include/c++/7/profile/base.h"
- textual header "/usr/include/c++/7/profile/bitset"
- textual header "/usr/include/c++/7/profile/deque"
- textual header "/usr/include/c++/7/profile/forward_list"
- textual header "/usr/include/c++/7/profile/impl/profiler.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_algos.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_container_size.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_hash_func.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_hashtable_size.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_list_to_slist.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_list_to_vector.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_map_to_unordered_map.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_node.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_state.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_trace.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_vector_size.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_vector_to_list.h"
- textual header "/usr/include/c++/7/profile/iterator_tracker.h"
- textual header "/usr/include/c++/7/profile/list"
- textual header "/usr/include/c++/7/profile/map"
- textual header "/usr/include/c++/7/profile/map.h"
- textual header "/usr/include/c++/7/profile/multimap.h"
- textual header "/usr/include/c++/7/profile/multiset.h"
- textual header "/usr/include/c++/7/profile/ordered_base.h"
- textual header "/usr/include/c++/7/profile/set"
- textual header "/usr/include/c++/7/profile/set.h"
- textual header "/usr/include/c++/7/profile/unordered_base.h"
- textual header "/usr/include/c++/7/profile/unordered_map"
- textual header "/usr/include/c++/7/profile/unordered_set"
- textual header "/usr/include/c++/7/profile/vector"
- textual header "/usr/include/c++/7/queue"
- textual header "/usr/include/c++/7/random"
- textual header "/usr/include/c++/7/ratio"
- textual header "/usr/include/c++/7/regex"
- textual header "/usr/include/c++/7/scoped_allocator"
- textual header "/usr/include/c++/7/set"
- textual header "/usr/include/c++/7/shared_mutex"
- textual header "/usr/include/c++/7/sstream"
- textual header "/usr/include/c++/7/stack"
- textual header "/usr/include/c++/7/stdexcept"
- textual header "/usr/include/c++/7/stdlib.h"
- textual header "/usr/include/c++/7/streambuf"
- textual header "/usr/include/c++/7/string"
- textual header "/usr/include/c++/7/string_view"
- textual header "/usr/include/c++/7/system_error"
- textual header "/usr/include/c++/7/tgmath.h"
- textual header "/usr/include/c++/7/thread"
- textual header "/usr/include/c++/7/tr1/array"
- textual header "/usr/include/c++/7/tr1/bessel_function.tcc"
- textual header "/usr/include/c++/7/tr1/beta_function.tcc"
- textual header "/usr/include/c++/7/tr1/ccomplex"
- textual header "/usr/include/c++/7/tr1/cctype"
- textual header "/usr/include/c++/7/tr1/cfenv"
- textual header "/usr/include/c++/7/tr1/cfloat"
- textual header "/usr/include/c++/7/tr1/cinttypes"
- textual header "/usr/include/c++/7/tr1/climits"
- textual header "/usr/include/c++/7/tr1/cmath"
- textual header "/usr/include/c++/7/tr1/complex"
- textual header "/usr/include/c++/7/tr1/complex.h"
- textual header "/usr/include/c++/7/tr1/cstdarg"
- textual header "/usr/include/c++/7/tr1/cstdbool"
- textual header "/usr/include/c++/7/tr1/cstdint"
- textual header "/usr/include/c++/7/tr1/cstdio"
- textual header "/usr/include/c++/7/tr1/cstdlib"
- textual header "/usr/include/c++/7/tr1/ctgmath"
- textual header "/usr/include/c++/7/tr1/ctime"
- textual header "/usr/include/c++/7/tr1/ctype.h"
- textual header "/usr/include/c++/7/tr1/cwchar"
- textual header "/usr/include/c++/7/tr1/cwctype"
- textual header "/usr/include/c++/7/tr1/ell_integral.tcc"
- textual header "/usr/include/c++/7/tr1/exp_integral.tcc"
- textual header "/usr/include/c++/7/tr1/fenv.h"
- textual header "/usr/include/c++/7/tr1/float.h"
- textual header "/usr/include/c++/7/tr1/functional"
- textual header "/usr/include/c++/7/tr1/functional_hash.h"
- textual header "/usr/include/c++/7/tr1/gamma.tcc"
- textual header "/usr/include/c++/7/tr1/hashtable.h"
- textual header "/usr/include/c++/7/tr1/hashtable_policy.h"
- textual header "/usr/include/c++/7/tr1/hypergeometric.tcc"
- textual header "/usr/include/c++/7/tr1/inttypes.h"
- textual header "/usr/include/c++/7/tr1/legendre_function.tcc"
- textual header "/usr/include/c++/7/tr1/limits.h"
- textual header "/usr/include/c++/7/tr1/math.h"
- textual header "/usr/include/c++/7/tr1/memory"
- textual header "/usr/include/c++/7/tr1/modified_bessel_func.tcc"
- textual header "/usr/include/c++/7/tr1/poly_hermite.tcc"
- textual header "/usr/include/c++/7/tr1/poly_laguerre.tcc"
- textual header "/usr/include/c++/7/tr1/random"
- textual header "/usr/include/c++/7/tr1/random.h"
- textual header "/usr/include/c++/7/tr1/random.tcc"
- textual header "/usr/include/c++/7/tr1/regex"
- textual header "/usr/include/c++/7/tr1/riemann_zeta.tcc"
- textual header "/usr/include/c++/7/tr1/shared_ptr.h"
- textual header "/usr/include/c++/7/tr1/special_function_util.h"
- textual header "/usr/include/c++/7/tr1/stdarg.h"
- textual header "/usr/include/c++/7/tr1/stdbool.h"
- textual header "/usr/include/c++/7/tr1/stdint.h"
- textual header "/usr/include/c++/7/tr1/stdio.h"
- textual header "/usr/include/c++/7/tr1/stdlib.h"
- textual header "/usr/include/c++/7/tr1/tgmath.h"
- textual header "/usr/include/c++/7/tr1/tuple"
- textual header "/usr/include/c++/7/tr1/type_traits"
- textual header "/usr/include/c++/7/tr1/unordered_map"
- textual header "/usr/include/c++/7/tr1/unordered_map.h"
- textual header "/usr/include/c++/7/tr1/unordered_set"
- textual header "/usr/include/c++/7/tr1/unordered_set.h"
- textual header "/usr/include/c++/7/tr1/utility"
- textual header "/usr/include/c++/7/tr1/wchar.h"
- textual header "/usr/include/c++/7/tr1/wctype.h"
- textual header "/usr/include/c++/7/tr2/bool_set"
- textual header "/usr/include/c++/7/tr2/bool_set.tcc"
- textual header "/usr/include/c++/7/tr2/dynamic_bitset"
- textual header "/usr/include/c++/7/tr2/dynamic_bitset.tcc"
- textual header "/usr/include/c++/7/tr2/ratio"
- textual header "/usr/include/c++/7/tr2/type_traits"
- textual header "/usr/include/c++/7/tuple"
- textual header "/usr/include/c++/7/type_traits"
- textual header "/usr/include/c++/7/typeindex"
- textual header "/usr/include/c++/7/typeinfo"
- textual header "/usr/include/c++/7/unordered_map"
- textual header "/usr/include/c++/7/unordered_set"
- textual header "/usr/include/c++/7/utility"
- textual header "/usr/include/c++/7/valarray"
- textual header "/usr/include/c++/7/variant"
- textual header "/usr/include/c++/7/vector"
- textual header "/usr/include/complex.h"
- textual header "/usr/include/cpio.h"
- textual header "/usr/include/crypt.h"
- textual header "/usr/include/ctype.h"
- textual header "/usr/include/dirent.h"
- textual header "/usr/include/dlfcn.h"
- textual header "/usr/include/drm/amdgpu_drm.h"
- textual header "/usr/include/drm/armada_drm.h"
- textual header "/usr/include/drm/drm.h"
- textual header "/usr/include/drm/drm_fourcc.h"
- textual header "/usr/include/drm/drm_mode.h"
- textual header "/usr/include/drm/drm_sarea.h"
- textual header "/usr/include/drm/etnaviv_drm.h"
- textual header "/usr/include/drm/exynos_drm.h"
- textual header "/usr/include/drm/i810_drm.h"
- textual header "/usr/include/drm/i915_drm.h"
- textual header "/usr/include/drm/mga_drm.h"
- textual header "/usr/include/drm/msm_drm.h"
- textual header "/usr/include/drm/nouveau_drm.h"
- textual header "/usr/include/drm/omap_drm.h"
- textual header "/usr/include/drm/qxl_drm.h"
- textual header "/usr/include/drm/r128_drm.h"
- textual header "/usr/include/drm/radeon_drm.h"
- textual header "/usr/include/drm/savage_drm.h"
- textual header "/usr/include/drm/sis_drm.h"
- textual header "/usr/include/drm/tegra_drm.h"
- textual header "/usr/include/drm/vc4_drm.h"
- textual header "/usr/include/drm/vgem_drm.h"
- textual header "/usr/include/drm/via_drm.h"
- textual header "/usr/include/drm/virtgpu_drm.h"
- textual header "/usr/include/drm/vmwgfx_drm.h"
- textual header "/usr/include/elf.h"
- textual header "/usr/include/endian.h"
- textual header "/usr/include/envz.h"
- textual header "/usr/include/err.h"
- textual header "/usr/include/errno.h"
- textual header "/usr/include/error.h"
- textual header "/usr/include/execinfo.h"
- textual header "/usr/include/expat.h"
- textual header "/usr/include/expat_external.h"
- textual header "/usr/include/fcntl.h"
- textual header "/usr/include/features.h"
- textual header "/usr/include/fenv.h"
- textual header "/usr/include/fmtmsg.h"
- textual header "/usr/include/fnmatch.h"
- textual header "/usr/include/fstab.h"
- textual header "/usr/include/fts.h"
- textual header "/usr/include/ftw.h"
- textual header "/usr/include/gconv.h"
- textual header "/usr/include/getopt.h"
- textual header "/usr/include/glob.h"
- textual header "/usr/include/gmpxx.h"
- textual header "/usr/include/gnu-versions.h"
- textual header "/usr/include/gnumake.h"
- textual header "/usr/include/grp.h"
- textual header "/usr/include/gshadow.h"
- textual header "/usr/include/iconv.h"
- textual header "/usr/include/ifaddrs.h"
- textual header "/usr/include/inttypes.h"
- textual header "/usr/include/langinfo.h"
- textual header "/usr/include/lastlog.h"
- textual header "/usr/include/libgen.h"
- textual header "/usr/include/libintl.h"
- textual header "/usr/include/libio.h"
- textual header "/usr/include/limits.h"
- textual header "/usr/include/link.h"
- textual header "/usr/include/linux/a.out.h"
- textual header "/usr/include/linux/acct.h"
- textual header "/usr/include/linux/adb.h"
- textual header "/usr/include/linux/adfs_fs.h"
- textual header "/usr/include/linux/affs_hardblocks.h"
- textual header "/usr/include/linux/agpgart.h"
- textual header "/usr/include/linux/aio_abi.h"
- textual header "/usr/include/linux/am437x-vpfe.h"
- textual header "/usr/include/linux/android/binder.h"
- textual header "/usr/include/linux/apm_bios.h"
- textual header "/usr/include/linux/arcfb.h"
- textual header "/usr/include/linux/arm_sdei.h"
- textual header "/usr/include/linux/aspeed-lpc-ctrl.h"
- textual header "/usr/include/linux/atalk.h"
- textual header "/usr/include/linux/atm.h"
- textual header "/usr/include/linux/atm_eni.h"
- textual header "/usr/include/linux/atm_he.h"
- textual header "/usr/include/linux/atm_idt77105.h"
- textual header "/usr/include/linux/atm_nicstar.h"
- textual header "/usr/include/linux/atm_tcp.h"
- textual header "/usr/include/linux/atm_zatm.h"
- textual header "/usr/include/linux/atmapi.h"
- textual header "/usr/include/linux/atmarp.h"
- textual header "/usr/include/linux/atmbr2684.h"
- textual header "/usr/include/linux/atmclip.h"
- textual header "/usr/include/linux/atmdev.h"
- textual header "/usr/include/linux/atmioc.h"
- textual header "/usr/include/linux/atmlec.h"
- textual header "/usr/include/linux/atmmpc.h"
- textual header "/usr/include/linux/atmppp.h"
- textual header "/usr/include/linux/atmsap.h"
- textual header "/usr/include/linux/atmsvc.h"
- textual header "/usr/include/linux/audit.h"
- textual header "/usr/include/linux/aufs_type.h"
- textual header "/usr/include/linux/auto_dev-ioctl.h"
- textual header "/usr/include/linux/auto_fs.h"
- textual header "/usr/include/linux/auto_fs4.h"
- textual header "/usr/include/linux/auxvec.h"
- textual header "/usr/include/linux/ax25.h"
- textual header "/usr/include/linux/b1lli.h"
- textual header "/usr/include/linux/batman_adv.h"
- textual header "/usr/include/linux/baycom.h"
- textual header "/usr/include/linux/bcache.h"
- textual header "/usr/include/linux/bcm933xx_hcs.h"
- textual header "/usr/include/linux/bfs_fs.h"
- textual header "/usr/include/linux/binfmts.h"
- textual header "/usr/include/linux/blkpg.h"
- textual header "/usr/include/linux/blktrace_api.h"
- textual header "/usr/include/linux/blkzoned.h"
- textual header "/usr/include/linux/bpf.h"
- textual header "/usr/include/linux/bpf_common.h"
- textual header "/usr/include/linux/bpf_perf_event.h"
- textual header "/usr/include/linux/bpqether.h"
- textual header "/usr/include/linux/bsg.h"
- textual header "/usr/include/linux/bt-bmc.h"
- textual header "/usr/include/linux/btrfs.h"
- textual header "/usr/include/linux/btrfs_tree.h"
- textual header "/usr/include/linux/byteorder/big_endian.h"
- textual header "/usr/include/linux/byteorder/little_endian.h"
- textual header "/usr/include/linux/caif/caif_socket.h"
- textual header "/usr/include/linux/caif/if_caif.h"
- textual header "/usr/include/linux/can.h"
- textual header "/usr/include/linux/can/bcm.h"
- textual header "/usr/include/linux/can/error.h"
- textual header "/usr/include/linux/can/gw.h"
- textual header "/usr/include/linux/can/netlink.h"
- textual header "/usr/include/linux/can/raw.h"
- textual header "/usr/include/linux/can/vxcan.h"
- textual header "/usr/include/linux/capability.h"
- textual header "/usr/include/linux/capi.h"
- textual header "/usr/include/linux/cciss_defs.h"
- textual header "/usr/include/linux/cciss_ioctl.h"
- textual header "/usr/include/linux/cdrom.h"
- textual header "/usr/include/linux/cec-funcs.h"
- textual header "/usr/include/linux/cec.h"
- textual header "/usr/include/linux/cgroupstats.h"
- textual header "/usr/include/linux/chio.h"
- textual header "/usr/include/linux/cifs/cifs_mount.h"
- textual header "/usr/include/linux/cm4000_cs.h"
- textual header "/usr/include/linux/cn_proc.h"
- textual header "/usr/include/linux/coda.h"
- textual header "/usr/include/linux/coda_psdev.h"
- textual header "/usr/include/linux/coff.h"
- textual header "/usr/include/linux/connector.h"
- textual header "/usr/include/linux/const.h"
- textual header "/usr/include/linux/coresight-stm.h"
- textual header "/usr/include/linux/cramfs_fs.h"
- textual header "/usr/include/linux/cryptouser.h"
- textual header "/usr/include/linux/cuda.h"
- textual header "/usr/include/linux/cyclades.h"
- textual header "/usr/include/linux/cycx_cfm.h"
- textual header "/usr/include/linux/dcbnl.h"
- textual header "/usr/include/linux/dccp.h"
- textual header "/usr/include/linux/devlink.h"
- textual header "/usr/include/linux/dlm.h"
- textual header "/usr/include/linux/dlm_device.h"
- textual header "/usr/include/linux/dlm_netlink.h"
- textual header "/usr/include/linux/dlm_plock.h"
- textual header "/usr/include/linux/dlmconstants.h"
- textual header "/usr/include/linux/dm-ioctl.h"
- textual header "/usr/include/linux/dm-log-userspace.h"
- textual header "/usr/include/linux/dma-buf.h"
- textual header "/usr/include/linux/dn.h"
- textual header "/usr/include/linux/dqblk_xfs.h"
- textual header "/usr/include/linux/dvb/audio.h"
- textual header "/usr/include/linux/dvb/ca.h"
- textual header "/usr/include/linux/dvb/dmx.h"
- textual header "/usr/include/linux/dvb/frontend.h"
- textual header "/usr/include/linux/dvb/net.h"
- textual header "/usr/include/linux/dvb/osd.h"
- textual header "/usr/include/linux/dvb/version.h"
- textual header "/usr/include/linux/dvb/video.h"
- textual header "/usr/include/linux/edd.h"
- textual header "/usr/include/linux/efs_fs_sb.h"
- textual header "/usr/include/linux/elf-em.h"
- textual header "/usr/include/linux/elf-fdpic.h"
- textual header "/usr/include/linux/elf.h"
- textual header "/usr/include/linux/elfcore.h"
- textual header "/usr/include/linux/errno.h"
- textual header "/usr/include/linux/errqueue.h"
- textual header "/usr/include/linux/ethtool.h"
- textual header "/usr/include/linux/eventpoll.h"
- textual header "/usr/include/linux/fadvise.h"
- textual header "/usr/include/linux/falloc.h"
- textual header "/usr/include/linux/fanotify.h"
- textual header "/usr/include/linux/fb.h"
- textual header "/usr/include/linux/fcntl.h"
- textual header "/usr/include/linux/fd.h"
- textual header "/usr/include/linux/fdreg.h"
- textual header "/usr/include/linux/fib_rules.h"
- textual header "/usr/include/linux/fiemap.h"
- textual header "/usr/include/linux/filter.h"
- textual header "/usr/include/linux/firewire-cdev.h"
- textual header "/usr/include/linux/firewire-constants.h"
- textual header "/usr/include/linux/flat.h"
- textual header "/usr/include/linux/fou.h"
- textual header "/usr/include/linux/fs.h"
- textual header "/usr/include/linux/fsl_hypervisor.h"
- textual header "/usr/include/linux/fsmap.h"
- textual header "/usr/include/linux/fuse.h"
- textual header "/usr/include/linux/futex.h"
- textual header "/usr/include/linux/gameport.h"
- textual header "/usr/include/linux/gen_stats.h"
- textual header "/usr/include/linux/genetlink.h"
- textual header "/usr/include/linux/genwqe/genwqe_card.h"
- textual header "/usr/include/linux/gfs2_ondisk.h"
- textual header "/usr/include/linux/gigaset_dev.h"
- textual header "/usr/include/linux/gpio.h"
- textual header "/usr/include/linux/gsmmux.h"
- textual header "/usr/include/linux/gtp.h"
- textual header "/usr/include/linux/hash_info.h"
- textual header "/usr/include/linux/hdlc.h"
- textual header "/usr/include/linux/hdlc/ioctl.h"
- textual header "/usr/include/linux/hdlcdrv.h"
- textual header "/usr/include/linux/hdreg.h"
- textual header "/usr/include/linux/hid.h"
- textual header "/usr/include/linux/hiddev.h"
- textual header "/usr/include/linux/hidraw.h"
- textual header "/usr/include/linux/hpet.h"
- textual header "/usr/include/linux/hsi/cs-protocol.h"
- textual header "/usr/include/linux/hsi/hsi_char.h"
- textual header "/usr/include/linux/hsr_netlink.h"
- textual header "/usr/include/linux/hw_breakpoint.h"
- textual header "/usr/include/linux/hyperv.h"
- textual header "/usr/include/linux/hysdn_if.h"
- textual header "/usr/include/linux/i2c-dev.h"
- textual header "/usr/include/linux/i2c.h"
- textual header "/usr/include/linux/i2o-dev.h"
- textual header "/usr/include/linux/i8k.h"
- textual header "/usr/include/linux/icmp.h"
- textual header "/usr/include/linux/icmpv6.h"
- textual header "/usr/include/linux/if.h"
- textual header "/usr/include/linux/if_addr.h"
- textual header "/usr/include/linux/if_addrlabel.h"
- textual header "/usr/include/linux/if_alg.h"
- textual header "/usr/include/linux/if_arcnet.h"
- textual header "/usr/include/linux/if_arp.h"
- textual header "/usr/include/linux/if_bonding.h"
- textual header "/usr/include/linux/if_bridge.h"
- textual header "/usr/include/linux/if_cablemodem.h"
- textual header "/usr/include/linux/if_eql.h"
- textual header "/usr/include/linux/if_ether.h"
- textual header "/usr/include/linux/if_fc.h"
- textual header "/usr/include/linux/if_fddi.h"
- textual header "/usr/include/linux/if_frad.h"
- textual header "/usr/include/linux/if_hippi.h"
- textual header "/usr/include/linux/if_infiniband.h"
- textual header "/usr/include/linux/if_link.h"
- textual header "/usr/include/linux/if_ltalk.h"
- textual header "/usr/include/linux/if_macsec.h"
- textual header "/usr/include/linux/if_packet.h"
- textual header "/usr/include/linux/if_phonet.h"
- textual header "/usr/include/linux/if_plip.h"
- textual header "/usr/include/linux/if_ppp.h"
- textual header "/usr/include/linux/if_pppol2tp.h"
- textual header "/usr/include/linux/if_pppox.h"
- textual header "/usr/include/linux/if_slip.h"
- textual header "/usr/include/linux/if_team.h"
- textual header "/usr/include/linux/if_tun.h"
- textual header "/usr/include/linux/if_tunnel.h"
- textual header "/usr/include/linux/if_vlan.h"
- textual header "/usr/include/linux/if_x25.h"
- textual header "/usr/include/linux/ife.h"
- textual header "/usr/include/linux/igmp.h"
- textual header "/usr/include/linux/iio/events.h"
- textual header "/usr/include/linux/iio/types.h"
- textual header "/usr/include/linux/ila.h"
- textual header "/usr/include/linux/in.h"
- textual header "/usr/include/linux/in6.h"
- textual header "/usr/include/linux/in_route.h"
- textual header "/usr/include/linux/inet_diag.h"
- textual header "/usr/include/linux/inotify.h"
- textual header "/usr/include/linux/input-event-codes.h"
- textual header "/usr/include/linux/input.h"
- textual header "/usr/include/linux/ioctl.h"
- textual header "/usr/include/linux/ip.h"
- textual header "/usr/include/linux/ip6_tunnel.h"
- textual header "/usr/include/linux/ip_vs.h"
- textual header "/usr/include/linux/ipc.h"
- textual header "/usr/include/linux/ipmi.h"
- textual header "/usr/include/linux/ipmi_msgdefs.h"
- textual header "/usr/include/linux/ipsec.h"
- textual header "/usr/include/linux/ipv6.h"
- textual header "/usr/include/linux/ipv6_route.h"
- textual header "/usr/include/linux/ipx.h"
- textual header "/usr/include/linux/irda.h"
- textual header "/usr/include/linux/irqnr.h"
- textual header "/usr/include/linux/isdn.h"
- textual header "/usr/include/linux/isdn/capicmd.h"
- textual header "/usr/include/linux/isdn_divertif.h"
- textual header "/usr/include/linux/isdn_ppp.h"
- textual header "/usr/include/linux/isdnif.h"
- textual header "/usr/include/linux/iso_fs.h"
- textual header "/usr/include/linux/ivtv.h"
- textual header "/usr/include/linux/ivtvfb.h"
- textual header "/usr/include/linux/ixjuser.h"
- textual header "/usr/include/linux/jffs2.h"
- textual header "/usr/include/linux/joystick.h"
- textual header "/usr/include/linux/kcm.h"
- textual header "/usr/include/linux/kcmp.h"
- textual header "/usr/include/linux/kcov.h"
- textual header "/usr/include/linux/kd.h"
- textual header "/usr/include/linux/kdev_t.h"
- textual header "/usr/include/linux/kernel-page-flags.h"
- textual header "/usr/include/linux/kernel.h"
- textual header "/usr/include/linux/kernelcapi.h"
- textual header "/usr/include/linux/kexec.h"
- textual header "/usr/include/linux/keyboard.h"
- textual header "/usr/include/linux/keyctl.h"
- textual header "/usr/include/linux/kfd_ioctl.h"
- textual header "/usr/include/linux/kvm.h"
- textual header "/usr/include/linux/kvm_para.h"
- textual header "/usr/include/linux/l2tp.h"
- textual header "/usr/include/linux/libc-compat.h"
- textual header "/usr/include/linux/lightnvm.h"
- textual header "/usr/include/linux/limits.h"
- textual header "/usr/include/linux/lirc.h"
- textual header "/usr/include/linux/llc.h"
- textual header "/usr/include/linux/loop.h"
- textual header "/usr/include/linux/lp.h"
- textual header "/usr/include/linux/lwtunnel.h"
- textual header "/usr/include/linux/magic.h"
- textual header "/usr/include/linux/major.h"
- textual header "/usr/include/linux/map_to_7segment.h"
- textual header "/usr/include/linux/matroxfb.h"
- textual header "/usr/include/linux/max2175.h"
- textual header "/usr/include/linux/mdio.h"
- textual header "/usr/include/linux/media-bus-format.h"
- textual header "/usr/include/linux/media.h"
- textual header "/usr/include/linux/mei.h"
- textual header "/usr/include/linux/membarrier.h"
- textual header "/usr/include/linux/memfd.h"
- textual header "/usr/include/linux/mempolicy.h"
- textual header "/usr/include/linux/meye.h"
- textual header "/usr/include/linux/mic_common.h"
- textual header "/usr/include/linux/mic_ioctl.h"
- textual header "/usr/include/linux/mii.h"
- textual header "/usr/include/linux/minix_fs.h"
- textual header "/usr/include/linux/mman.h"
- textual header "/usr/include/linux/mmc/ioctl.h"
- textual header "/usr/include/linux/mmtimer.h"
- textual header "/usr/include/linux/module.h"
- textual header "/usr/include/linux/mpls.h"
- textual header "/usr/include/linux/mpls_iptunnel.h"
- textual header "/usr/include/linux/mqueue.h"
- textual header "/usr/include/linux/mroute.h"
- textual header "/usr/include/linux/mroute6.h"
- textual header "/usr/include/linux/msdos_fs.h"
- textual header "/usr/include/linux/msg.h"
- textual header "/usr/include/linux/mtio.h"
- textual header "/usr/include/linux/n_r3964.h"
- textual header "/usr/include/linux/nbd-netlink.h"
- textual header "/usr/include/linux/nbd.h"
- textual header "/usr/include/linux/ncp.h"
- textual header "/usr/include/linux/ncp_fs.h"
- textual header "/usr/include/linux/ncp_mount.h"
- textual header "/usr/include/linux/ncp_no.h"
- textual header "/usr/include/linux/ndctl.h"
- textual header "/usr/include/linux/neighbour.h"
- textual header "/usr/include/linux/net.h"
- textual header "/usr/include/linux/net_dropmon.h"
- textual header "/usr/include/linux/net_namespace.h"
- textual header "/usr/include/linux/net_tstamp.h"
- textual header "/usr/include/linux/netconf.h"
- textual header "/usr/include/linux/netdevice.h"
- textual header "/usr/include/linux/netfilter.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set_bitmap.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set_hash.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set_list.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_common.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_ftp.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_sctp.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_tcp.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_tuple_common.h"
- textual header "/usr/include/linux/netfilter/nf_log.h"
- textual header "/usr/include/linux/netfilter/nf_nat.h"
- textual header "/usr/include/linux/netfilter/nf_tables.h"
- textual header "/usr/include/linux/netfilter/nf_tables_compat.h"
- textual header "/usr/include/linux/netfilter/nfnetlink.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_acct.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_compat.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_conntrack.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_cthelper.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_cttimeout.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_log.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_queue.h"
- textual header "/usr/include/linux/netfilter/x_tables.h"
- textual header "/usr/include/linux/netfilter/xt_AUDIT.h"
- textual header "/usr/include/linux/netfilter/xt_CHECKSUM.h"
- textual header "/usr/include/linux/netfilter/xt_CLASSIFY.h"
- textual header "/usr/include/linux/netfilter/xt_CONNMARK.h"
- textual header "/usr/include/linux/netfilter/xt_CONNSECMARK.h"
- textual header "/usr/include/linux/netfilter/xt_CT.h"
- textual header "/usr/include/linux/netfilter/xt_DSCP.h"
- textual header "/usr/include/linux/netfilter/xt_HMARK.h"
- textual header "/usr/include/linux/netfilter/xt_IDLETIMER.h"
- textual header "/usr/include/linux/netfilter/xt_LED.h"
- textual header "/usr/include/linux/netfilter/xt_LOG.h"
- textual header "/usr/include/linux/netfilter/xt_MARK.h"
- textual header "/usr/include/linux/netfilter/xt_NFLOG.h"
- textual header "/usr/include/linux/netfilter/xt_NFQUEUE.h"
- textual header "/usr/include/linux/netfilter/xt_RATEEST.h"
- textual header "/usr/include/linux/netfilter/xt_SECMARK.h"
- textual header "/usr/include/linux/netfilter/xt_SYNPROXY.h"
- textual header "/usr/include/linux/netfilter/xt_TCPMSS.h"
- textual header "/usr/include/linux/netfilter/xt_TCPOPTSTRIP.h"
- textual header "/usr/include/linux/netfilter/xt_TEE.h"
- textual header "/usr/include/linux/netfilter/xt_TPROXY.h"
- textual header "/usr/include/linux/netfilter/xt_addrtype.h"
- textual header "/usr/include/linux/netfilter/xt_bpf.h"
- textual header "/usr/include/linux/netfilter/xt_cgroup.h"
- textual header "/usr/include/linux/netfilter/xt_cluster.h"
- textual header "/usr/include/linux/netfilter/xt_comment.h"
- textual header "/usr/include/linux/netfilter/xt_connbytes.h"
- textual header "/usr/include/linux/netfilter/xt_connlabel.h"
- textual header "/usr/include/linux/netfilter/xt_connlimit.h"
- textual header "/usr/include/linux/netfilter/xt_connmark.h"
- textual header "/usr/include/linux/netfilter/xt_conntrack.h"
- textual header "/usr/include/linux/netfilter/xt_cpu.h"
- textual header "/usr/include/linux/netfilter/xt_dccp.h"
- textual header "/usr/include/linux/netfilter/xt_devgroup.h"
- textual header "/usr/include/linux/netfilter/xt_dscp.h"
- textual header "/usr/include/linux/netfilter/xt_ecn.h"
- textual header "/usr/include/linux/netfilter/xt_esp.h"
- textual header "/usr/include/linux/netfilter/xt_hashlimit.h"
- textual header "/usr/include/linux/netfilter/xt_helper.h"
- textual header "/usr/include/linux/netfilter/xt_ipcomp.h"
- textual header "/usr/include/linux/netfilter/xt_iprange.h"
- textual header "/usr/include/linux/netfilter/xt_ipvs.h"
- textual header "/usr/include/linux/netfilter/xt_l2tp.h"
- textual header "/usr/include/linux/netfilter/xt_length.h"
- textual header "/usr/include/linux/netfilter/xt_limit.h"
- textual header "/usr/include/linux/netfilter/xt_mac.h"
- textual header "/usr/include/linux/netfilter/xt_mark.h"
- textual header "/usr/include/linux/netfilter/xt_multiport.h"
- textual header "/usr/include/linux/netfilter/xt_nfacct.h"
- textual header "/usr/include/linux/netfilter/xt_osf.h"
- textual header "/usr/include/linux/netfilter/xt_owner.h"
- textual header "/usr/include/linux/netfilter/xt_physdev.h"
- textual header "/usr/include/linux/netfilter/xt_pkttype.h"
- textual header "/usr/include/linux/netfilter/xt_policy.h"
- textual header "/usr/include/linux/netfilter/xt_quota.h"
- textual header "/usr/include/linux/netfilter/xt_rateest.h"
- textual header "/usr/include/linux/netfilter/xt_realm.h"
- textual header "/usr/include/linux/netfilter/xt_recent.h"
- textual header "/usr/include/linux/netfilter/xt_rpfilter.h"
- textual header "/usr/include/linux/netfilter/xt_sctp.h"
- textual header "/usr/include/linux/netfilter/xt_set.h"
- textual header "/usr/include/linux/netfilter/xt_socket.h"
- textual header "/usr/include/linux/netfilter/xt_state.h"
- textual header "/usr/include/linux/netfilter/xt_statistic.h"
- textual header "/usr/include/linux/netfilter/xt_string.h"
- textual header "/usr/include/linux/netfilter/xt_tcpmss.h"
- textual header "/usr/include/linux/netfilter/xt_tcpudp.h"
- textual header "/usr/include/linux/netfilter/xt_time.h"
- textual header "/usr/include/linux/netfilter/xt_u32.h"
- textual header "/usr/include/linux/netfilter_arp.h"
- textual header "/usr/include/linux/netfilter_arp/arp_tables.h"
- textual header "/usr/include/linux/netfilter_arp/arpt_mangle.h"
- textual header "/usr/include/linux/netfilter_bridge.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_802_3.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_among.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_arp.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_arpreply.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_ip.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_ip6.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_limit.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_log.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_mark_m.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_mark_t.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_nat.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_nflog.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_pkttype.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_redirect.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_stp.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_vlan.h"
- textual header "/usr/include/linux/netfilter_bridge/ebtables.h"
- textual header "/usr/include/linux/netfilter_decnet.h"
- textual header "/usr/include/linux/netfilter_ipv4.h"
- textual header "/usr/include/linux/netfilter_ipv4/ip_tables.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ECN.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_LOG.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_REJECT.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_TTL.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ah.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ecn.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ttl.h"
- textual header "/usr/include/linux/netfilter_ipv6.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6_tables.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_HL.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_LOG.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_NPT.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_REJECT.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_ah.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_frag.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_hl.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_ipv6header.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_mh.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_opts.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_rt.h"
- textual header "/usr/include/linux/netlink.h"
- textual header "/usr/include/linux/netlink_diag.h"
- textual header "/usr/include/linux/netrom.h"
- textual header "/usr/include/linux/nfc.h"
- textual header "/usr/include/linux/nfs.h"
- textual header "/usr/include/linux/nfs2.h"
- textual header "/usr/include/linux/nfs3.h"
- textual header "/usr/include/linux/nfs4.h"
- textual header "/usr/include/linux/nfs4_mount.h"
- textual header "/usr/include/linux/nfs_fs.h"
- textual header "/usr/include/linux/nfs_idmap.h"
- textual header "/usr/include/linux/nfs_mount.h"
- textual header "/usr/include/linux/nfsacl.h"
- textual header "/usr/include/linux/nfsd/cld.h"
- textual header "/usr/include/linux/nfsd/debug.h"
- textual header "/usr/include/linux/nfsd/export.h"
- textual header "/usr/include/linux/nfsd/nfsfh.h"
- textual header "/usr/include/linux/nfsd/stats.h"
- textual header "/usr/include/linux/nilfs2_api.h"
- textual header "/usr/include/linux/nilfs2_ondisk.h"
- textual header "/usr/include/linux/nl80211.h"
- textual header "/usr/include/linux/nsfs.h"
- textual header "/usr/include/linux/nubus.h"
- textual header "/usr/include/linux/nvme_ioctl.h"
- textual header "/usr/include/linux/nvram.h"
- textual header "/usr/include/linux/omap3isp.h"
- textual header "/usr/include/linux/omapfb.h"
- textual header "/usr/include/linux/oom.h"
- textual header "/usr/include/linux/openvswitch.h"
- textual header "/usr/include/linux/packet_diag.h"
- textual header "/usr/include/linux/param.h"
- textual header "/usr/include/linux/parport.h"
- textual header "/usr/include/linux/patchkey.h"
- textual header "/usr/include/linux/pci.h"
- textual header "/usr/include/linux/pci_regs.h"
- textual header "/usr/include/linux/pcitest.h"
- textual header "/usr/include/linux/perf_event.h"
- textual header "/usr/include/linux/personality.h"
- textual header "/usr/include/linux/pfkeyv2.h"
- textual header "/usr/include/linux/pg.h"
- textual header "/usr/include/linux/phantom.h"
- textual header "/usr/include/linux/phonet.h"
- textual header "/usr/include/linux/pkt_cls.h"
- textual header "/usr/include/linux/pkt_sched.h"
- textual header "/usr/include/linux/pktcdvd.h"
- textual header "/usr/include/linux/pmu.h"
- textual header "/usr/include/linux/poll.h"
- textual header "/usr/include/linux/posix_acl.h"
- textual header "/usr/include/linux/posix_acl_xattr.h"
- textual header "/usr/include/linux/posix_types.h"
- textual header "/usr/include/linux/ppdev.h"
- textual header "/usr/include/linux/ppp-comp.h"
- textual header "/usr/include/linux/ppp-ioctl.h"
- textual header "/usr/include/linux/ppp_defs.h"
- textual header "/usr/include/linux/pps.h"
- textual header "/usr/include/linux/pr.h"
- textual header "/usr/include/linux/prctl.h"
- textual header "/usr/include/linux/psample.h"
- textual header "/usr/include/linux/psci.h"
- textual header "/usr/include/linux/ptp_clock.h"
- textual header "/usr/include/linux/ptrace.h"
- textual header "/usr/include/linux/qnx4_fs.h"
- textual header "/usr/include/linux/qnxtypes.h"
- textual header "/usr/include/linux/qrtr.h"
- textual header "/usr/include/linux/quota.h"
- textual header "/usr/include/linux/radeonfb.h"
- textual header "/usr/include/linux/raid/md_p.h"
- textual header "/usr/include/linux/raid/md_u.h"
- textual header "/usr/include/linux/random.h"
- textual header "/usr/include/linux/raw.h"
- textual header "/usr/include/linux/rds.h"
- textual header "/usr/include/linux/reboot.h"
- textual header "/usr/include/linux/reiserfs_fs.h"
- textual header "/usr/include/linux/reiserfs_xattr.h"
- textual header "/usr/include/linux/resource.h"
- textual header "/usr/include/linux/rfkill.h"
- textual header "/usr/include/linux/rio_cm_cdev.h"
- textual header "/usr/include/linux/rio_mport_cdev.h"
- textual header "/usr/include/linux/romfs_fs.h"
- textual header "/usr/include/linux/rose.h"
- textual header "/usr/include/linux/route.h"
- textual header "/usr/include/linux/rpmsg.h"
- textual header "/usr/include/linux/rtc.h"
- textual header "/usr/include/linux/rtnetlink.h"
- textual header "/usr/include/linux/rxrpc.h"
- textual header "/usr/include/linux/scc.h"
- textual header "/usr/include/linux/sched.h"
- textual header "/usr/include/linux/sched/types.h"
- textual header "/usr/include/linux/scif_ioctl.h"
- textual header "/usr/include/linux/screen_info.h"
- textual header "/usr/include/linux/sctp.h"
- textual header "/usr/include/linux/sdla.h"
- textual header "/usr/include/linux/seccomp.h"
- textual header "/usr/include/linux/securebits.h"
- textual header "/usr/include/linux/sed-opal.h"
- textual header "/usr/include/linux/seg6.h"
- textual header "/usr/include/linux/seg6_genl.h"
- textual header "/usr/include/linux/seg6_hmac.h"
- textual header "/usr/include/linux/seg6_iptunnel.h"
- textual header "/usr/include/linux/seg6_local.h"
- textual header "/usr/include/linux/selinux_netlink.h"
- textual header "/usr/include/linux/sem.h"
- textual header "/usr/include/linux/serial.h"
- textual header "/usr/include/linux/serial_core.h"
- textual header "/usr/include/linux/serial_reg.h"
- textual header "/usr/include/linux/serio.h"
- textual header "/usr/include/linux/shm.h"
- textual header "/usr/include/linux/signal.h"
- textual header "/usr/include/linux/signalfd.h"
- textual header "/usr/include/linux/smc.h"
- textual header "/usr/include/linux/smc_diag.h"
- textual header "/usr/include/linux/smiapp.h"
- textual header "/usr/include/linux/snmp.h"
- textual header "/usr/include/linux/sock_diag.h"
- textual header "/usr/include/linux/socket.h"
- textual header "/usr/include/linux/sockios.h"
- textual header "/usr/include/linux/sonet.h"
- textual header "/usr/include/linux/sonypi.h"
- textual header "/usr/include/linux/sound.h"
- textual header "/usr/include/linux/soundcard.h"
- textual header "/usr/include/linux/spi/spidev.h"
- textual header "/usr/include/linux/stat.h"
- textual header "/usr/include/linux/stddef.h"
- textual header "/usr/include/linux/stm.h"
- textual header "/usr/include/linux/string.h"
- textual header "/usr/include/linux/sunrpc/debug.h"
- textual header "/usr/include/linux/suspend_ioctls.h"
- textual header "/usr/include/linux/swab.h"
- textual header "/usr/include/linux/switchtec_ioctl.h"
- textual header "/usr/include/linux/sync_file.h"
- textual header "/usr/include/linux/synclink.h"
- textual header "/usr/include/linux/sysctl.h"
- textual header "/usr/include/linux/sysinfo.h"
- textual header "/usr/include/linux/target_core_user.h"
- textual header "/usr/include/linux/taskstats.h"
- textual header "/usr/include/linux/tc_act/tc_bpf.h"
- textual header "/usr/include/linux/tc_act/tc_connmark.h"
- textual header "/usr/include/linux/tc_act/tc_csum.h"
- textual header "/usr/include/linux/tc_act/tc_defact.h"
- textual header "/usr/include/linux/tc_act/tc_gact.h"
- textual header "/usr/include/linux/tc_act/tc_ife.h"
- textual header "/usr/include/linux/tc_act/tc_ipt.h"
- textual header "/usr/include/linux/tc_act/tc_mirred.h"
- textual header "/usr/include/linux/tc_act/tc_nat.h"
- textual header "/usr/include/linux/tc_act/tc_pedit.h"
- textual header "/usr/include/linux/tc_act/tc_sample.h"
- textual header "/usr/include/linux/tc_act/tc_skbedit.h"
- textual header "/usr/include/linux/tc_act/tc_skbmod.h"
- textual header "/usr/include/linux/tc_act/tc_tunnel_key.h"
- textual header "/usr/include/linux/tc_act/tc_vlan.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_cmp.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_meta.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_nbyte.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_text.h"
- textual header "/usr/include/linux/tcp.h"
- textual header "/usr/include/linux/tcp_metrics.h"
- textual header "/usr/include/linux/tee.h"
- textual header "/usr/include/linux/telephony.h"
- textual header "/usr/include/linux/termios.h"
- textual header "/usr/include/linux/thermal.h"
- textual header "/usr/include/linux/time.h"
- textual header "/usr/include/linux/timerfd.h"
- textual header "/usr/include/linux/times.h"
- textual header "/usr/include/linux/timex.h"
- textual header "/usr/include/linux/tiocl.h"
- textual header "/usr/include/linux/tipc.h"
- textual header "/usr/include/linux/tipc_config.h"
- textual header "/usr/include/linux/tipc_netlink.h"
- textual header "/usr/include/linux/tls.h"
- textual header "/usr/include/linux/toshiba.h"
- textual header "/usr/include/linux/tty.h"
- textual header "/usr/include/linux/tty_flags.h"
- textual header "/usr/include/linux/types.h"
- textual header "/usr/include/linux/udf_fs_i.h"
- textual header "/usr/include/linux/udp.h"
- textual header "/usr/include/linux/uhid.h"
- textual header "/usr/include/linux/uinput.h"
- textual header "/usr/include/linux/uio.h"
- textual header "/usr/include/linux/uleds.h"
- textual header "/usr/include/linux/ultrasound.h"
- textual header "/usr/include/linux/un.h"
- textual header "/usr/include/linux/unistd.h"
- textual header "/usr/include/linux/unix_diag.h"
- textual header "/usr/include/linux/usb/audio.h"
- textual header "/usr/include/linux/usb/cdc-wdm.h"
- textual header "/usr/include/linux/usb/cdc.h"
- textual header "/usr/include/linux/usb/ch11.h"
- textual header "/usr/include/linux/usb/ch9.h"
- textual header "/usr/include/linux/usb/charger.h"
- textual header "/usr/include/linux/usb/functionfs.h"
- textual header "/usr/include/linux/usb/g_printer.h"
- textual header "/usr/include/linux/usb/gadgetfs.h"
- textual header "/usr/include/linux/usb/midi.h"
- textual header "/usr/include/linux/usb/tmc.h"
- textual header "/usr/include/linux/usb/video.h"
- textual header "/usr/include/linux/usbdevice_fs.h"
- textual header "/usr/include/linux/usbip.h"
- textual header "/usr/include/linux/userfaultfd.h"
- textual header "/usr/include/linux/userio.h"
- textual header "/usr/include/linux/utime.h"
- textual header "/usr/include/linux/utsname.h"
- textual header "/usr/include/linux/uuid.h"
- textual header "/usr/include/linux/uvcvideo.h"
- textual header "/usr/include/linux/v4l2-common.h"
- textual header "/usr/include/linux/v4l2-controls.h"
- textual header "/usr/include/linux/v4l2-dv-timings.h"
- textual header "/usr/include/linux/v4l2-mediabus.h"
- textual header "/usr/include/linux/v4l2-subdev.h"
- textual header "/usr/include/linux/version.h"
- textual header "/usr/include/linux/veth.h"
- textual header "/usr/include/linux/vfio.h"
- textual header "/usr/include/linux/vfio_ccw.h"
- textual header "/usr/include/linux/vhost.h"
- textual header "/usr/include/linux/videodev2.h"
- textual header "/usr/include/linux/virtio_9p.h"
- textual header "/usr/include/linux/virtio_balloon.h"
- textual header "/usr/include/linux/virtio_blk.h"
- textual header "/usr/include/linux/virtio_config.h"
- textual header "/usr/include/linux/virtio_console.h"
- textual header "/usr/include/linux/virtio_crypto.h"
- textual header "/usr/include/linux/virtio_gpu.h"
- textual header "/usr/include/linux/virtio_ids.h"
- textual header "/usr/include/linux/virtio_input.h"
- textual header "/usr/include/linux/virtio_mmio.h"
- textual header "/usr/include/linux/virtio_net.h"
- textual header "/usr/include/linux/virtio_pci.h"
- textual header "/usr/include/linux/virtio_ring.h"
- textual header "/usr/include/linux/virtio_rng.h"
- textual header "/usr/include/linux/virtio_scsi.h"
- textual header "/usr/include/linux/virtio_types.h"
- textual header "/usr/include/linux/virtio_vsock.h"
- textual header "/usr/include/linux/vm_sockets.h"
- textual header "/usr/include/linux/vm_sockets_diag.h"
- textual header "/usr/include/linux/vsockmon.h"
- textual header "/usr/include/linux/vt.h"
- textual header "/usr/include/linux/vtpm_proxy.h"
- textual header "/usr/include/linux/wait.h"
- textual header "/usr/include/linux/wanrouter.h"
- textual header "/usr/include/linux/watchdog.h"
- textual header "/usr/include/linux/wimax.h"
- textual header "/usr/include/linux/wimax/i2400m.h"
- textual header "/usr/include/linux/wireless.h"
- textual header "/usr/include/linux/wmi.h"
- textual header "/usr/include/linux/x25.h"
- textual header "/usr/include/linux/xattr.h"
- textual header "/usr/include/linux/xfrm.h"
- textual header "/usr/include/linux/xilinx-v4l2-controls.h"
- textual header "/usr/include/linux/zorro.h"
- textual header "/usr/include/linux/zorro_ids.h"
- textual header "/usr/include/locale.h"
- textual header "/usr/include/malloc.h"
- textual header "/usr/include/math.h"
- textual header "/usr/include/mcheck.h"
- textual header "/usr/include/memory.h"
- textual header "/usr/include/misc/cxl.h"
- textual header "/usr/include/misc/ocxl.h"
- textual header "/usr/include/mntent.h"
- textual header "/usr/include/monetary.h"
- textual header "/usr/include/mqueue.h"
- textual header "/usr/include/mtd/inftl-user.h"
- textual header "/usr/include/mtd/mtd-abi.h"
- textual header "/usr/include/mtd/mtd-user.h"
- textual header "/usr/include/mtd/nftl-user.h"
- textual header "/usr/include/mtd/ubi-user.h"
- textual header "/usr/include/net/ethernet.h"
- textual header "/usr/include/net/if.h"
- textual header "/usr/include/net/if_arp.h"
- textual header "/usr/include/net/if_packet.h"
- textual header "/usr/include/net/if_ppp.h"
- textual header "/usr/include/net/if_shaper.h"
- textual header "/usr/include/net/if_slip.h"
- textual header "/usr/include/net/ppp-comp.h"
- textual header "/usr/include/net/ppp_defs.h"
- textual header "/usr/include/net/route.h"
- textual header "/usr/include/netash/ash.h"
- textual header "/usr/include/netatalk/at.h"
- textual header "/usr/include/netax25/ax25.h"
- textual header "/usr/include/netdb.h"
- textual header "/usr/include/neteconet/ec.h"
- textual header "/usr/include/netinet/ether.h"
- textual header "/usr/include/netinet/icmp6.h"
- textual header "/usr/include/netinet/if_ether.h"
- textual header "/usr/include/netinet/if_fddi.h"
- textual header "/usr/include/netinet/if_tr.h"
- textual header "/usr/include/netinet/igmp.h"
- textual header "/usr/include/netinet/in.h"
- textual header "/usr/include/netinet/in_systm.h"
- textual header "/usr/include/netinet/ip.h"
- textual header "/usr/include/netinet/ip6.h"
- textual header "/usr/include/netinet/ip_icmp.h"
- textual header "/usr/include/netinet/tcp.h"
- textual header "/usr/include/netinet/udp.h"
- textual header "/usr/include/netipx/ipx.h"
- textual header "/usr/include/netiucv/iucv.h"
- textual header "/usr/include/netpacket/packet.h"
- textual header "/usr/include/netrom/netrom.h"
- textual header "/usr/include/netrose/rose.h"
- textual header "/usr/include/nfs/nfs.h"
- textual header "/usr/include/nl_types.h"
- textual header "/usr/include/nss.h"
- textual header "/usr/include/obstack.h"
- textual header "/usr/include/paths.h"
- textual header "/usr/include/poll.h"
- textual header "/usr/include/printf.h"
- textual header "/usr/include/proc_service.h"
- textual header "/usr/include/protocols/routed.h"
- textual header "/usr/include/protocols/rwhod.h"
- textual header "/usr/include/protocols/talkd.h"
- textual header "/usr/include/protocols/timed.h"
- textual header "/usr/include/pthread.h"
- textual header "/usr/include/pty.h"
- textual header "/usr/include/pwd.h"
- textual header "/usr/include/python2.7/Python-ast.h"
- textual header "/usr/include/python2.7/Python.h"
- textual header "/usr/include/python2.7/abstract.h"
- textual header "/usr/include/python2.7/asdl.h"
- textual header "/usr/include/python2.7/ast.h"
- textual header "/usr/include/python2.7/bitset.h"
- textual header "/usr/include/python2.7/boolobject.h"
- textual header "/usr/include/python2.7/bufferobject.h"
- textual header "/usr/include/python2.7/bytearrayobject.h"
- textual header "/usr/include/python2.7/bytes_methods.h"
- textual header "/usr/include/python2.7/bytesobject.h"
- textual header "/usr/include/python2.7/cStringIO.h"
- textual header "/usr/include/python2.7/cellobject.h"
- textual header "/usr/include/python2.7/ceval.h"
- textual header "/usr/include/python2.7/classobject.h"
- textual header "/usr/include/python2.7/cobject.h"
- textual header "/usr/include/python2.7/code.h"
- textual header "/usr/include/python2.7/codecs.h"
- textual header "/usr/include/python2.7/compile.h"
- textual header "/usr/include/python2.7/complexobject.h"
- textual header "/usr/include/python2.7/datetime.h"
- textual header "/usr/include/python2.7/descrobject.h"
- textual header "/usr/include/python2.7/dictobject.h"
- textual header "/usr/include/python2.7/dtoa.h"
- textual header "/usr/include/python2.7/enumobject.h"
- textual header "/usr/include/python2.7/errcode.h"
- textual header "/usr/include/python2.7/eval.h"
- textual header "/usr/include/python2.7/fileobject.h"
- textual header "/usr/include/python2.7/floatobject.h"
- textual header "/usr/include/python2.7/frameobject.h"
- textual header "/usr/include/python2.7/funcobject.h"
- textual header "/usr/include/python2.7/genobject.h"
- textual header "/usr/include/python2.7/graminit.h"
- textual header "/usr/include/python2.7/grammar.h"
- textual header "/usr/include/python2.7/import.h"
- textual header "/usr/include/python2.7/intobject.h"
- textual header "/usr/include/python2.7/intrcheck.h"
- textual header "/usr/include/python2.7/iterobject.h"
- textual header "/usr/include/python2.7/listobject.h"
- textual header "/usr/include/python2.7/longintrepr.h"
- textual header "/usr/include/python2.7/longobject.h"
- textual header "/usr/include/python2.7/marshal.h"
- textual header "/usr/include/python2.7/memoryobject.h"
- textual header "/usr/include/python2.7/metagrammar.h"
- textual header "/usr/include/python2.7/methodobject.h"
- textual header "/usr/include/python2.7/modsupport.h"
- textual header "/usr/include/python2.7/moduleobject.h"
- textual header "/usr/include/python2.7/node.h"
- textual header "/usr/include/python2.7/object.h"
- textual header "/usr/include/python2.7/objimpl.h"
- textual header "/usr/include/python2.7/opcode.h"
- textual header "/usr/include/python2.7/osdefs.h"
- textual header "/usr/include/python2.7/parsetok.h"
- textual header "/usr/include/python2.7/patchlevel.h"
- textual header "/usr/include/python2.7/pgen.h"
- textual header "/usr/include/python2.7/pgenheaders.h"
- textual header "/usr/include/python2.7/py_curses.h"
- textual header "/usr/include/python2.7/pyarena.h"
- textual header "/usr/include/python2.7/pycapsule.h"
- textual header "/usr/include/python2.7/pyconfig.h"
- textual header "/usr/include/python2.7/pyctype.h"
- textual header "/usr/include/python2.7/pydebug.h"
- textual header "/usr/include/python2.7/pyerrors.h"
- textual header "/usr/include/python2.7/pyexpat.h"
- textual header "/usr/include/python2.7/pyfpe.h"
- textual header "/usr/include/python2.7/pygetopt.h"
- textual header "/usr/include/python2.7/pymacconfig.h"
- textual header "/usr/include/python2.7/pymactoolbox.h"
- textual header "/usr/include/python2.7/pymath.h"
- textual header "/usr/include/python2.7/pymem.h"
- textual header "/usr/include/python2.7/pyport.h"
- textual header "/usr/include/python2.7/pystate.h"
- textual header "/usr/include/python2.7/pystrcmp.h"
- textual header "/usr/include/python2.7/pystrtod.h"
- textual header "/usr/include/python2.7/pythonrun.h"
- textual header "/usr/include/python2.7/pythread.h"
- textual header "/usr/include/python2.7/rangeobject.h"
- textual header "/usr/include/python2.7/setobject.h"
- textual header "/usr/include/python2.7/sliceobject.h"
- textual header "/usr/include/python2.7/stringobject.h"
- textual header "/usr/include/python2.7/structmember.h"
- textual header "/usr/include/python2.7/structseq.h"
- textual header "/usr/include/python2.7/symtable.h"
- textual header "/usr/include/python2.7/sysmodule.h"
- textual header "/usr/include/python2.7/timefuncs.h"
- textual header "/usr/include/python2.7/token.h"
- textual header "/usr/include/python2.7/traceback.h"
- textual header "/usr/include/python2.7/tupleobject.h"
- textual header "/usr/include/python2.7/ucnhash.h"
- textual header "/usr/include/python2.7/unicodeobject.h"
- textual header "/usr/include/python2.7/warnings.h"
- textual header "/usr/include/python2.7/weakrefobject.h"
- textual header "/usr/include/python3.7/Python-ast.h"
- textual header "/usr/include/python3.7/Python.h"
- textual header "/usr/include/python3.7/abstract.h"
- textual header "/usr/include/python3.7/accu.h"
- textual header "/usr/include/python3.7/asdl.h"
- textual header "/usr/include/python3.7/ast.h"
- textual header "/usr/include/python3.7/bitset.h"
- textual header "/usr/include/python3.7/bltinmodule.h"
- textual header "/usr/include/python3.7/boolobject.h"
- textual header "/usr/include/python3.7/bytearrayobject.h"
- textual header "/usr/include/python3.7/bytes_methods.h"
- textual header "/usr/include/python3.7/bytesobject.h"
- textual header "/usr/include/python3.7/cellobject.h"
- textual header "/usr/include/python3.7/ceval.h"
- textual header "/usr/include/python3.7/classobject.h"
- textual header "/usr/include/python3.7/code.h"
- textual header "/usr/include/python3.7/codecs.h"
- textual header "/usr/include/python3.7/compile.h"
- textual header "/usr/include/python3.7/complexobject.h"
- textual header "/usr/include/python3.7/context.h"
- textual header "/usr/include/python3.7/datetime.h"
- textual header "/usr/include/python3.7/descrobject.h"
- textual header "/usr/include/python3.7/dictobject.h"
- textual header "/usr/include/python3.7/dtoa.h"
- textual header "/usr/include/python3.7/dynamic_annotations.h"
- textual header "/usr/include/python3.7/enumobject.h"
- textual header "/usr/include/python3.7/errcode.h"
- textual header "/usr/include/python3.7/eval.h"
- textual header "/usr/include/python3.7/fileobject.h"
- textual header "/usr/include/python3.7/fileutils.h"
- textual header "/usr/include/python3.7/floatobject.h"
- textual header "/usr/include/python3.7/frameobject.h"
- textual header "/usr/include/python3.7/funcobject.h"
- textual header "/usr/include/python3.7/genobject.h"
- textual header "/usr/include/python3.7/graminit.h"
- textual header "/usr/include/python3.7/grammar.h"
- textual header "/usr/include/python3.7/import.h"
- textual header "/usr/include/python3.7/internal/ceval.h"
- textual header "/usr/include/python3.7/internal/condvar.h"
- textual header "/usr/include/python3.7/internal/context.h"
- textual header "/usr/include/python3.7/internal/gil.h"
- textual header "/usr/include/python3.7/internal/hamt.h"
- textual header "/usr/include/python3.7/internal/hash.h"
- textual header "/usr/include/python3.7/internal/import.h"
- textual header "/usr/include/python3.7/internal/mem.h"
- textual header "/usr/include/python3.7/internal/pygetopt.h"
- textual header "/usr/include/python3.7/internal/pystate.h"
- textual header "/usr/include/python3.7/internal/warnings.h"
- textual header "/usr/include/python3.7/intrcheck.h"
- textual header "/usr/include/python3.7/iterobject.h"
- textual header "/usr/include/python3.7/listobject.h"
- textual header "/usr/include/python3.7/longintrepr.h"
- textual header "/usr/include/python3.7/longobject.h"
- textual header "/usr/include/python3.7/marshal.h"
- textual header "/usr/include/python3.7/memoryobject.h"
- textual header "/usr/include/python3.7/metagrammar.h"
- textual header "/usr/include/python3.7/methodobject.h"
- textual header "/usr/include/python3.7/modsupport.h"
- textual header "/usr/include/python3.7/moduleobject.h"
- textual header "/usr/include/python3.7/namespaceobject.h"
- textual header "/usr/include/python3.7/node.h"
- textual header "/usr/include/python3.7/object.h"
- textual header "/usr/include/python3.7/objimpl.h"
- textual header "/usr/include/python3.7/odictobject.h"
- textual header "/usr/include/python3.7/opcode.h"
- textual header "/usr/include/python3.7/osdefs.h"
- textual header "/usr/include/python3.7/osmodule.h"
- textual header "/usr/include/python3.7/parsetok.h"
- textual header "/usr/include/python3.7/patchlevel.h"
- textual header "/usr/include/python3.7/pgen.h"
- textual header "/usr/include/python3.7/pgenheaders.h"
- textual header "/usr/include/python3.7/py_curses.h"
- textual header "/usr/include/python3.7/pyarena.h"
- textual header "/usr/include/python3.7/pyatomic.h"
- textual header "/usr/include/python3.7/pycapsule.h"
- textual header "/usr/include/python3.7/pyconfig.h"
- textual header "/usr/include/python3.7/pyctype.h"
- textual header "/usr/include/python3.7/pydebug.h"
- textual header "/usr/include/python3.7/pydtrace.h"
- textual header "/usr/include/python3.7/pyerrors.h"
- textual header "/usr/include/python3.7/pyexpat.h"
- textual header "/usr/include/python3.7/pyfpe.h"
- textual header "/usr/include/python3.7/pyhash.h"
- textual header "/usr/include/python3.7/pylifecycle.h"
- textual header "/usr/include/python3.7/pymacconfig.h"
- textual header "/usr/include/python3.7/pymacro.h"
- textual header "/usr/include/python3.7/pymath.h"
- textual header "/usr/include/python3.7/pymem.h"
- textual header "/usr/include/python3.7/pyport.h"
- textual header "/usr/include/python3.7/pystate.h"
- textual header "/usr/include/python3.7/pystrcmp.h"
- textual header "/usr/include/python3.7/pystrhex.h"
- textual header "/usr/include/python3.7/pystrtod.h"
- textual header "/usr/include/python3.7/pythonrun.h"
- textual header "/usr/include/python3.7/pythread.h"
- textual header "/usr/include/python3.7/pytime.h"
- textual header "/usr/include/python3.7/rangeobject.h"
- textual header "/usr/include/python3.7/setobject.h"
- textual header "/usr/include/python3.7/sliceobject.h"
- textual header "/usr/include/python3.7/structmember.h"
- textual header "/usr/include/python3.7/structseq.h"
- textual header "/usr/include/python3.7/symtable.h"
- textual header "/usr/include/python3.7/sysmodule.h"
- textual header "/usr/include/python3.7/token.h"
- textual header "/usr/include/python3.7/traceback.h"
- textual header "/usr/include/python3.7/tupleobject.h"
- textual header "/usr/include/python3.7/typeslots.h"
- textual header "/usr/include/python3.7/ucnhash.h"
- textual header "/usr/include/python3.7/unicodeobject.h"
- textual header "/usr/include/python3.7/warnings.h"
- textual header "/usr/include/python3.7/weakrefobject.h"
- textual header "/usr/include/python3.7m/Python-ast.h"
- textual header "/usr/include/python3.7m/Python.h"
- textual header "/usr/include/python3.7m/abstract.h"
- textual header "/usr/include/python3.7m/accu.h"
- textual header "/usr/include/python3.7m/asdl.h"
- textual header "/usr/include/python3.7m/ast.h"
- textual header "/usr/include/python3.7m/bitset.h"
- textual header "/usr/include/python3.7m/bltinmodule.h"
- textual header "/usr/include/python3.7m/boolobject.h"
- textual header "/usr/include/python3.7m/bytearrayobject.h"
- textual header "/usr/include/python3.7m/bytes_methods.h"
- textual header "/usr/include/python3.7m/bytesobject.h"
- textual header "/usr/include/python3.7m/cellobject.h"
- textual header "/usr/include/python3.7m/ceval.h"
- textual header "/usr/include/python3.7m/classobject.h"
- textual header "/usr/include/python3.7m/code.h"
- textual header "/usr/include/python3.7m/codecs.h"
- textual header "/usr/include/python3.7m/compile.h"
- textual header "/usr/include/python3.7m/complexobject.h"
- textual header "/usr/include/python3.7m/context.h"
- textual header "/usr/include/python3.7m/datetime.h"
- textual header "/usr/include/python3.7m/descrobject.h"
- textual header "/usr/include/python3.7m/dictobject.h"
- textual header "/usr/include/python3.7m/dtoa.h"
- textual header "/usr/include/python3.7m/dynamic_annotations.h"
- textual header "/usr/include/python3.7m/enumobject.h"
- textual header "/usr/include/python3.7m/errcode.h"
- textual header "/usr/include/python3.7m/eval.h"
- textual header "/usr/include/python3.7m/fileobject.h"
- textual header "/usr/include/python3.7m/fileutils.h"
- textual header "/usr/include/python3.7m/floatobject.h"
- textual header "/usr/include/python3.7m/frameobject.h"
- textual header "/usr/include/python3.7m/funcobject.h"
- textual header "/usr/include/python3.7m/genobject.h"
- textual header "/usr/include/python3.7m/graminit.h"
- textual header "/usr/include/python3.7m/grammar.h"
- textual header "/usr/include/python3.7m/import.h"
- textual header "/usr/include/python3.7m/internal/ceval.h"
- textual header "/usr/include/python3.7m/internal/condvar.h"
- textual header "/usr/include/python3.7m/internal/context.h"
- textual header "/usr/include/python3.7m/internal/gil.h"
- textual header "/usr/include/python3.7m/internal/hamt.h"
- textual header "/usr/include/python3.7m/internal/hash.h"
- textual header "/usr/include/python3.7m/internal/import.h"
- textual header "/usr/include/python3.7m/internal/mem.h"
- textual header "/usr/include/python3.7m/internal/pygetopt.h"
- textual header "/usr/include/python3.7m/internal/pystate.h"
- textual header "/usr/include/python3.7m/internal/warnings.h"
- textual header "/usr/include/python3.7m/intrcheck.h"
- textual header "/usr/include/python3.7m/iterobject.h"
- textual header "/usr/include/python3.7m/listobject.h"
- textual header "/usr/include/python3.7m/longintrepr.h"
- textual header "/usr/include/python3.7m/longobject.h"
- textual header "/usr/include/python3.7m/marshal.h"
- textual header "/usr/include/python3.7m/memoryobject.h"
- textual header "/usr/include/python3.7m/metagrammar.h"
- textual header "/usr/include/python3.7m/methodobject.h"
- textual header "/usr/include/python3.7m/modsupport.h"
- textual header "/usr/include/python3.7m/moduleobject.h"
- textual header "/usr/include/python3.7m/namespaceobject.h"
- textual header "/usr/include/python3.7m/node.h"
- textual header "/usr/include/python3.7m/object.h"
- textual header "/usr/include/python3.7m/objimpl.h"
- textual header "/usr/include/python3.7m/odictobject.h"
- textual header "/usr/include/python3.7m/opcode.h"
- textual header "/usr/include/python3.7m/osdefs.h"
- textual header "/usr/include/python3.7m/osmodule.h"
- textual header "/usr/include/python3.7m/parsetok.h"
- textual header "/usr/include/python3.7m/patchlevel.h"
- textual header "/usr/include/python3.7m/pgen.h"
- textual header "/usr/include/python3.7m/pgenheaders.h"
- textual header "/usr/include/python3.7m/py_curses.h"
- textual header "/usr/include/python3.7m/pyarena.h"
- textual header "/usr/include/python3.7m/pyatomic.h"
- textual header "/usr/include/python3.7m/pycapsule.h"
- textual header "/usr/include/python3.7m/pyconfig.h"
- textual header "/usr/include/python3.7m/pyctype.h"
- textual header "/usr/include/python3.7m/pydebug.h"
- textual header "/usr/include/python3.7m/pydtrace.h"
- textual header "/usr/include/python3.7m/pyerrors.h"
- textual header "/usr/include/python3.7m/pyexpat.h"
- textual header "/usr/include/python3.7m/pyfpe.h"
- textual header "/usr/include/python3.7m/pyhash.h"
- textual header "/usr/include/python3.7m/pylifecycle.h"
- textual header "/usr/include/python3.7m/pymacconfig.h"
- textual header "/usr/include/python3.7m/pymacro.h"
- textual header "/usr/include/python3.7m/pymath.h"
- textual header "/usr/include/python3.7m/pymem.h"
- textual header "/usr/include/python3.7m/pyport.h"
- textual header "/usr/include/python3.7m/pystate.h"
- textual header "/usr/include/python3.7m/pystrcmp.h"
- textual header "/usr/include/python3.7m/pystrhex.h"
- textual header "/usr/include/python3.7m/pystrtod.h"
- textual header "/usr/include/python3.7m/pythonrun.h"
- textual header "/usr/include/python3.7m/pythread.h"
- textual header "/usr/include/python3.7m/pytime.h"
- textual header "/usr/include/python3.7m/rangeobject.h"
- textual header "/usr/include/python3.7m/setobject.h"
- textual header "/usr/include/python3.7m/sliceobject.h"
- textual header "/usr/include/python3.7m/structmember.h"
- textual header "/usr/include/python3.7m/structseq.h"
- textual header "/usr/include/python3.7m/symtable.h"
- textual header "/usr/include/python3.7m/sysmodule.h"
- textual header "/usr/include/python3.7m/token.h"
- textual header "/usr/include/python3.7m/traceback.h"
- textual header "/usr/include/python3.7m/tupleobject.h"
- textual header "/usr/include/python3.7m/typeslots.h"
- textual header "/usr/include/python3.7m/ucnhash.h"
- textual header "/usr/include/python3.7m/unicodeobject.h"
- textual header "/usr/include/python3.7m/warnings.h"
- textual header "/usr/include/python3.7m/weakrefobject.h"
- textual header "/usr/include/rdma/bnxt_re-abi.h"
- textual header "/usr/include/rdma/cxgb3-abi.h"
- textual header "/usr/include/rdma/cxgb4-abi.h"
- textual header "/usr/include/rdma/hfi/hfi1_ioctl.h"
- textual header "/usr/include/rdma/hfi/hfi1_user.h"
- textual header "/usr/include/rdma/hns-abi.h"
- textual header "/usr/include/rdma/ib_user_cm.h"
- textual header "/usr/include/rdma/ib_user_ioctl_verbs.h"
- textual header "/usr/include/rdma/ib_user_mad.h"
- textual header "/usr/include/rdma/ib_user_sa.h"
- textual header "/usr/include/rdma/ib_user_verbs.h"
- textual header "/usr/include/rdma/mlx4-abi.h"
- textual header "/usr/include/rdma/mlx5-abi.h"
- textual header "/usr/include/rdma/mthca-abi.h"
- textual header "/usr/include/rdma/nes-abi.h"
- textual header "/usr/include/rdma/ocrdma-abi.h"
- textual header "/usr/include/rdma/qedr-abi.h"
- textual header "/usr/include/rdma/rdma_netlink.h"
- textual header "/usr/include/rdma/rdma_user_cm.h"
- textual header "/usr/include/rdma/rdma_user_ioctl.h"
- textual header "/usr/include/rdma/rdma_user_rxe.h"
- textual header "/usr/include/rdma/vmw_pvrdma-abi.h"
- textual header "/usr/include/re_comp.h"
- textual header "/usr/include/regex.h"
- textual header "/usr/include/regexp.h"
- textual header "/usr/include/resolv.h"
- textual header "/usr/include/rpc/auth.h"
- textual header "/usr/include/rpc/auth_des.h"
- textual header "/usr/include/rpc/auth_unix.h"
- textual header "/usr/include/rpc/clnt.h"
- textual header "/usr/include/rpc/des_crypt.h"
- textual header "/usr/include/rpc/key_prot.h"
- textual header "/usr/include/rpc/netdb.h"
- textual header "/usr/include/rpc/pmap_clnt.h"
- textual header "/usr/include/rpc/pmap_prot.h"
- textual header "/usr/include/rpc/pmap_rmt.h"
- textual header "/usr/include/rpc/rpc.h"
- textual header "/usr/include/rpc/rpc_des.h"
- textual header "/usr/include/rpc/rpc_msg.h"
- textual header "/usr/include/rpc/svc.h"
- textual header "/usr/include/rpc/svc_auth.h"
- textual header "/usr/include/rpc/types.h"
- textual header "/usr/include/rpc/xdr.h"
- textual header "/usr/include/rpcsvc/bootparam.h"
- textual header "/usr/include/rpcsvc/bootparam_prot.h"
- textual header "/usr/include/rpcsvc/bootparam_prot.x"
- textual header "/usr/include/rpcsvc/key_prot.h"
- textual header "/usr/include/rpcsvc/key_prot.x"
- textual header "/usr/include/rpcsvc/klm_prot.h"
- textual header "/usr/include/rpcsvc/klm_prot.x"
- textual header "/usr/include/rpcsvc/mount.h"
- textual header "/usr/include/rpcsvc/mount.x"
- textual header "/usr/include/rpcsvc/nfs_prot.h"
- textual header "/usr/include/rpcsvc/nfs_prot.x"
- textual header "/usr/include/rpcsvc/nis.h"
- textual header "/usr/include/rpcsvc/nis.x"
- textual header "/usr/include/rpcsvc/nis_callback.h"
- textual header "/usr/include/rpcsvc/nis_callback.x"
- textual header "/usr/include/rpcsvc/nis_object.x"
- textual header "/usr/include/rpcsvc/nis_tags.h"
- textual header "/usr/include/rpcsvc/nislib.h"
- textual header "/usr/include/rpcsvc/nlm_prot.h"
- textual header "/usr/include/rpcsvc/nlm_prot.x"
- textual header "/usr/include/rpcsvc/rex.h"
- textual header "/usr/include/rpcsvc/rex.x"
- textual header "/usr/include/rpcsvc/rquota.h"
- textual header "/usr/include/rpcsvc/rquota.x"
- textual header "/usr/include/rpcsvc/rstat.h"
- textual header "/usr/include/rpcsvc/rstat.x"
- textual header "/usr/include/rpcsvc/rusers.h"
- textual header "/usr/include/rpcsvc/rusers.x"
- textual header "/usr/include/rpcsvc/sm_inter.h"
- textual header "/usr/include/rpcsvc/sm_inter.x"
- textual header "/usr/include/rpcsvc/spray.h"
- textual header "/usr/include/rpcsvc/spray.x"
- textual header "/usr/include/rpcsvc/yp.h"
- textual header "/usr/include/rpcsvc/yp.x"
- textual header "/usr/include/rpcsvc/yp_prot.h"
- textual header "/usr/include/rpcsvc/ypclnt.h"
- textual header "/usr/include/rpcsvc/yppasswd.h"
- textual header "/usr/include/rpcsvc/yppasswd.x"
- textual header "/usr/include/rpcsvc/ypupd.h"
- textual header "/usr/include/ruby-2.5.0/ruby.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/classext.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/rubyio.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/rubysig.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/st.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/util.h"
- textual header "/usr/include/ruby-2.5.0/ruby/debug.h"
- textual header "/usr/include/ruby-2.5.0/ruby/defines.h"
- textual header "/usr/include/ruby-2.5.0/ruby/digest.h"
- textual header "/usr/include/ruby-2.5.0/ruby/encoding.h"
- textual header "/usr/include/ruby-2.5.0/ruby/intern.h"
- textual header "/usr/include/ruby-2.5.0/ruby/io.h"
- textual header "/usr/include/ruby-2.5.0/ruby/missing.h"
- textual header "/usr/include/ruby-2.5.0/ruby/onigmo.h"
- textual header "/usr/include/ruby-2.5.0/ruby/oniguruma.h"
- textual header "/usr/include/ruby-2.5.0/ruby/re.h"
- textual header "/usr/include/ruby-2.5.0/ruby/regex.h"
- textual header "/usr/include/ruby-2.5.0/ruby/ruby.h"
- textual header "/usr/include/ruby-2.5.0/ruby/st.h"
- textual header "/usr/include/ruby-2.5.0/ruby/subst.h"
- textual header "/usr/include/ruby-2.5.0/ruby/thread.h"
- textual header "/usr/include/ruby-2.5.0/ruby/thread_native.h"
- textual header "/usr/include/ruby-2.5.0/ruby/util.h"
- textual header "/usr/include/ruby-2.5.0/ruby/version.h"
- textual header "/usr/include/ruby-2.5.0/ruby/vm.h"
- textual header "/usr/include/sched.h"
- textual header "/usr/include/scsi/cxlflash_ioctl.h"
- textual header "/usr/include/scsi/fc/fc_els.h"
- textual header "/usr/include/scsi/fc/fc_fs.h"
- textual header "/usr/include/scsi/fc/fc_gs.h"
- textual header "/usr/include/scsi/fc/fc_ns.h"
- textual header "/usr/include/scsi/scsi.h"
- textual header "/usr/include/scsi/scsi_bsg_fc.h"
- textual header "/usr/include/scsi/scsi_ioctl.h"
- textual header "/usr/include/scsi/scsi_netlink.h"
- textual header "/usr/include/scsi/scsi_netlink_fc.h"
- textual header "/usr/include/scsi/sg.h"
- textual header "/usr/include/search.h"
- textual header "/usr/include/semaphore.h"
- textual header "/usr/include/setjmp.h"
- textual header "/usr/include/sgtty.h"
- textual header "/usr/include/shadow.h"
- textual header "/usr/include/signal.h"
- textual header "/usr/include/sound/asequencer.h"
- textual header "/usr/include/sound/asoc.h"
- textual header "/usr/include/sound/asound.h"
- textual header "/usr/include/sound/asound_fm.h"
- textual header "/usr/include/sound/compress_offload.h"
- textual header "/usr/include/sound/compress_params.h"
- textual header "/usr/include/sound/emu10k1.h"
- textual header "/usr/include/sound/firewire.h"
- textual header "/usr/include/sound/hdsp.h"
- textual header "/usr/include/sound/hdspm.h"
- textual header "/usr/include/sound/sb16_csp.h"
- textual header "/usr/include/sound/sfnt_info.h"
- textual header "/usr/include/sound/snd_sst_tokens.h"
- textual header "/usr/include/sound/tlv.h"
- textual header "/usr/include/sound/usb_stream.h"
- textual header "/usr/include/spawn.h"
- textual header "/usr/include/stab.h"
- textual header "/usr/include/stdc-predef.h"
- textual header "/usr/include/stdint.h"
- textual header "/usr/include/stdio.h"
- textual header "/usr/include/stdio_ext.h"
- textual header "/usr/include/stdlib.h"
- textual header "/usr/include/string.h"
- textual header "/usr/include/strings.h"
- textual header "/usr/include/stropts.h"
- textual header "/usr/include/syscall.h"
- textual header "/usr/include/sysexits.h"
- textual header "/usr/include/syslog.h"
- textual header "/usr/include/tar.h"
- textual header "/usr/include/termio.h"
- textual header "/usr/include/termios.h"
- textual header "/usr/include/tgmath.h"
- textual header "/usr/include/thread_db.h"
- textual header "/usr/include/time.h"
- textual header "/usr/include/ttyent.h"
- textual header "/usr/include/uchar.h"
- textual header "/usr/include/ucontext.h"
- textual header "/usr/include/ulimit.h"
- textual header "/usr/include/unistd.h"
- textual header "/usr/include/ustat.h"
- textual header "/usr/include/utime.h"
- textual header "/usr/include/utmp.h"
- textual header "/usr/include/utmpx.h"
- textual header "/usr/include/uuid/uuid.h"
- textual header "/usr/include/values.h"
- textual header "/usr/include/video/edid.h"
- textual header "/usr/include/video/sisfb.h"
- textual header "/usr/include/video/uvesafb.h"
- textual header "/usr/include/wait.h"
- textual header "/usr/include/wchar.h"
- textual header "/usr/include/wctype.h"
- textual header "/usr/include/wordexp.h"
- textual header "/usr/include/x86_64-linux-gnu/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/auxvec.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/boot.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bootparam.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bpf_perf_event.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/byteorder.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/e820.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hw_breakpoint.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hwcap2.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hyperv.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ipcbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ist.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_para.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_perf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ldt.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mce.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msgbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mtrr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/param.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/perf_regs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/processor-flags.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace-abi.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sembuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/setup.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/shmbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/siginfo.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sockios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/svm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/swab.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termbits.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vmx.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vsyscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/_G_config.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cmathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/confname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cpu-set.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dirent.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dlfcn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/elfclass.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/endian.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/environments.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/error.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenvinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn-common.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-fast.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-logb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_core.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_posix.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/hwcap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/in.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/initspin.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctl-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipctypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/iscanonical.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/link.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/local_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/locale.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/long-double.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-finite.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-vector.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathdef.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/monetary-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/msq.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/netdb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/param.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix_opt.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/printf-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ptrace-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sched.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/semaphore.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigaction.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum-generic.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigthread.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket_type.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ss_flags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stab.def"
- textual header "/usr/include/x86_64-linux-gnu/bits/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/string_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/strings_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-path.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/time.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clock_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/res_state.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/stack_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_rusage.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/time_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/timer_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/wint_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/typesizes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uintn-identity.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio-ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmpx.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitflags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitstatus.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wordsize.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xtitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/expat_config.h"
- textual header "/usr/include/x86_64-linux-gnu/fpu_control.h"
- textual header "/usr/include/x86_64-linux-gnu/gmp.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/libc-version.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/ieee754.h"
- textual header "/usr/include/x86_64-linux-gnu/python2.7/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/python3.7m/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/ruby-2.5.0/ruby/config.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/acct.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/bitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/cdefs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/dir.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/elf.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fanotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/file.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fsuid.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon_out.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/io.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/kd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/klog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mount.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/msg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mtio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/param.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/pci.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/perm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/personality.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/procfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/profil.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/queue.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/quota.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/random.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/raw.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reboot.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/select.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sendfile.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socketvar.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/soundcard.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/swap.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysinfo.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/time.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timeb.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/times.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttychars.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttydefaults.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/types.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/uio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/un.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/user.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vlimit.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vt.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vtimes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/wait.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/xattr.h"
- textual header "/usr/include/xen/evtchn.h"
- textual header "/usr/include/xen/gntalloc.h"
- textual header "/usr/include/xen/gntdev.h"
- textual header "/usr/include/xen/privcmd.h"
- textual header "/usr/include/zconf.h"
- textual header "/usr/include/zlib.h"
- textual header "/usr/local/lib/clang/12.0.0/share/asan_blacklist.txt"
- textual header "/usr/local/lib/clang/12.0.0/share/msan_blacklist.txt"
- textual header "/usr/include/c++/7.5.0/algorithm"
- textual header "/usr/include/c++/7.5.0/any"
- textual header "/usr/include/c++/7.5.0/array"
- textual header "/usr/include/c++/7.5.0/atomic"
- textual header "/usr/include/c++/7.5.0/backward/auto_ptr.h"
- textual header "/usr/include/c++/7.5.0/backward/backward_warning.h"
- textual header "/usr/include/c++/7.5.0/backward/binders.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_fun.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_map"
- textual header "/usr/include/c++/7.5.0/backward/hash_set"
- textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
- textual header "/usr/include/c++/7.5.0/backward/strstream"
- textual header "/usr/include/c++/7.5.0/bits/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/allocated_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_base.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_futex.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_lockfree_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.tcc"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.tcc"
- textual header "/usr/include/c++/7.5.0/bits/boost_concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/c++0x_warning.h"
- textual header "/usr/include/c++/7.5.0/bits/char_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/codecvt.h"
- textual header "/usr/include/c++/7.5.0/bits/concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/cpp_type_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_forced.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_init_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/deque.tcc"
- textual header "/usr/include/c++/7.5.0/bits/enable_special_members.h"
- textual header "/usr/include/c++/7.5.0/bits/exception.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/fstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/functexcept.h"
- textual header "/usr/include/c++/7.5.0/bits/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/hash_bytes.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/bits/indirect_array.h"
- textual header "/usr/include/c++/7.5.0/bits/invoke.h"
- textual header "/usr/include/c++/7.5.0/bits/ios_base.h"
- textual header "/usr/include/c++/7.5.0/bits/istream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_conv.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.tcc"
- textual header "/usr/include/c++/7.5.0/bits/localefwd.h"
- textual header "/usr/include/c++/7.5.0/bits/mask_array.h"
- textual header "/usr/include/c++/7.5.0/bits/memoryfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/move.h"
- textual header "/usr/include/c++/7.5.0/bits/nested_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/node_handle.h"
- textual header "/usr/include/c++/7.5.0/bits/ostream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/ostream_insert.h"
- textual header "/usr/include/c++/7.5.0/bits/parse_numbers.h"
- textual header "/usr/include/c++/7.5.0/bits/postypes.h"
- textual header "/usr/include/c++/7.5.0/bits/predefined_ops.h"
- textual header "/usr/include/c++/7.5.0/bits/ptr_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/quoted_string.h"
- textual header "/usr/include/c++/7.5.0/bits/random.h"
- textual header "/usr/include/c++/7.5.0/bits/random.tcc"
- textual header "/usr/include/c++/7.5.0/bits/range_access.h"
- textual header "/usr/include/c++/7.5.0/bits/refwrap.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_constants.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_error.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.tcc"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_atomic.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_base.h"
- textual header "/usr/include/c++/7.5.0/bits/slice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/specfun.h"
- textual header "/usr/include/c++/7.5.0/bits/sstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/std_abs.h"
- textual header "/usr/include/c++/7.5.0/bits/std_function.h"
- textual header "/usr/include/c++/7.5.0/bits/std_mutex.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algo.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algobase.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_bvector.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_construct.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_deque.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_function.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_heap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_funcs.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_types.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_list.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_map.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multimap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multiset.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_numeric.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_pair.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_queue.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_raw_storage_iter.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_relops.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_set.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_stack.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tempbuf.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tree.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_uninitialized.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_vector.h"
- textual header "/usr/include/c++/7.5.0/bits/stream_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/streambuf.tcc"
- textual header "/usr/include/c++/7.5.0/bits/streambuf_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/bits/stringfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/uniform_int_dist.h"
- textual header "/usr/include/c++/7.5.0/bits/unique_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/bits/uses_allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_after.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.tcc"
- textual header "/usr/include/c++/7.5.0/bits/valarray_before.h"
- textual header "/usr/include/c++/7.5.0/bits/vector.tcc"
- textual header "/usr/include/c++/7.5.0/bitset"
- textual header "/usr/include/c++/7.5.0/cassert"
- textual header "/usr/include/c++/7.5.0/ccomplex"
- textual header "/usr/include/c++/7.5.0/cctype"
- textual header "/usr/include/c++/7.5.0/cerrno"
- textual header "/usr/include/c++/7.5.0/cfenv"
- textual header "/usr/include/c++/7.5.0/cfloat"
- textual header "/usr/include/c++/7.5.0/chrono"
- textual header "/usr/include/c++/7.5.0/cinttypes"
- textual header "/usr/include/c++/7.5.0/ciso646"
- textual header "/usr/include/c++/7.5.0/climits"
- textual header "/usr/include/c++/7.5.0/clocale"
- textual header "/usr/include/c++/7.5.0/cmath"
- textual header "/usr/include/c++/7.5.0/codecvt"
- textual header "/usr/include/c++/7.5.0/complex"
- textual header "/usr/include/c++/7.5.0/complex.h"
- textual header "/usr/include/c++/7.5.0/condition_variable"
- textual header "/usr/include/c++/7.5.0/csetjmp"
- textual header "/usr/include/c++/7.5.0/csignal"
- textual header "/usr/include/c++/7.5.0/cstdalign"
- textual header "/usr/include/c++/7.5.0/cstdarg"
- textual header "/usr/include/c++/7.5.0/cstdbool"
- textual header "/usr/include/c++/7.5.0/cstddef"
- textual header "/usr/include/c++/7.5.0/cstdint"
- textual header "/usr/include/c++/7.5.0/cstdio"
- textual header "/usr/include/c++/7.5.0/cstdlib"
- textual header "/usr/include/c++/7.5.0/cstring"
- textual header "/usr/include/c++/7.5.0/ctgmath"
- textual header "/usr/include/c++/7.5.0/ctime"
- textual header "/usr/include/c++/7.5.0/cuchar"
- textual header "/usr/include/c++/7.5.0/cwchar"
- textual header "/usr/include/c++/7.5.0/cwctype"
- textual header "/usr/include/c++/7.5.0/cxxabi.h"
- textual header "/usr/include/c++/7.5.0/debug/array"
- textual header "/usr/include/c++/7.5.0/debug/assertions.h"
- textual header "/usr/include/c++/7.5.0/debug/bitset"
- textual header "/usr/include/c++/7.5.0/debug/debug.h"
- textual header "/usr/include/c++/7.5.0/debug/deque"
- textual header "/usr/include/c++/7.5.0/debug/formatter.h"
- textual header "/usr/include/c++/7.5.0/debug/forward_list"
- textual header "/usr/include/c++/7.5.0/debug/functions.h"
- textual header "/usr/include/c++/7.5.0/debug/helper_functions.h"
- textual header "/usr/include/c++/7.5.0/debug/list"
- textual header "/usr/include/c++/7.5.0/debug/macros.h"
- textual header "/usr/include/c++/7.5.0/debug/map"
- textual header "/usr/include/c++/7.5.0/debug/map.h"
- textual header "/usr/include/c++/7.5.0/debug/multimap.h"
- textual header "/usr/include/c++/7.5.0/debug/multiset.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.tcc"
- textual header "/usr/include/c++/7.5.0/debug/set"
- textual header "/usr/include/c++/7.5.0/debug/set.h"
- textual header "/usr/include/c++/7.5.0/debug/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/string"
- textual header "/usr/include/c++/7.5.0/debug/unordered_map"
- textual header "/usr/include/c++/7.5.0/debug/unordered_set"
- textual header "/usr/include/c++/7.5.0/debug/vector"
- textual header "/usr/include/c++/7.5.0/decimal/decimal"
- textual header "/usr/include/c++/7.5.0/decimal/decimal.h"
- textual header "/usr/include/c++/7.5.0/deque"
- textual header "/usr/include/c++/7.5.0/exception"
- textual header "/usr/include/c++/7.5.0/experimental/algorithm"
- textual header "/usr/include/c++/7.5.0/experimental/any"
- textual header "/usr/include/c++/7.5.0/experimental/array"
- textual header "/usr/include/c++/7.5.0/experimental/bits/erase_if.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_dir.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_fwd.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_ops.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_path.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/lfts_config.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/experimental/chrono"
- textual header "/usr/include/c++/7.5.0/experimental/deque"
- textual header "/usr/include/c++/7.5.0/experimental/filesystem"
- textual header "/usr/include/c++/7.5.0/experimental/forward_list"
- textual header "/usr/include/c++/7.5.0/experimental/functional"
- textual header "/usr/include/c++/7.5.0/experimental/iterator"
- textual header "/usr/include/c++/7.5.0/experimental/list"
- textual header "/usr/include/c++/7.5.0/experimental/map"
- textual header "/usr/include/c++/7.5.0/experimental/memory"
- textual header "/usr/include/c++/7.5.0/experimental/memory_resource"
- textual header "/usr/include/c++/7.5.0/experimental/numeric"
- textual header "/usr/include/c++/7.5.0/experimental/optional"
- textual header "/usr/include/c++/7.5.0/experimental/propagate_const"
- textual header "/usr/include/c++/7.5.0/experimental/random"
- textual header "/usr/include/c++/7.5.0/experimental/ratio"
- textual header "/usr/include/c++/7.5.0/experimental/regex"
- textual header "/usr/include/c++/7.5.0/experimental/set"
- textual header "/usr/include/c++/7.5.0/experimental/source_location"
- textual header "/usr/include/c++/7.5.0/experimental/string"
- textual header "/usr/include/c++/7.5.0/experimental/string_view"
- textual header "/usr/include/c++/7.5.0/experimental/system_error"
- textual header "/usr/include/c++/7.5.0/experimental/tuple"
- textual header "/usr/include/c++/7.5.0/experimental/type_traits"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_map"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_set"
- textual header "/usr/include/c++/7.5.0/experimental/utility"
- textual header "/usr/include/c++/7.5.0/experimental/vector"
- textual header "/usr/include/c++/7.5.0/ext/algorithm"
- textual header "/usr/include/c++/7.5.0/ext/aligned_buffer.h"
- textual header "/usr/include/c++/7.5.0/ext/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/array_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/atomicity.h"
- textual header "/usr/include/c++/7.5.0/ext/bitmap_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/cast.h"
- textual header "/usr/include/c++/7.5.0/ext/cmath"
- textual header "/usr/include/c++/7.5.0/ext/codecvt_specializations.h"
- textual header "/usr/include/c++/7.5.0/ext/concurrence.h"
- textual header "/usr/include/c++/7.5.0/ext/debug_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/enc_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/extptr_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/functional"
- textual header "/usr/include/c++/7.5.0/ext/hash_map"
- textual header "/usr/include/c++/7.5.0/ext/hash_set"
- textual header "/usr/include/c++/7.5.0/ext/iterator"
- textual header "/usr/include/c++/7.5.0/ext/malloc_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/memory"
- textual header "/usr/include/c++/7.5.0/ext/mt_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/new_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/numeric"
- textual header "/usr/include/c++/7.5.0/ext/numeric_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/assoc_container.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cond_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/container_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/debug_map_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/standard_policies.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_trace_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/type_utils.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/types_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/exception.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/hash_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/list_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/priority_queue.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tag_and_trait.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tree_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/trie_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pod_char_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pointer.h"
- textual header "/usr/include/c++/7.5.0/ext/pool_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/random"
- textual header "/usr/include/c++/7.5.0/ext/random.tcc"
- textual header "/usr/include/c++/7.5.0/ext/rb_tree"
- textual header "/usr/include/c++/7.5.0/ext/rc_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/rope"
- textual header "/usr/include/c++/7.5.0/ext/ropeimpl.h"
- textual header "/usr/include/c++/7.5.0/ext/slist"
- textual header "/usr/include/c++/7.5.0/ext/sso_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_sync_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/string_conversions.h"
- textual header "/usr/include/c++/7.5.0/ext/throw_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/type_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/typelist.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.tcc"
- textual header "/usr/include/c++/7.5.0/ext/vstring_fwd.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring_util.h"
- textual header "/usr/include/c++/7.5.0/fenv.h"
- textual header "/usr/include/c++/7.5.0/forward_list"
- textual header "/usr/include/c++/7.5.0/fstream"
- textual header "/usr/include/c++/7.5.0/functional"
- textual header "/usr/include/c++/7.5.0/future"
- textual header "/usr/include/c++/7.5.0/initializer_list"
- textual header "/usr/include/c++/7.5.0/iomanip"
- textual header "/usr/include/c++/7.5.0/ios"
- textual header "/usr/include/c++/7.5.0/iosfwd"
- textual header "/usr/include/c++/7.5.0/iostream"
- textual header "/usr/include/c++/7.5.0/istream"
- textual header "/usr/include/c++/7.5.0/iterator"
- textual header "/usr/include/c++/7.5.0/limits"
- textual header "/usr/include/c++/7.5.0/list"
- textual header "/usr/include/c++/7.5.0/locale"
- textual header "/usr/include/c++/7.5.0/map"
- textual header "/usr/include/c++/7.5.0/math.h"
- textual header "/usr/include/c++/7.5.0/memory"
- textual header "/usr/include/c++/7.5.0/mutex"
- textual header "/usr/include/c++/7.5.0/new"
- textual header "/usr/include/c++/7.5.0/numeric"
- textual header "/usr/include/c++/7.5.0/optional"
- textual header "/usr/include/c++/7.5.0/ostream"
- textual header "/usr/include/c++/7.5.0/parallel/algo.h"
- textual header "/usr/include/c++/7.5.0/parallel/algobase.h"
- textual header "/usr/include/c++/7.5.0/parallel/algorithm"
- textual header "/usr/include/c++/7.5.0/parallel/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/balanced_quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/base.h"
- textual header "/usr/include/c++/7.5.0/parallel/basic_iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/checkers.h"
- textual header "/usr/include/c++/7.5.0/parallel/compatibility.h"
- textual header "/usr/include/c++/7.5.0/parallel/compiletime_settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/equally_split.h"
- textual header "/usr/include/c++/7.5.0/parallel/features.h"
- textual header "/usr/include/c++/7.5.0/parallel/find.h"
- textual header "/usr/include/c++/7.5.0/parallel/find_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/list_partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/losertree.h"
- textual header "/usr/include/c++/7.5.0/parallel/merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiseq_selection.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_mergesort.h"
- textual header "/usr/include/c++/7.5.0/parallel/numeric"
- textual header "/usr/include/c++/7.5.0/parallel/numericfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop_static.h"
- textual header "/usr/include/c++/7.5.0/parallel/par_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/parallel.h"
- textual header "/usr/include/c++/7.5.0/parallel/partial_sum.h"
- textual header "/usr/include/c++/7.5.0/parallel/partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/queue.h"
- textual header "/usr/include/c++/7.5.0/parallel/quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_number.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_shuffle.h"
- textual header "/usr/include/c++/7.5.0/parallel/search.h"
- textual header "/usr/include/c++/7.5.0/parallel/set_operations.h"
- textual header "/usr/include/c++/7.5.0/parallel/settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/sort.h"
- textual header "/usr/include/c++/7.5.0/parallel/tags.h"
- textual header "/usr/include/c++/7.5.0/parallel/types.h"
- textual header "/usr/include/c++/7.5.0/parallel/unique_copy.h"
- textual header "/usr/include/c++/7.5.0/parallel/workstealing.h"
- textual header "/usr/include/c++/7.5.0/profile/array"
- textual header "/usr/include/c++/7.5.0/profile/base.h"
- textual header "/usr/include/c++/7.5.0/profile/bitset"
- textual header "/usr/include/c++/7.5.0/profile/deque"
- textual header "/usr/include/c++/7.5.0/profile/forward_list"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_algos.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_container_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hash_func.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hashtable_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_slist.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_vector.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_map_to_unordered_map.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_node.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_state.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_trace.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_to_list.h"
- textual header "/usr/include/c++/7.5.0/profile/iterator_tracker.h"
- textual header "/usr/include/c++/7.5.0/profile/list"
- textual header "/usr/include/c++/7.5.0/profile/map"
- textual header "/usr/include/c++/7.5.0/profile/map.h"
- textual header "/usr/include/c++/7.5.0/profile/multimap.h"
- textual header "/usr/include/c++/7.5.0/profile/multiset.h"
- textual header "/usr/include/c++/7.5.0/profile/ordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/set"
- textual header "/usr/include/c++/7.5.0/profile/set.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_map"
- textual header "/usr/include/c++/7.5.0/profile/unordered_set"
- textual header "/usr/include/c++/7.5.0/profile/vector"
- textual header "/usr/include/c++/7.5.0/queue"
- textual header "/usr/include/c++/7.5.0/random"
- textual header "/usr/include/c++/7.5.0/ratio"
- textual header "/usr/include/c++/7.5.0/regex"
- textual header "/usr/include/c++/7.5.0/scoped_allocator"
- textual header "/usr/include/c++/7.5.0/set"
- textual header "/usr/include/c++/7.5.0/shared_mutex"
- textual header "/usr/include/c++/7.5.0/sstream"
- textual header "/usr/include/c++/7.5.0/stack"
- textual header "/usr/include/c++/7.5.0/stdexcept"
- textual header "/usr/include/c++/7.5.0/stdlib.h"
- textual header "/usr/include/c++/7.5.0/streambuf"
- textual header "/usr/include/c++/7.5.0/string"
- textual header "/usr/include/c++/7.5.0/string_view"
- textual header "/usr/include/c++/7.5.0/system_error"
- textual header "/usr/include/c++/7.5.0/tgmath.h"
- textual header "/usr/include/c++/7.5.0/thread"
- textual header "/usr/include/c++/7.5.0/tr1/array"
- textual header "/usr/include/c++/7.5.0/tr1/bessel_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/beta_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/ccomplex"
- textual header "/usr/include/c++/7.5.0/tr1/cctype"
- textual header "/usr/include/c++/7.5.0/tr1/cfenv"
- textual header "/usr/include/c++/7.5.0/tr1/cfloat"
- textual header "/usr/include/c++/7.5.0/tr1/cinttypes"
- textual header "/usr/include/c++/7.5.0/tr1/climits"
- textual header "/usr/include/c++/7.5.0/tr1/cmath"
- textual header "/usr/include/c++/7.5.0/tr1/complex"
- textual header "/usr/include/c++/7.5.0/tr1/complex.h"
- textual header "/usr/include/c++/7.5.0/tr1/cstdarg"
- textual header "/usr/include/c++/7.5.0/tr1/cstdbool"
- textual header "/usr/include/c++/7.5.0/tr1/cstdint"
- textual header "/usr/include/c++/7.5.0/tr1/cstdio"
- textual header "/usr/include/c++/7.5.0/tr1/cstdlib"
- textual header "/usr/include/c++/7.5.0/tr1/ctgmath"
- textual header "/usr/include/c++/7.5.0/tr1/ctime"
- textual header "/usr/include/c++/7.5.0/tr1/ctype.h"
- textual header "/usr/include/c++/7.5.0/tr1/cwchar"
- textual header "/usr/include/c++/7.5.0/tr1/cwctype"
- textual header "/usr/include/c++/7.5.0/tr1/ell_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/exp_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/fenv.h"
- textual header "/usr/include/c++/7.5.0/tr1/float.h"
- textual header "/usr/include/c++/7.5.0/tr1/functional"
- textual header "/usr/include/c++/7.5.0/tr1/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/tr1/gamma.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable.h"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/tr1/hypergeometric.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/inttypes.h"
- textual header "/usr/include/c++/7.5.0/tr1/legendre_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/limits.h"
- textual header "/usr/include/c++/7.5.0/tr1/math.h"
- textual header "/usr/include/c++/7.5.0/tr1/memory"
- textual header "/usr/include/c++/7.5.0/tr1/modified_bessel_func.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_hermite.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_laguerre.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/random"
- textual header "/usr/include/c++/7.5.0/tr1/random.h"
- textual header "/usr/include/c++/7.5.0/tr1/random.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/regex"
- textual header "/usr/include/c++/7.5.0/tr1/riemann_zeta.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/tr1/special_function_util.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdarg.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdbool.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdint.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdio.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdlib.h"
- textual header "/usr/include/c++/7.5.0/tr1/tgmath.h"
- textual header "/usr/include/c++/7.5.0/tr1/tuple"
- textual header "/usr/include/c++/7.5.0/tr1/type_traits"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/tr1/utility"
- textual header "/usr/include/c++/7.5.0/tr1/wchar.h"
- textual header "/usr/include/c++/7.5.0/tr1/wctype.h"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/ratio"
- textual header "/usr/include/c++/7.5.0/tr2/type_traits"
- textual header "/usr/include/c++/7.5.0/tuple"
- textual header "/usr/include/c++/7.5.0/type_traits"
- textual header "/usr/include/c++/7.5.0/typeindex"
- textual header "/usr/include/c++/7.5.0/typeinfo"
- textual header "/usr/include/c++/7.5.0/unordered_map"
- textual header "/usr/include/c++/7.5.0/unordered_set"
- textual header "/usr/include/c++/7.5.0/utility"
- textual header "/usr/include/c++/7.5.0/valarray"
- textual header "/usr/include/c++/7.5.0/variant"
- textual header "/usr/include/c++/7.5.0/vector"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/ext/opt_random.h"
- textual header "/usr/include/c++/7.5.0/backward/auto_ptr.h"
- textual header "/usr/include/c++/7.5.0/backward/backward_warning.h"
- textual header "/usr/include/c++/7.5.0/backward/binders.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_fun.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_map"
- textual header "/usr/include/c++/7.5.0/backward/hash_set"
- textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
- textual header "/usr/include/c++/7.5.0/backward/strstream"
-} \ No newline at end of file
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/java/BUILD b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/java/BUILD
deleted file mode 100644
index 47c3ef12f..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/java/BUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is auto-generated by an rbe_autoconfig repository rule
-# and should not be modified directly.
-# See @bazel_toolchains//rules:rbe_repo.bzl
-
-package(default_visibility = ["//visibility:public"])
-
-java_runtime(
- name = "jdk",
- srcs = [],
- java_home = "/usr/lib/jvm/11.29.3-ca-jdk11.0.2/reduced",
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/armeabi_cc_toolchain_config.bzl b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/armeabi_cc_toolchain_config.bzl
deleted file mode 100755
index 94e0720bf..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/armeabi_cc_toolchain_config.bzl
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright 2019 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""A Starlark cc_toolchain configuration rule"""
-
-load(
- "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
- "feature",
- "tool_path",
-)
-
-def _impl(ctx):
- toolchain_identifier = "stub_armeabi-v7a"
- host_system_name = "armeabi-v7a"
- target_system_name = "armeabi-v7a"
- target_cpu = "armeabi-v7a"
- target_libc = "armeabi-v7a"
- compiler = "compiler"
- abi_version = "armeabi-v7a"
- abi_libc_version = "armeabi-v7a"
- cc_target_os = None
- builtin_sysroot = None
- action_configs = []
-
- supports_pic_feature = feature(name = "supports_pic", enabled = True)
- supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
- features = [supports_dynamic_linker_feature, supports_pic_feature]
-
- cxx_builtin_include_directories = []
- artifact_name_patterns = []
- make_variables = []
-
- tool_paths = [
- tool_path(name = "ar", path = "/bin/false"),
- tool_path(name = "compat-ld", path = "/bin/false"),
- tool_path(name = "cpp", path = "/bin/false"),
- tool_path(name = "dwp", path = "/bin/false"),
- tool_path(name = "gcc", path = "/bin/false"),
- tool_path(name = "gcov", path = "/bin/false"),
- tool_path(name = "ld", path = "/bin/false"),
- tool_path(name = "nm", path = "/bin/false"),
- tool_path(name = "objcopy", path = "/bin/false"),
- tool_path(name = "objdump", path = "/bin/false"),
- tool_path(name = "strip", path = "/bin/false"),
- ]
-
- return cc_common.create_cc_toolchain_config_info(
- ctx = ctx,
- features = features,
- action_configs = action_configs,
- artifact_name_patterns = artifact_name_patterns,
- cxx_builtin_include_directories = cxx_builtin_include_directories,
- toolchain_identifier = toolchain_identifier,
- host_system_name = host_system_name,
- target_system_name = target_system_name,
- target_cpu = target_cpu,
- target_libc = target_libc,
- compiler = compiler,
- abi_version = abi_version,
- abi_libc_version = abi_libc_version,
- tool_paths = tool_paths,
- make_variables = make_variables,
- builtin_sysroot = builtin_sysroot,
- cc_target_os = cc_target_os,
- )
-
-armeabi_cc_toolchain_config = rule(
- implementation = _impl,
- attrs = {},
- provides = [CcToolchainConfigInfo],
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_toolchain_config.bzl b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_toolchain_config.bzl
deleted file mode 100755
index 5dbaa86ab..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_toolchain_config.bzl
+++ /dev/null
@@ -1,1272 +0,0 @@
-# Copyright 2019 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""A Starlark cc_toolchain configuration rule"""
-
-load(
- "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
- "action_config",
- "feature",
- "feature_set",
- "flag_group",
- "flag_set",
- "tool",
- "tool_path",
- "variable_with_value",
- "with_feature_set",
-)
-load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
-
-def layering_check_features(compiler):
- if compiler != "clang":
- return []
- return [
- feature(
- name = "use_module_maps",
- requires = [feature_set(features = ["module_maps"])],
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-fmodule-name=%{module_name}",
- "-fmodule-map-file=%{module_map_file}",
- ],
- ),
- ],
- ),
- ],
- ),
-
- # Tell blaze we support module maps in general, so they will be generated
- # for all c/c++ rules.
- # Note: not all C++ rules support module maps; thus, do not imply this
- # feature from other features - instead, require it.
- feature(name = "module_maps", enabled = True),
- feature(
- name = "layering_check",
- implies = ["use_module_maps"],
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(flags = [
- "-fmodules-strict-decluse",
- "-Wprivate-header",
- ]),
- flag_group(
- iterate_over = "dependent_module_map_files",
- flags = [
- "-fmodule-map-file=%{dependent_module_map_files}",
- ],
- ),
- ],
- ),
- ],
- ),
- ]
-
-all_compile_actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.clif_match,
- ACTION_NAMES.lto_backend,
-]
-
-all_cpp_compile_actions = [
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.clif_match,
-]
-
-preprocessor_compile_actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
-]
-
-codegen_compile_actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.lto_backend,
-]
-
-all_link_actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
-]
-
-lto_index_actions = [
- ACTION_NAMES.lto_index_for_executable,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
-]
-
-def _impl(ctx):
- tool_paths = [
- tool_path(name = name, path = path)
- for name, path in ctx.attr.tool_paths.items()
- ]
- action_configs = []
-
- llvm_cov_action = action_config(
- action_name = ACTION_NAMES.llvm_cov,
- tools = [
- tool(
- path = ctx.attr.tool_paths["llvm-cov"],
- ),
- ],
- )
-
- action_configs.append(llvm_cov_action)
-
- supports_pic_feature = feature(
- name = "supports_pic",
- enabled = True,
- )
- supports_start_end_lib_feature = feature(
- name = "supports_start_end_lib",
- enabled = True,
- )
-
- default_compile_flags_feature = feature(
- name = "default_compile_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.compile_flags,
- ),
- ] if ctx.attr.compile_flags else []),
- ),
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.dbg_compile_flags,
- ),
- ] if ctx.attr.dbg_compile_flags else []),
- with_features = [with_feature_set(features = ["dbg"])],
- ),
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.opt_compile_flags,
- ),
- ] if ctx.attr.opt_compile_flags else []),
- with_features = [with_feature_set(features = ["opt"])],
- ),
- flag_set(
- actions = all_cpp_compile_actions + [ACTION_NAMES.lto_backend],
- flag_groups = ([
- flag_group(
- flags = ctx.attr.cxx_flags,
- ),
- ] if ctx.attr.cxx_flags else []),
- ),
- ],
- )
-
- default_link_flags_feature = feature(
- name = "default_link_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.link_flags,
- ),
- ] if ctx.attr.link_flags else []),
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.opt_link_flags,
- ),
- ] if ctx.attr.opt_link_flags else []),
- with_features = [with_feature_set(features = ["opt"])],
- ),
- ],
- )
-
- dbg_feature = feature(name = "dbg")
-
- opt_feature = feature(name = "opt")
-
- sysroot_feature = feature(
- name = "sysroot",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.lto_backend,
- ACTION_NAMES.clif_match,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["--sysroot=%{sysroot}"],
- expand_if_available = "sysroot",
- ),
- ],
- ),
- ],
- )
-
- fdo_optimize_feature = feature(
- name = "fdo_optimize",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-use=%{fdo_profile_path}",
- "-fprofile-correction",
- ],
- expand_if_available = "fdo_profile_path",
- ),
- ],
- ),
- ],
- provides = ["profile"],
- )
-
- supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
-
- user_compile_flags_feature = feature(
- name = "user_compile_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_compile_actions,
- flag_groups = [
- flag_group(
- flags = ["%{user_compile_flags}"],
- iterate_over = "user_compile_flags",
- expand_if_available = "user_compile_flags",
- ),
- ],
- ),
- ],
- )
-
- unfiltered_compile_flags_feature = feature(
- name = "unfiltered_compile_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_compile_actions,
- flag_groups = ([
- flag_group(
- flags = ctx.attr.unfiltered_compile_flags,
- ),
- ] if ctx.attr.unfiltered_compile_flags else []),
- ),
- ],
- )
-
- library_search_directories_feature = feature(
- name = "library_search_directories",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-L%{library_search_directories}"],
- iterate_over = "library_search_directories",
- expand_if_available = "library_search_directories",
- ),
- ],
- ),
- ],
- )
-
- static_libgcc_feature = feature(
- name = "static_libgcc",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.lto_index_for_executable,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ],
- flag_groups = [flag_group(flags = ["-static-libgcc"])],
- with_features = [
- with_feature_set(features = ["static_link_cpp_runtimes"]),
- ],
- ),
- ],
- )
-
- pic_feature = feature(
- name = "pic",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(flags = ["-fPIC"], expand_if_available = "pic"),
- ],
- ),
- ],
- )
-
- per_object_debug_info_feature = feature(
- name = "per_object_debug_info",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
- flag_groups = [
- flag_group(
- flags = ["-gsplit-dwarf"],
- expand_if_available = "per_object_debug_info_file",
- ),
- ],
- ),
- ],
- )
-
- preprocessor_defines_feature = feature(
- name = "preprocessor_defines",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
- ],
- flag_groups = [
- flag_group(
- flags = ["-D%{preprocessor_defines}"],
- iterate_over = "preprocessor_defines",
- ),
- ],
- ),
- ],
- )
-
- cs_fdo_optimize_feature = feature(
- name = "cs_fdo_optimize",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.lto_backend],
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-use=%{fdo_profile_path}",
- "-Wno-profile-instr-unprofiled",
- "-Wno-profile-instr-out-of-date",
- "-fprofile-correction",
- ],
- expand_if_available = "fdo_profile_path",
- ),
- ],
- ),
- ],
- provides = ["csprofile"],
- )
-
- autofdo_feature = feature(
- name = "autofdo",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = [
- "-fauto-profile=%{fdo_profile_path}",
- "-fprofile-correction",
- ],
- expand_if_available = "fdo_profile_path",
- ),
- ],
- ),
- ],
- provides = ["profile"],
- )
-
- runtime_library_search_directories_feature = feature(
- name = "runtime_library_search_directories",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- iterate_over = "runtime_library_search_directories",
- flag_groups = [
- flag_group(
- flags = [
- "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}",
- ],
- expand_if_true = "is_cc_test",
- ),
- flag_group(
- flags = [
- "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
- ],
- expand_if_false = "is_cc_test",
- ),
- ],
- expand_if_available =
- "runtime_library_search_directories",
- ),
- ],
- with_features = [
- with_feature_set(features = ["static_link_cpp_runtimes"]),
- ],
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- iterate_over = "runtime_library_search_directories",
- flag_groups = [
- flag_group(
- flags = [
- "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
- ],
- ),
- ],
- expand_if_available =
- "runtime_library_search_directories",
- ),
- ],
- with_features = [
- with_feature_set(
- not_features = ["static_link_cpp_runtimes"],
- ),
- ],
- ),
- ],
- )
-
- fission_support_feature = feature(
- name = "fission_support",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-Wl,--gdb-index"],
- expand_if_available = "is_using_fission",
- ),
- ],
- ),
- ],
- )
-
- shared_flag_feature = feature(
- name = "shared_flag",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
- ],
- flag_groups = [flag_group(flags = ["-shared"])],
- ),
- ],
- )
-
- random_seed_feature = feature(
- name = "random_seed",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
- flag_group(
- flags = ["-frandom-seed=%{output_file}"],
- expand_if_available = "output_file",
- ),
- ],
- ),
- ],
- )
-
- includes_feature = feature(
- name = "includes",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ],
- flag_groups = [
- flag_group(
- flags = ["-include", "%{includes}"],
- iterate_over = "includes",
- expand_if_available = "includes",
- ),
- ],
- ),
- ],
- )
-
- fdo_instrument_feature = feature(
- name = "fdo_instrument",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-generate=%{fdo_instrument_path}",
- "-fno-data-sections",
- ],
- expand_if_available = "fdo_instrument_path",
- ),
- ],
- ),
- ],
- provides = ["profile"],
- )
-
- cs_fdo_instrument_feature = feature(
- name = "cs_fdo_instrument",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.lto_backend,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = [
- "-fcs-profile-generate=%{cs_fdo_instrument_path}",
- ],
- expand_if_available = "cs_fdo_instrument_path",
- ),
- ],
- ),
- ],
- provides = ["csprofile"],
- )
-
- include_paths_feature = feature(
- name = "include_paths",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.linkstamp_compile,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.clif_match,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ],
- flag_groups = [
- flag_group(
- flags = ["-iquote", "%{quote_include_paths}"],
- iterate_over = "quote_include_paths",
- ),
- flag_group(
- flags = ["-I%{include_paths}"],
- iterate_over = "include_paths",
- ),
- flag_group(
- flags = ["-isystem", "%{system_include_paths}"],
- iterate_over = "system_include_paths",
- ),
- ],
- ),
- ],
- )
-
- symbol_counts_feature = feature(
- name = "symbol_counts",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = [
- "-Wl,--print-symbol-counts=%{symbol_counts_output}",
- ],
- expand_if_available = "symbol_counts_output",
- ),
- ],
- ),
- ],
- )
-
- llvm_coverage_map_format_feature = feature(
- name = "llvm_coverage_map_format",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-fprofile-instr-generate",
- "-fcoverage-mapping",
- ],
- ),
- ],
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions + [
- "objc-executable",
- "objc++-executable",
- ],
- flag_groups = [
- flag_group(flags = ["-fprofile-instr-generate"]),
- ],
- ),
- ],
- requires = [feature_set(features = ["coverage"])],
- provides = ["profile"],
- )
-
- strip_debug_symbols_feature = feature(
- name = "strip_debug_symbols",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-Wl,-S"],
- expand_if_available = "strip_debug_symbols",
- ),
- ],
- ),
- ],
- )
-
- build_interface_libraries_feature = feature(
- name = "build_interface_libraries",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "%{generate_interface_library}",
- "%{interface_library_builder_path}",
- "%{interface_library_input_path}",
- "%{interface_library_output_path}",
- ],
- expand_if_available = "generate_interface_library",
- ),
- ],
- with_features = [
- with_feature_set(
- features = ["supports_interface_shared_libraries"],
- ),
- ],
- ),
- ],
- )
-
- libraries_to_link_feature = feature(
- name = "libraries_to_link",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link",
- flag_groups = [
- flag_group(
- flags = ["-Wl,--start-lib"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- flag_group(
- flags = ["-Wl,-whole-archive"],
- expand_if_true =
- "libraries_to_link.is_whole_archive",
- ),
- flag_group(
- flags = ["%{libraries_to_link.object_files}"],
- iterate_over = "libraries_to_link.object_files",
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "interface_library",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "static_library",
- ),
- ),
- flag_group(
- flags = ["-l%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "dynamic_library",
- ),
- ),
- flag_group(
- flags = ["-l:%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "versioned_dynamic_library",
- ),
- ),
- flag_group(
- flags = ["-Wl,-no-whole-archive"],
- expand_if_true = "libraries_to_link.is_whole_archive",
- ),
- flag_group(
- flags = ["-Wl,--end-lib"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- ],
- expand_if_available = "libraries_to_link",
- ),
- flag_group(
- flags = ["-Wl,@%{thinlto_param_file}"],
- expand_if_true = "thinlto_param_file",
- ),
- ],
- ),
- ],
- )
-
- user_link_flags_feature = feature(
- name = "user_link_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["%{user_link_flags}"],
- iterate_over = "user_link_flags",
- expand_if_available = "user_link_flags",
- ),
- ] + ([flag_group(flags = ctx.attr.link_libs)] if ctx.attr.link_libs else []),
- ),
- ],
- )
-
- fdo_prefetch_hints_feature = feature(
- name = "fdo_prefetch_hints",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.lto_backend,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-mllvm",
- "-prefetch-hints-file=%{fdo_prefetch_hints_path}",
- ],
- expand_if_available = "fdo_prefetch_hints_path",
- ),
- ],
- ),
- ],
- )
-
- linkstamps_feature = feature(
- name = "linkstamps",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["%{linkstamp_paths}"],
- iterate_over = "linkstamp_paths",
- expand_if_available = "linkstamp_paths",
- ),
- ],
- ),
- ],
- )
-
- gcc_coverage_map_format_feature = feature(
- name = "gcc_coverage_map_format",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- "objc-executable",
- "objc++-executable",
- ],
- flag_groups = [
- flag_group(
- flags = ["-fprofile-arcs", "-ftest-coverage"],
- expand_if_available = "gcov_gcno_file",
- ),
- ],
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [flag_group(flags = ["--coverage"])],
- ),
- ],
- requires = [feature_set(features = ["coverage"])],
- provides = ["profile"],
- )
-
- archiver_flags_feature = feature(
- name = "archiver_flags",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(flags = ["rcsD"]),
- flag_group(
- flags = ["%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link",
- flag_groups = [
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file",
- ),
- ),
- flag_group(
- flags = ["%{libraries_to_link.object_files}"],
- iterate_over = "libraries_to_link.object_files",
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- ],
- expand_if_available = "libraries_to_link",
- ),
- ],
- ),
- ],
- )
-
- force_pic_flags_feature = feature(
- name = "force_pic_flags",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.lto_index_for_executable,
- ],
- flag_groups = [
- flag_group(
- flags = ["-pie"],
- expand_if_available = "force_pic",
- ),
- ],
- ),
- ],
- )
-
- dependency_file_feature = feature(
- name = "dependency_file",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.objc_compile,
- ACTION_NAMES.objcpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.clif_match,
- ],
- flag_groups = [
- flag_group(
- flags = ["-MD", "-MF", "%{dependency_file}"],
- expand_if_available = "dependency_file",
- ),
- ],
- ),
- ],
- )
-
- dynamic_library_linker_tool_path = tool_paths
- dynamic_library_linker_tool_feature = feature(
- name = "dynamic_library_linker_tool",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.lto_index_for_dynamic_library,
- ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = [" + cppLinkDynamicLibraryToolPath + "],
- expand_if_available = "generate_interface_library",
- ),
- ],
- with_features = [
- with_feature_set(
- features = ["supports_interface_shared_libraries"],
- ),
- ],
- ),
- ],
- )
-
- output_execpath_flags_feature = feature(
- name = "output_execpath_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(
- flags = ["-o", "%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
- ),
- ],
- )
-
- # Note that we also set --coverage for c++-link-nodeps-dynamic-library. The
- # generated code contains references to gcov symbols, and the dynamic linker
- # can't resolve them unless the library is linked against gcov.
- coverage_feature = feature(
- name = "coverage",
- provides = ["profile"],
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = ([
- flag_group(flags = ctx.attr.coverage_compile_flags),
- ] if ctx.attr.coverage_compile_flags else []),
- ),
- flag_set(
- actions = all_link_actions + lto_index_actions,
- flag_groups = ([
- flag_group(flags = ctx.attr.coverage_link_flags),
- ] if ctx.attr.coverage_link_flags else []),
- ),
- ],
- )
-
- thinlto_feature = feature(
- name = "thin_lto",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ] + all_link_actions + lto_index_actions,
- flag_groups = [
- flag_group(flags = ["-flto=thin"]),
- flag_group(
- expand_if_available = "lto_indexing_bitcode_file",
- flags = [
- "-Xclang",
- "-fthin-link-bitcode=%{lto_indexing_bitcode_file}",
- ],
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.linkstamp_compile],
- flag_groups = [flag_group(flags = ["-DBUILD_LTO_TYPE=thin"])],
- ),
- flag_set(
- actions = lto_index_actions,
- flag_groups = [
- flag_group(flags = [
- "-flto=thin",
- "-Wl,-plugin-opt,thinlto-index-only%{thinlto_optional_params_file}",
- "-Wl,-plugin-opt,thinlto-emit-imports-files",
- "-Wl,-plugin-opt,thinlto-prefix-replace=%{thinlto_prefix_replace}",
- ]),
- flag_group(
- expand_if_available = "thinlto_object_suffix_replace",
- flags = [
- "-Wl,-plugin-opt,thinlto-object-suffix-replace=%{thinlto_object_suffix_replace}",
- ],
- ),
- flag_group(
- expand_if_available = "thinlto_merged_object_file",
- flags = [
- "-Wl,-plugin-opt,obj-path=%{thinlto_merged_object_file}",
- ],
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.lto_backend],
- flag_groups = [
- flag_group(flags = [
- "-c",
- "-fthinlto-index=%{thinlto_index}",
- "-o",
- "%{thinlto_output_object_file}",
- "-x",
- "ir",
- "%{thinlto_input_bitcode_file}",
- ]),
- ],
- ),
- ],
- )
-
- is_linux = ctx.attr.target_libc != "macosx"
-
- # TODO(#8303): Mac crosstool should also declare every feature.
- if is_linux:
- features = [
- dependency_file_feature,
- random_seed_feature,
- pic_feature,
- per_object_debug_info_feature,
- preprocessor_defines_feature,
- includes_feature,
- include_paths_feature,
- fdo_instrument_feature,
- cs_fdo_instrument_feature,
- cs_fdo_optimize_feature,
- thinlto_feature,
- fdo_prefetch_hints_feature,
- autofdo_feature,
- build_interface_libraries_feature,
- dynamic_library_linker_tool_feature,
- symbol_counts_feature,
- shared_flag_feature,
- linkstamps_feature,
- output_execpath_flags_feature,
- runtime_library_search_directories_feature,
- library_search_directories_feature,
- archiver_flags_feature,
- force_pic_flags_feature,
- fission_support_feature,
- strip_debug_symbols_feature,
- coverage_feature,
- supports_pic_feature,
- ] + (
- [
- supports_start_end_lib_feature,
- ] if ctx.attr.supports_start_end_lib else []
- ) + [
- default_compile_flags_feature,
- default_link_flags_feature,
- libraries_to_link_feature,
- user_link_flags_feature,
- static_libgcc_feature,
- fdo_optimize_feature,
- supports_dynamic_linker_feature,
- dbg_feature,
- opt_feature,
- user_compile_flags_feature,
- sysroot_feature,
- unfiltered_compile_flags_feature,
- ] + layering_check_features(ctx.attr.compiler)
- else:
- features = [
- supports_pic_feature,
- ] + (
- [
- supports_start_end_lib_feature,
- ] if ctx.attr.supports_start_end_lib else []
- ) + [
- coverage_feature,
- default_compile_flags_feature,
- default_link_flags_feature,
- fdo_optimize_feature,
- supports_dynamic_linker_feature,
- dbg_feature,
- opt_feature,
- user_compile_flags_feature,
- sysroot_feature,
- unfiltered_compile_flags_feature,
- ] + layering_check_features(ctx.attr.compiler)
-
- return cc_common.create_cc_toolchain_config_info(
- ctx = ctx,
- features = features,
- action_configs = action_configs,
- cxx_builtin_include_directories = ctx.attr.cxx_builtin_include_directories,
- toolchain_identifier = ctx.attr.toolchain_identifier,
- host_system_name = ctx.attr.host_system_name,
- target_system_name = ctx.attr.target_system_name,
- target_cpu = ctx.attr.cpu,
- target_libc = ctx.attr.target_libc,
- compiler = ctx.attr.compiler,
- abi_version = ctx.attr.abi_version,
- abi_libc_version = ctx.attr.abi_libc_version,
- tool_paths = tool_paths,
- builtin_sysroot = ctx.attr.builtin_sysroot,
- )
-
-cc_toolchain_config = rule(
- implementation = _impl,
- attrs = {
- "cpu": attr.string(mandatory = True),
- "compiler": attr.string(mandatory = True),
- "toolchain_identifier": attr.string(mandatory = True),
- "host_system_name": attr.string(mandatory = True),
- "target_system_name": attr.string(mandatory = True),
- "target_libc": attr.string(mandatory = True),
- "abi_version": attr.string(mandatory = True),
- "abi_libc_version": attr.string(mandatory = True),
- "cxx_builtin_include_directories": attr.string_list(),
- "tool_paths": attr.string_dict(),
- "compile_flags": attr.string_list(),
- "dbg_compile_flags": attr.string_list(),
- "opt_compile_flags": attr.string_list(),
- "cxx_flags": attr.string_list(),
- "link_flags": attr.string_list(),
- "link_libs": attr.string_list(),
- "opt_link_flags": attr.string_list(),
- "unfiltered_compile_flags": attr.string_list(),
- "coverage_compile_flags": attr.string_list(),
- "coverage_link_flags": attr.string_list(),
- "supports_start_end_lib": attr.bool(),
- "builtin_sysroot": attr.string(),
- },
- provides = [CcToolchainConfigInfo],
-)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/module.modulemap b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/module.modulemap
deleted file mode 100755
index 5671c2bcb..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/module.modulemap
+++ /dev/null
@@ -1,4757 +0,0 @@
-module "crosstool" [system] {
- textual header "/usr/local/include/c++/v1/__bit_reference"
- textual header "/usr/local/include/c++/v1/__bsd_locale_defaults.h"
- textual header "/usr/local/include/c++/v1/__bsd_locale_fallbacks.h"
- textual header "/usr/local/include/c++/v1/__config"
- textual header "/usr/local/include/c++/v1/__cxxabi_config.h"
- textual header "/usr/local/include/c++/v1/__debug"
- textual header "/usr/local/include/c++/v1/__errc"
- textual header "/usr/local/include/c++/v1/__functional_03"
- textual header "/usr/local/include/c++/v1/__functional_base"
- textual header "/usr/local/include/c++/v1/__functional_base_03"
- textual header "/usr/local/include/c++/v1/__hash_table"
- textual header "/usr/local/include/c++/v1/__libcpp_version"
- textual header "/usr/local/include/c++/v1/__locale"
- textual header "/usr/local/include/c++/v1/__mutex_base"
- textual header "/usr/local/include/c++/v1/__node_handle"
- textual header "/usr/local/include/c++/v1/__nullptr"
- textual header "/usr/local/include/c++/v1/__split_buffer"
- textual header "/usr/local/include/c++/v1/__sso_allocator"
- textual header "/usr/local/include/c++/v1/__std_stream"
- textual header "/usr/local/include/c++/v1/__string"
- textual header "/usr/local/include/c++/v1/__threading_support"
- textual header "/usr/local/include/c++/v1/__tree"
- textual header "/usr/local/include/c++/v1/__tuple"
- textual header "/usr/local/include/c++/v1/__undef_macros"
- textual header "/usr/local/include/c++/v1/algorithm"
- textual header "/usr/local/include/c++/v1/any"
- textual header "/usr/local/include/c++/v1/array"
- textual header "/usr/local/include/c++/v1/atomic"
- textual header "/usr/local/include/c++/v1/barrier"
- textual header "/usr/local/include/c++/v1/bit"
- textual header "/usr/local/include/c++/v1/bitset"
- textual header "/usr/local/include/c++/v1/cassert"
- textual header "/usr/local/include/c++/v1/ccomplex"
- textual header "/usr/local/include/c++/v1/cctype"
- textual header "/usr/local/include/c++/v1/cerrno"
- textual header "/usr/local/include/c++/v1/cfenv"
- textual header "/usr/local/include/c++/v1/cfloat"
- textual header "/usr/local/include/c++/v1/charconv"
- textual header "/usr/local/include/c++/v1/chrono"
- textual header "/usr/local/include/c++/v1/cinttypes"
- textual header "/usr/local/include/c++/v1/ciso646"
- textual header "/usr/local/include/c++/v1/climits"
- textual header "/usr/local/include/c++/v1/clocale"
- textual header "/usr/local/include/c++/v1/cmath"
- textual header "/usr/local/include/c++/v1/codecvt"
- textual header "/usr/local/include/c++/v1/compare"
- textual header "/usr/local/include/c++/v1/complex"
- textual header "/usr/local/include/c++/v1/complex.h"
- textual header "/usr/local/include/c++/v1/concepts"
- textual header "/usr/local/include/c++/v1/condition_variable"
- textual header "/usr/local/include/c++/v1/csetjmp"
- textual header "/usr/local/include/c++/v1/csignal"
- textual header "/usr/local/include/c++/v1/cstdarg"
- textual header "/usr/local/include/c++/v1/cstdbool"
- textual header "/usr/local/include/c++/v1/cstddef"
- textual header "/usr/local/include/c++/v1/cstdint"
- textual header "/usr/local/include/c++/v1/cstdio"
- textual header "/usr/local/include/c++/v1/cstdlib"
- textual header "/usr/local/include/c++/v1/cstring"
- textual header "/usr/local/include/c++/v1/ctgmath"
- textual header "/usr/local/include/c++/v1/ctime"
- textual header "/usr/local/include/c++/v1/ctype.h"
- textual header "/usr/local/include/c++/v1/cwchar"
- textual header "/usr/local/include/c++/v1/cwctype"
- textual header "/usr/local/include/c++/v1/cxxabi.h"
- textual header "/usr/local/include/c++/v1/deque"
- textual header "/usr/local/include/c++/v1/errno.h"
- textual header "/usr/local/include/c++/v1/exception"
- textual header "/usr/local/include/c++/v1/execution"
- textual header "/usr/local/include/c++/v1/experimental/__config"
- textual header "/usr/local/include/c++/v1/experimental/__memory"
- textual header "/usr/local/include/c++/v1/experimental/algorithm"
- textual header "/usr/local/include/c++/v1/experimental/coroutine"
- textual header "/usr/local/include/c++/v1/experimental/deque"
- textual header "/usr/local/include/c++/v1/experimental/filesystem"
- textual header "/usr/local/include/c++/v1/experimental/forward_list"
- textual header "/usr/local/include/c++/v1/experimental/functional"
- textual header "/usr/local/include/c++/v1/experimental/iterator"
- textual header "/usr/local/include/c++/v1/experimental/list"
- textual header "/usr/local/include/c++/v1/experimental/map"
- textual header "/usr/local/include/c++/v1/experimental/memory_resource"
- textual header "/usr/local/include/c++/v1/experimental/propagate_const"
- textual header "/usr/local/include/c++/v1/experimental/regex"
- textual header "/usr/local/include/c++/v1/experimental/set"
- textual header "/usr/local/include/c++/v1/experimental/simd"
- textual header "/usr/local/include/c++/v1/experimental/string"
- textual header "/usr/local/include/c++/v1/experimental/type_traits"
- textual header "/usr/local/include/c++/v1/experimental/unordered_map"
- textual header "/usr/local/include/c++/v1/experimental/unordered_set"
- textual header "/usr/local/include/c++/v1/experimental/utility"
- textual header "/usr/local/include/c++/v1/experimental/vector"
- textual header "/usr/local/include/c++/v1/ext/__hash"
- textual header "/usr/local/include/c++/v1/ext/hash_map"
- textual header "/usr/local/include/c++/v1/ext/hash_set"
- textual header "/usr/local/include/c++/v1/fenv.h"
- textual header "/usr/local/include/c++/v1/filesystem"
- textual header "/usr/local/include/c++/v1/float.h"
- textual header "/usr/local/include/c++/v1/forward_list"
- textual header "/usr/local/include/c++/v1/fstream"
- textual header "/usr/local/include/c++/v1/functional"
- textual header "/usr/local/include/c++/v1/future"
- textual header "/usr/local/include/c++/v1/initializer_list"
- textual header "/usr/local/include/c++/v1/inttypes.h"
- textual header "/usr/local/include/c++/v1/iomanip"
- textual header "/usr/local/include/c++/v1/ios"
- textual header "/usr/local/include/c++/v1/iosfwd"
- textual header "/usr/local/include/c++/v1/iostream"
- textual header "/usr/local/include/c++/v1/istream"
- textual header "/usr/local/include/c++/v1/iterator"
- textual header "/usr/local/include/c++/v1/latch"
- textual header "/usr/local/include/c++/v1/limits"
- textual header "/usr/local/include/c++/v1/limits.h"
- textual header "/usr/local/include/c++/v1/list"
- textual header "/usr/local/include/c++/v1/locale"
- textual header "/usr/local/include/c++/v1/locale.h"
- textual header "/usr/local/include/c++/v1/map"
- textual header "/usr/local/include/c++/v1/math.h"
- textual header "/usr/local/include/c++/v1/memory"
- textual header "/usr/local/include/c++/v1/module.modulemap"
- textual header "/usr/local/include/c++/v1/mutex"
- textual header "/usr/local/include/c++/v1/new"
- textual header "/usr/local/include/c++/v1/numbers"
- textual header "/usr/local/include/c++/v1/numeric"
- textual header "/usr/local/include/c++/v1/optional"
- textual header "/usr/local/include/c++/v1/ostream"
- textual header "/usr/local/include/c++/v1/queue"
- textual header "/usr/local/include/c++/v1/random"
- textual header "/usr/local/include/c++/v1/ratio"
- textual header "/usr/local/include/c++/v1/regex"
- textual header "/usr/local/include/c++/v1/scoped_allocator"
- textual header "/usr/local/include/c++/v1/semaphore"
- textual header "/usr/local/include/c++/v1/set"
- textual header "/usr/local/include/c++/v1/setjmp.h"
- textual header "/usr/local/include/c++/v1/shared_mutex"
- textual header "/usr/local/include/c++/v1/span"
- textual header "/usr/local/include/c++/v1/sstream"
- textual header "/usr/local/include/c++/v1/stack"
- textual header "/usr/local/include/c++/v1/stdbool.h"
- textual header "/usr/local/include/c++/v1/stddef.h"
- textual header "/usr/local/include/c++/v1/stdexcept"
- textual header "/usr/local/include/c++/v1/stdint.h"
- textual header "/usr/local/include/c++/v1/stdio.h"
- textual header "/usr/local/include/c++/v1/stdlib.h"
- textual header "/usr/local/include/c++/v1/streambuf"
- textual header "/usr/local/include/c++/v1/string"
- textual header "/usr/local/include/c++/v1/string.h"
- textual header "/usr/local/include/c++/v1/string_view"
- textual header "/usr/local/include/c++/v1/strstream"
- textual header "/usr/local/include/c++/v1/support/android/locale_bionic.h"
- textual header "/usr/local/include/c++/v1/support/fuchsia/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/ibm/limits.h"
- textual header "/usr/local/include/c++/v1/support/ibm/locale_mgmt_aix.h"
- textual header "/usr/local/include/c++/v1/support/ibm/support.h"
- textual header "/usr/local/include/c++/v1/support/ibm/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/musl/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/newlib/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/solaris/floatingpoint.h"
- textual header "/usr/local/include/c++/v1/support/solaris/wchar.h"
- textual header "/usr/local/include/c++/v1/support/solaris/xlocale.h"
- textual header "/usr/local/include/c++/v1/support/win32/limits_msvc_win32.h"
- textual header "/usr/local/include/c++/v1/support/win32/locale_win32.h"
- textual header "/usr/local/include/c++/v1/support/xlocale/__nop_locale_mgmt.h"
- textual header "/usr/local/include/c++/v1/support/xlocale/__posix_l_fallback.h"
- textual header "/usr/local/include/c++/v1/support/xlocale/__strtonum_fallback.h"
- textual header "/usr/local/include/c++/v1/system_error"
- textual header "/usr/local/include/c++/v1/tgmath.h"
- textual header "/usr/local/include/c++/v1/thread"
- textual header "/usr/local/include/c++/v1/tuple"
- textual header "/usr/local/include/c++/v1/type_traits"
- textual header "/usr/local/include/c++/v1/typeindex"
- textual header "/usr/local/include/c++/v1/typeinfo"
- textual header "/usr/local/include/c++/v1/unordered_map"
- textual header "/usr/local/include/c++/v1/unordered_set"
- textual header "/usr/local/include/c++/v1/utility"
- textual header "/usr/local/include/c++/v1/valarray"
- textual header "/usr/local/include/c++/v1/variant"
- textual header "/usr/local/include/c++/v1/vector"
- textual header "/usr/local/include/c++/v1/version"
- textual header "/usr/local/include/c++/v1/wchar.h"
- textual header "/usr/local/include/c++/v1/wctype.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_builtin_vars.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_cmath.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_complex_builtins.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_device_functions.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_intrinsics.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_libdevice_declares.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_math.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_math_forward_declares.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_cuda_runtime_wrapper.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_hip_libdevice_declares.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_hip_math.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__clang_hip_runtime_wrapper.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__stddef_max_align_t.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__wmmintrin_aes.h"
- textual header "/usr/local/lib/clang/12.0.0/include/__wmmintrin_pclmul.h"
- textual header "/usr/local/lib/clang/12.0.0/include/adxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/altivec.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ammintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/amxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm64intr.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_acle.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_bf16.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_cde.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_cmse.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_fp16.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_mve.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_neon.h"
- textual header "/usr/local/lib/clang/12.0.0/include/arm_sve.h"
- textual header "/usr/local/lib/clang/12.0.0/include/armintr.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512bf16intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512bitalgintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512bwintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512cdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512dqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512erintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512fintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512ifmaintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512ifmavlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512pfintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vbmi2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vbmiintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vbmivlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlbf16intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlbitalgintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlbwintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlcdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vldqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlvbmi2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlvnniintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vlvp2intersectintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vnniintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vp2intersectintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vpopcntdqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avx512vpopcntdqvlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/avxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/bmi2intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/bmiintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cet.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cetintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cldemoteintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/clflushoptintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/clwbintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/clzerointrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cpuid.h"
- textual header "/usr/local/lib/clang/12.0.0/include/cuda_wrappers/algorithm"
- textual header "/usr/local/lib/clang/12.0.0/include/cuda_wrappers/complex"
- textual header "/usr/local/lib/clang/12.0.0/include/cuda_wrappers/new"
- textual header "/usr/local/lib/clang/12.0.0/include/emmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/enqcmdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/f16cintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/float.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fma4intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fmaintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fuzzer/FuzzedDataProvider.h"
- textual header "/usr/local/lib/clang/12.0.0/include/fxsrintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/gfniintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/htmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/htmxlintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ia32intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/immintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/inttypes.h"
- textual header "/usr/local/lib/clang/12.0.0/include/invpcidintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/iso646.h"
- textual header "/usr/local/lib/clang/12.0.0/include/keylocker_wide_intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/keylockerintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/limits.h"
- textual header "/usr/local/lib/clang/12.0.0/include/lwpintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/lzcntintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mm3dnow.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mm_malloc.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/module.modulemap"
- textual header "/usr/local/lib/clang/12.0.0/include/movdirintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/msa.h"
- textual header "/usr/local/lib/clang/12.0.0/include/mwaitxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/nmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/opencl-c-base.h"
- textual header "/usr/local/lib/clang/12.0.0/include/opencl-c.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/cmath"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/complex"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/complex.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/complex_cmath.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/math.h"
- textual header "/usr/local/lib/clang/12.0.0/include/openmp_wrappers/new"
- textual header "/usr/local/lib/clang/12.0.0/include/pconfigintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/pkuintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/pmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/popcntintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/emmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/mm_malloc.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/mmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/pmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/smmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/tmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/ppc_wrappers/xmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/prfchwintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/profile/InstrProfData.inc"
- textual header "/usr/local/lib/clang/12.0.0/include/ptwriteintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/rdseedintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/rtmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/s390intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/allocator_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/asan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/common_interface_defs.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/coverage_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/dfsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/hwasan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/linux_syscall_hooks.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/lsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/msan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/netbsd_syscall_hooks.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/scudo_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/tsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/tsan_interface_atomic.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sanitizer/ubsan_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/serializeintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/sgxintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/shaintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/smmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdalign.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdarg.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdatomic.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdbool.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stddef.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdint.h"
- textual header "/usr/local/lib/clang/12.0.0/include/stdnoreturn.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tbmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tgmath.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/tsxldtrkintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/unwind.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vadefs.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vaesintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/varargs.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vecintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/vpclmulqdqintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/waitpkgintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/wasm_simd128.h"
- textual header "/usr/local/lib/clang/12.0.0/include/wbnoinvdintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/wmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/x86intrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xmmintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xopintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xray/xray_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xray/xray_log_interface.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xray/xray_records.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsavecintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsaveintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsaveoptintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xsavesintrin.h"
- textual header "/usr/local/lib/clang/12.0.0/include/xtestintrin.h"
- textual header "/usr/include/x86_64-linux-gnu/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/auxvec.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/boot.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bootparam.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bpf_perf_event.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/byteorder.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/e820.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hw_breakpoint.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hwcap2.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hyperv.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ipcbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ist.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_para.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_perf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ldt.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mce.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msgbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mtrr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/param.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/perf_regs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/processor-flags.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace-abi.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sembuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/setup.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/shmbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/siginfo.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sockios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/svm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/swab.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termbits.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vmx.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vsyscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/_G_config.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cmathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/confname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cpu-set.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dirent.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dlfcn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/elfclass.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/endian.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/environments.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/error.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenvinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn-common.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-fast.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-logb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_core.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_posix.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/hwcap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/in.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/initspin.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctl-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipctypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/iscanonical.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/link.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/local_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/locale.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/long-double.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-finite.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-vector.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathdef.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/monetary-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/msq.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/netdb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/param.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix_opt.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/printf-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ptrace-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sched.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/semaphore.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigaction.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum-generic.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigthread.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket_type.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ss_flags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stab.def"
- textual header "/usr/include/x86_64-linux-gnu/bits/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/string_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/strings_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-path.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/time.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clock_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/res_state.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/stack_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_rusage.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/time_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/timer_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/wint_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/typesizes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uintn-identity.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio-ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmpx.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitflags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitstatus.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wordsize.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xtitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/expat_config.h"
- textual header "/usr/include/x86_64-linux-gnu/fpu_control.h"
- textual header "/usr/include/x86_64-linux-gnu/gmp.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/libc-version.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/ieee754.h"
- textual header "/usr/include/x86_64-linux-gnu/python2.7/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/python3.7m/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/ruby-2.5.0/ruby/config.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/acct.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/bitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/cdefs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/dir.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/elf.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fanotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/file.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fsuid.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon_out.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/io.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/kd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/klog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mount.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/msg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mtio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/param.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/pci.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/perm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/personality.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/procfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/profil.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/queue.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/quota.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/random.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/raw.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reboot.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/select.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sendfile.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socketvar.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/soundcard.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/swap.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysinfo.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/time.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timeb.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/times.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttychars.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttydefaults.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/types.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/uio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/un.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/user.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vlimit.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vt.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vtimes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/wait.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/xattr.h"
- textual header "/usr/include/FlexLexer.h"
- textual header "/usr/include/X11/bitmaps/1x1"
- textual header "/usr/include/X11/bitmaps/2x2"
- textual header "/usr/include/X11/bitmaps/black"
- textual header "/usr/include/X11/bitmaps/black6"
- textual header "/usr/include/X11/bitmaps/box6"
- textual header "/usr/include/X11/bitmaps/boxes"
- textual header "/usr/include/X11/bitmaps/calculator"
- textual header "/usr/include/X11/bitmaps/cntr_ptr"
- textual header "/usr/include/X11/bitmaps/cntr_ptrmsk"
- textual header "/usr/include/X11/bitmaps/cross_weave"
- textual header "/usr/include/X11/bitmaps/dimple1"
- textual header "/usr/include/X11/bitmaps/dimple3"
- textual header "/usr/include/X11/bitmaps/dot"
- textual header "/usr/include/X11/bitmaps/dropbar7"
- textual header "/usr/include/X11/bitmaps/dropbar8"
- textual header "/usr/include/X11/bitmaps/escherknot"
- textual header "/usr/include/X11/bitmaps/flagdown"
- textual header "/usr/include/X11/bitmaps/flagup"
- textual header "/usr/include/X11/bitmaps/flipped_gray"
- textual header "/usr/include/X11/bitmaps/gray"
- textual header "/usr/include/X11/bitmaps/gray1"
- textual header "/usr/include/X11/bitmaps/gray3"
- textual header "/usr/include/X11/bitmaps/grid16"
- textual header "/usr/include/X11/bitmaps/grid2"
- textual header "/usr/include/X11/bitmaps/grid4"
- textual header "/usr/include/X11/bitmaps/grid8"
- textual header "/usr/include/X11/bitmaps/hlines2"
- textual header "/usr/include/X11/bitmaps/hlines3"
- textual header "/usr/include/X11/bitmaps/icon"
- textual header "/usr/include/X11/bitmaps/keyboard16"
- textual header "/usr/include/X11/bitmaps/left_ptr"
- textual header "/usr/include/X11/bitmaps/left_ptrmsk"
- textual header "/usr/include/X11/bitmaps/letters"
- textual header "/usr/include/X11/bitmaps/light_gray"
- textual header "/usr/include/X11/bitmaps/mailempty"
- textual header "/usr/include/X11/bitmaps/mailemptymsk"
- textual header "/usr/include/X11/bitmaps/mailfull"
- textual header "/usr/include/X11/bitmaps/mailfullmsk"
- textual header "/usr/include/X11/bitmaps/mensetmanus"
- textual header "/usr/include/X11/bitmaps/menu10"
- textual header "/usr/include/X11/bitmaps/menu12"
- textual header "/usr/include/X11/bitmaps/menu16"
- textual header "/usr/include/X11/bitmaps/menu6"
- textual header "/usr/include/X11/bitmaps/menu8"
- textual header "/usr/include/X11/bitmaps/noletters"
- textual header "/usr/include/X11/bitmaps/opendot"
- textual header "/usr/include/X11/bitmaps/opendotMask"
- textual header "/usr/include/X11/bitmaps/plaid"
- textual header "/usr/include/X11/bitmaps/right_ptr"
- textual header "/usr/include/X11/bitmaps/right_ptrmsk"
- textual header "/usr/include/X11/bitmaps/root_weave"
- textual header "/usr/include/X11/bitmaps/scales"
- textual header "/usr/include/X11/bitmaps/sipb"
- textual header "/usr/include/X11/bitmaps/star"
- textual header "/usr/include/X11/bitmaps/starMask"
- textual header "/usr/include/X11/bitmaps/stipple"
- textual header "/usr/include/X11/bitmaps/target"
- textual header "/usr/include/X11/bitmaps/terminal"
- textual header "/usr/include/X11/bitmaps/tie_fighter"
- textual header "/usr/include/X11/bitmaps/vlines2"
- textual header "/usr/include/X11/bitmaps/vlines3"
- textual header "/usr/include/X11/bitmaps/weird_size"
- textual header "/usr/include/X11/bitmaps/wide_weave"
- textual header "/usr/include/X11/bitmaps/wingdogs"
- textual header "/usr/include/X11/bitmaps/woman"
- textual header "/usr/include/X11/bitmaps/xfd_icon"
- textual header "/usr/include/X11/bitmaps/xlogo11"
- textual header "/usr/include/X11/bitmaps/xlogo16"
- textual header "/usr/include/X11/bitmaps/xlogo32"
- textual header "/usr/include/X11/bitmaps/xlogo64"
- textual header "/usr/include/X11/bitmaps/xsnow"
- textual header "/usr/include/_G_config.h"
- textual header "/usr/include/aio.h"
- textual header "/usr/include/aliases.h"
- textual header "/usr/include/alloca.h"
- textual header "/usr/include/ar.h"
- textual header "/usr/include/argp.h"
- textual header "/usr/include/argz.h"
- textual header "/usr/include/arpa/ftp.h"
- textual header "/usr/include/arpa/inet.h"
- textual header "/usr/include/arpa/nameser.h"
- textual header "/usr/include/arpa/nameser_compat.h"
- textual header "/usr/include/arpa/telnet.h"
- textual header "/usr/include/arpa/tftp.h"
- textual header "/usr/include/asm-generic/auxvec.h"
- textual header "/usr/include/asm-generic/bitsperlong.h"
- textual header "/usr/include/asm-generic/bpf_perf_event.h"
- textual header "/usr/include/asm-generic/errno-base.h"
- textual header "/usr/include/asm-generic/errno.h"
- textual header "/usr/include/asm-generic/fcntl.h"
- textual header "/usr/include/asm-generic/hugetlb_encode.h"
- textual header "/usr/include/asm-generic/int-l64.h"
- textual header "/usr/include/asm-generic/int-ll64.h"
- textual header "/usr/include/asm-generic/ioctl.h"
- textual header "/usr/include/asm-generic/ioctls.h"
- textual header "/usr/include/asm-generic/ipcbuf.h"
- textual header "/usr/include/asm-generic/kvm_para.h"
- textual header "/usr/include/asm-generic/mman-common.h"
- textual header "/usr/include/asm-generic/mman.h"
- textual header "/usr/include/asm-generic/msgbuf.h"
- textual header "/usr/include/asm-generic/param.h"
- textual header "/usr/include/asm-generic/poll.h"
- textual header "/usr/include/asm-generic/posix_types.h"
- textual header "/usr/include/asm-generic/resource.h"
- textual header "/usr/include/asm-generic/sembuf.h"
- textual header "/usr/include/asm-generic/setup.h"
- textual header "/usr/include/asm-generic/shmbuf.h"
- textual header "/usr/include/asm-generic/shmparam.h"
- textual header "/usr/include/asm-generic/siginfo.h"
- textual header "/usr/include/asm-generic/signal-defs.h"
- textual header "/usr/include/asm-generic/signal.h"
- textual header "/usr/include/asm-generic/socket.h"
- textual header "/usr/include/asm-generic/sockios.h"
- textual header "/usr/include/asm-generic/stat.h"
- textual header "/usr/include/asm-generic/statfs.h"
- textual header "/usr/include/asm-generic/swab.h"
- textual header "/usr/include/asm-generic/termbits.h"
- textual header "/usr/include/asm-generic/termios.h"
- textual header "/usr/include/asm-generic/types.h"
- textual header "/usr/include/asm-generic/ucontext.h"
- textual header "/usr/include/asm-generic/unistd.h"
- textual header "/usr/include/assert.h"
- textual header "/usr/include/byteswap.h"
- textual header "/usr/include/c++/7.5.0/algorithm"
- textual header "/usr/include/c++/7.5.0/any"
- textual header "/usr/include/c++/7.5.0/array"
- textual header "/usr/include/c++/7.5.0/atomic"
- textual header "/usr/include/c++/7.5.0/backward/auto_ptr.h"
- textual header "/usr/include/c++/7.5.0/backward/backward_warning.h"
- textual header "/usr/include/c++/7.5.0/backward/binders.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_fun.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_map"
- textual header "/usr/include/c++/7.5.0/backward/hash_set"
- textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
- textual header "/usr/include/c++/7.5.0/backward/strstream"
- textual header "/usr/include/c++/7.5.0/bits/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/allocated_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_base.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_futex.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_lockfree_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.tcc"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.tcc"
- textual header "/usr/include/c++/7.5.0/bits/boost_concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/c++0x_warning.h"
- textual header "/usr/include/c++/7.5.0/bits/char_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/codecvt.h"
- textual header "/usr/include/c++/7.5.0/bits/concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/cpp_type_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_forced.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_init_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/deque.tcc"
- textual header "/usr/include/c++/7.5.0/bits/enable_special_members.h"
- textual header "/usr/include/c++/7.5.0/bits/exception.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/fstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/functexcept.h"
- textual header "/usr/include/c++/7.5.0/bits/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/hash_bytes.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/bits/indirect_array.h"
- textual header "/usr/include/c++/7.5.0/bits/invoke.h"
- textual header "/usr/include/c++/7.5.0/bits/ios_base.h"
- textual header "/usr/include/c++/7.5.0/bits/istream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_conv.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.tcc"
- textual header "/usr/include/c++/7.5.0/bits/localefwd.h"
- textual header "/usr/include/c++/7.5.0/bits/mask_array.h"
- textual header "/usr/include/c++/7.5.0/bits/memoryfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/move.h"
- textual header "/usr/include/c++/7.5.0/bits/nested_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/node_handle.h"
- textual header "/usr/include/c++/7.5.0/bits/ostream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/ostream_insert.h"
- textual header "/usr/include/c++/7.5.0/bits/parse_numbers.h"
- textual header "/usr/include/c++/7.5.0/bits/postypes.h"
- textual header "/usr/include/c++/7.5.0/bits/predefined_ops.h"
- textual header "/usr/include/c++/7.5.0/bits/ptr_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/quoted_string.h"
- textual header "/usr/include/c++/7.5.0/bits/random.h"
- textual header "/usr/include/c++/7.5.0/bits/random.tcc"
- textual header "/usr/include/c++/7.5.0/bits/range_access.h"
- textual header "/usr/include/c++/7.5.0/bits/refwrap.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_constants.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_error.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.tcc"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_atomic.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_base.h"
- textual header "/usr/include/c++/7.5.0/bits/slice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/specfun.h"
- textual header "/usr/include/c++/7.5.0/bits/sstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/std_abs.h"
- textual header "/usr/include/c++/7.5.0/bits/std_function.h"
- textual header "/usr/include/c++/7.5.0/bits/std_mutex.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algo.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algobase.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_bvector.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_construct.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_deque.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_function.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_heap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_funcs.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_types.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_list.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_map.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multimap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multiset.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_numeric.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_pair.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_queue.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_raw_storage_iter.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_relops.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_set.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_stack.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tempbuf.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tree.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_uninitialized.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_vector.h"
- textual header "/usr/include/c++/7.5.0/bits/stream_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/streambuf.tcc"
- textual header "/usr/include/c++/7.5.0/bits/streambuf_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/bits/stringfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/uniform_int_dist.h"
- textual header "/usr/include/c++/7.5.0/bits/unique_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/bits/uses_allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_after.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.tcc"
- textual header "/usr/include/c++/7.5.0/bits/valarray_before.h"
- textual header "/usr/include/c++/7.5.0/bits/vector.tcc"
- textual header "/usr/include/c++/7.5.0/bitset"
- textual header "/usr/include/c++/7.5.0/cassert"
- textual header "/usr/include/c++/7.5.0/ccomplex"
- textual header "/usr/include/c++/7.5.0/cctype"
- textual header "/usr/include/c++/7.5.0/cerrno"
- textual header "/usr/include/c++/7.5.0/cfenv"
- textual header "/usr/include/c++/7.5.0/cfloat"
- textual header "/usr/include/c++/7.5.0/chrono"
- textual header "/usr/include/c++/7.5.0/cinttypes"
- textual header "/usr/include/c++/7.5.0/ciso646"
- textual header "/usr/include/c++/7.5.0/climits"
- textual header "/usr/include/c++/7.5.0/clocale"
- textual header "/usr/include/c++/7.5.0/cmath"
- textual header "/usr/include/c++/7.5.0/codecvt"
- textual header "/usr/include/c++/7.5.0/complex"
- textual header "/usr/include/c++/7.5.0/complex.h"
- textual header "/usr/include/c++/7.5.0/condition_variable"
- textual header "/usr/include/c++/7.5.0/csetjmp"
- textual header "/usr/include/c++/7.5.0/csignal"
- textual header "/usr/include/c++/7.5.0/cstdalign"
- textual header "/usr/include/c++/7.5.0/cstdarg"
- textual header "/usr/include/c++/7.5.0/cstdbool"
- textual header "/usr/include/c++/7.5.0/cstddef"
- textual header "/usr/include/c++/7.5.0/cstdint"
- textual header "/usr/include/c++/7.5.0/cstdio"
- textual header "/usr/include/c++/7.5.0/cstdlib"
- textual header "/usr/include/c++/7.5.0/cstring"
- textual header "/usr/include/c++/7.5.0/ctgmath"
- textual header "/usr/include/c++/7.5.0/ctime"
- textual header "/usr/include/c++/7.5.0/cuchar"
- textual header "/usr/include/c++/7.5.0/cwchar"
- textual header "/usr/include/c++/7.5.0/cwctype"
- textual header "/usr/include/c++/7.5.0/cxxabi.h"
- textual header "/usr/include/c++/7.5.0/debug/array"
- textual header "/usr/include/c++/7.5.0/debug/assertions.h"
- textual header "/usr/include/c++/7.5.0/debug/bitset"
- textual header "/usr/include/c++/7.5.0/debug/debug.h"
- textual header "/usr/include/c++/7.5.0/debug/deque"
- textual header "/usr/include/c++/7.5.0/debug/formatter.h"
- textual header "/usr/include/c++/7.5.0/debug/forward_list"
- textual header "/usr/include/c++/7.5.0/debug/functions.h"
- textual header "/usr/include/c++/7.5.0/debug/helper_functions.h"
- textual header "/usr/include/c++/7.5.0/debug/list"
- textual header "/usr/include/c++/7.5.0/debug/macros.h"
- textual header "/usr/include/c++/7.5.0/debug/map"
- textual header "/usr/include/c++/7.5.0/debug/map.h"
- textual header "/usr/include/c++/7.5.0/debug/multimap.h"
- textual header "/usr/include/c++/7.5.0/debug/multiset.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.tcc"
- textual header "/usr/include/c++/7.5.0/debug/set"
- textual header "/usr/include/c++/7.5.0/debug/set.h"
- textual header "/usr/include/c++/7.5.0/debug/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/string"
- textual header "/usr/include/c++/7.5.0/debug/unordered_map"
- textual header "/usr/include/c++/7.5.0/debug/unordered_set"
- textual header "/usr/include/c++/7.5.0/debug/vector"
- textual header "/usr/include/c++/7.5.0/decimal/decimal"
- textual header "/usr/include/c++/7.5.0/decimal/decimal.h"
- textual header "/usr/include/c++/7.5.0/deque"
- textual header "/usr/include/c++/7.5.0/exception"
- textual header "/usr/include/c++/7.5.0/experimental/algorithm"
- textual header "/usr/include/c++/7.5.0/experimental/any"
- textual header "/usr/include/c++/7.5.0/experimental/array"
- textual header "/usr/include/c++/7.5.0/experimental/bits/erase_if.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_dir.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_fwd.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_ops.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_path.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/lfts_config.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/experimental/chrono"
- textual header "/usr/include/c++/7.5.0/experimental/deque"
- textual header "/usr/include/c++/7.5.0/experimental/filesystem"
- textual header "/usr/include/c++/7.5.0/experimental/forward_list"
- textual header "/usr/include/c++/7.5.0/experimental/functional"
- textual header "/usr/include/c++/7.5.0/experimental/iterator"
- textual header "/usr/include/c++/7.5.0/experimental/list"
- textual header "/usr/include/c++/7.5.0/experimental/map"
- textual header "/usr/include/c++/7.5.0/experimental/memory"
- textual header "/usr/include/c++/7.5.0/experimental/memory_resource"
- textual header "/usr/include/c++/7.5.0/experimental/numeric"
- textual header "/usr/include/c++/7.5.0/experimental/optional"
- textual header "/usr/include/c++/7.5.0/experimental/propagate_const"
- textual header "/usr/include/c++/7.5.0/experimental/random"
- textual header "/usr/include/c++/7.5.0/experimental/ratio"
- textual header "/usr/include/c++/7.5.0/experimental/regex"
- textual header "/usr/include/c++/7.5.0/experimental/set"
- textual header "/usr/include/c++/7.5.0/experimental/source_location"
- textual header "/usr/include/c++/7.5.0/experimental/string"
- textual header "/usr/include/c++/7.5.0/experimental/string_view"
- textual header "/usr/include/c++/7.5.0/experimental/system_error"
- textual header "/usr/include/c++/7.5.0/experimental/tuple"
- textual header "/usr/include/c++/7.5.0/experimental/type_traits"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_map"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_set"
- textual header "/usr/include/c++/7.5.0/experimental/utility"
- textual header "/usr/include/c++/7.5.0/experimental/vector"
- textual header "/usr/include/c++/7.5.0/ext/algorithm"
- textual header "/usr/include/c++/7.5.0/ext/aligned_buffer.h"
- textual header "/usr/include/c++/7.5.0/ext/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/array_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/atomicity.h"
- textual header "/usr/include/c++/7.5.0/ext/bitmap_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/cast.h"
- textual header "/usr/include/c++/7.5.0/ext/cmath"
- textual header "/usr/include/c++/7.5.0/ext/codecvt_specializations.h"
- textual header "/usr/include/c++/7.5.0/ext/concurrence.h"
- textual header "/usr/include/c++/7.5.0/ext/debug_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/enc_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/extptr_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/functional"
- textual header "/usr/include/c++/7.5.0/ext/hash_map"
- textual header "/usr/include/c++/7.5.0/ext/hash_set"
- textual header "/usr/include/c++/7.5.0/ext/iterator"
- textual header "/usr/include/c++/7.5.0/ext/malloc_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/memory"
- textual header "/usr/include/c++/7.5.0/ext/mt_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/new_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/numeric"
- textual header "/usr/include/c++/7.5.0/ext/numeric_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/assoc_container.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cond_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/container_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/debug_map_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/standard_policies.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_trace_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/type_utils.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/types_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/exception.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/hash_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/list_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/priority_queue.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tag_and_trait.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tree_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/trie_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pod_char_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pointer.h"
- textual header "/usr/include/c++/7.5.0/ext/pool_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/random"
- textual header "/usr/include/c++/7.5.0/ext/random.tcc"
- textual header "/usr/include/c++/7.5.0/ext/rb_tree"
- textual header "/usr/include/c++/7.5.0/ext/rc_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/rope"
- textual header "/usr/include/c++/7.5.0/ext/ropeimpl.h"
- textual header "/usr/include/c++/7.5.0/ext/slist"
- textual header "/usr/include/c++/7.5.0/ext/sso_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_sync_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/string_conversions.h"
- textual header "/usr/include/c++/7.5.0/ext/throw_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/type_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/typelist.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.tcc"
- textual header "/usr/include/c++/7.5.0/ext/vstring_fwd.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring_util.h"
- textual header "/usr/include/c++/7.5.0/fenv.h"
- textual header "/usr/include/c++/7.5.0/forward_list"
- textual header "/usr/include/c++/7.5.0/fstream"
- textual header "/usr/include/c++/7.5.0/functional"
- textual header "/usr/include/c++/7.5.0/future"
- textual header "/usr/include/c++/7.5.0/initializer_list"
- textual header "/usr/include/c++/7.5.0/iomanip"
- textual header "/usr/include/c++/7.5.0/ios"
- textual header "/usr/include/c++/7.5.0/iosfwd"
- textual header "/usr/include/c++/7.5.0/iostream"
- textual header "/usr/include/c++/7.5.0/istream"
- textual header "/usr/include/c++/7.5.0/iterator"
- textual header "/usr/include/c++/7.5.0/limits"
- textual header "/usr/include/c++/7.5.0/list"
- textual header "/usr/include/c++/7.5.0/locale"
- textual header "/usr/include/c++/7.5.0/map"
- textual header "/usr/include/c++/7.5.0/math.h"
- textual header "/usr/include/c++/7.5.0/memory"
- textual header "/usr/include/c++/7.5.0/mutex"
- textual header "/usr/include/c++/7.5.0/new"
- textual header "/usr/include/c++/7.5.0/numeric"
- textual header "/usr/include/c++/7.5.0/optional"
- textual header "/usr/include/c++/7.5.0/ostream"
- textual header "/usr/include/c++/7.5.0/parallel/algo.h"
- textual header "/usr/include/c++/7.5.0/parallel/algobase.h"
- textual header "/usr/include/c++/7.5.0/parallel/algorithm"
- textual header "/usr/include/c++/7.5.0/parallel/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/balanced_quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/base.h"
- textual header "/usr/include/c++/7.5.0/parallel/basic_iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/checkers.h"
- textual header "/usr/include/c++/7.5.0/parallel/compatibility.h"
- textual header "/usr/include/c++/7.5.0/parallel/compiletime_settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/equally_split.h"
- textual header "/usr/include/c++/7.5.0/parallel/features.h"
- textual header "/usr/include/c++/7.5.0/parallel/find.h"
- textual header "/usr/include/c++/7.5.0/parallel/find_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/list_partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/losertree.h"
- textual header "/usr/include/c++/7.5.0/parallel/merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiseq_selection.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_mergesort.h"
- textual header "/usr/include/c++/7.5.0/parallel/numeric"
- textual header "/usr/include/c++/7.5.0/parallel/numericfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop_static.h"
- textual header "/usr/include/c++/7.5.0/parallel/par_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/parallel.h"
- textual header "/usr/include/c++/7.5.0/parallel/partial_sum.h"
- textual header "/usr/include/c++/7.5.0/parallel/partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/queue.h"
- textual header "/usr/include/c++/7.5.0/parallel/quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_number.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_shuffle.h"
- textual header "/usr/include/c++/7.5.0/parallel/search.h"
- textual header "/usr/include/c++/7.5.0/parallel/set_operations.h"
- textual header "/usr/include/c++/7.5.0/parallel/settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/sort.h"
- textual header "/usr/include/c++/7.5.0/parallel/tags.h"
- textual header "/usr/include/c++/7.5.0/parallel/types.h"
- textual header "/usr/include/c++/7.5.0/parallel/unique_copy.h"
- textual header "/usr/include/c++/7.5.0/parallel/workstealing.h"
- textual header "/usr/include/c++/7.5.0/profile/array"
- textual header "/usr/include/c++/7.5.0/profile/base.h"
- textual header "/usr/include/c++/7.5.0/profile/bitset"
- textual header "/usr/include/c++/7.5.0/profile/deque"
- textual header "/usr/include/c++/7.5.0/profile/forward_list"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_algos.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_container_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hash_func.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hashtable_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_slist.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_vector.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_map_to_unordered_map.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_node.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_state.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_trace.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_to_list.h"
- textual header "/usr/include/c++/7.5.0/profile/iterator_tracker.h"
- textual header "/usr/include/c++/7.5.0/profile/list"
- textual header "/usr/include/c++/7.5.0/profile/map"
- textual header "/usr/include/c++/7.5.0/profile/map.h"
- textual header "/usr/include/c++/7.5.0/profile/multimap.h"
- textual header "/usr/include/c++/7.5.0/profile/multiset.h"
- textual header "/usr/include/c++/7.5.0/profile/ordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/set"
- textual header "/usr/include/c++/7.5.0/profile/set.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_map"
- textual header "/usr/include/c++/7.5.0/profile/unordered_set"
- textual header "/usr/include/c++/7.5.0/profile/vector"
- textual header "/usr/include/c++/7.5.0/queue"
- textual header "/usr/include/c++/7.5.0/random"
- textual header "/usr/include/c++/7.5.0/ratio"
- textual header "/usr/include/c++/7.5.0/regex"
- textual header "/usr/include/c++/7.5.0/scoped_allocator"
- textual header "/usr/include/c++/7.5.0/set"
- textual header "/usr/include/c++/7.5.0/shared_mutex"
- textual header "/usr/include/c++/7.5.0/sstream"
- textual header "/usr/include/c++/7.5.0/stack"
- textual header "/usr/include/c++/7.5.0/stdexcept"
- textual header "/usr/include/c++/7.5.0/stdlib.h"
- textual header "/usr/include/c++/7.5.0/streambuf"
- textual header "/usr/include/c++/7.5.0/string"
- textual header "/usr/include/c++/7.5.0/string_view"
- textual header "/usr/include/c++/7.5.0/system_error"
- textual header "/usr/include/c++/7.5.0/tgmath.h"
- textual header "/usr/include/c++/7.5.0/thread"
- textual header "/usr/include/c++/7.5.0/tr1/array"
- textual header "/usr/include/c++/7.5.0/tr1/bessel_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/beta_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/ccomplex"
- textual header "/usr/include/c++/7.5.0/tr1/cctype"
- textual header "/usr/include/c++/7.5.0/tr1/cfenv"
- textual header "/usr/include/c++/7.5.0/tr1/cfloat"
- textual header "/usr/include/c++/7.5.0/tr1/cinttypes"
- textual header "/usr/include/c++/7.5.0/tr1/climits"
- textual header "/usr/include/c++/7.5.0/tr1/cmath"
- textual header "/usr/include/c++/7.5.0/tr1/complex"
- textual header "/usr/include/c++/7.5.0/tr1/complex.h"
- textual header "/usr/include/c++/7.5.0/tr1/cstdarg"
- textual header "/usr/include/c++/7.5.0/tr1/cstdbool"
- textual header "/usr/include/c++/7.5.0/tr1/cstdint"
- textual header "/usr/include/c++/7.5.0/tr1/cstdio"
- textual header "/usr/include/c++/7.5.0/tr1/cstdlib"
- textual header "/usr/include/c++/7.5.0/tr1/ctgmath"
- textual header "/usr/include/c++/7.5.0/tr1/ctime"
- textual header "/usr/include/c++/7.5.0/tr1/ctype.h"
- textual header "/usr/include/c++/7.5.0/tr1/cwchar"
- textual header "/usr/include/c++/7.5.0/tr1/cwctype"
- textual header "/usr/include/c++/7.5.0/tr1/ell_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/exp_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/fenv.h"
- textual header "/usr/include/c++/7.5.0/tr1/float.h"
- textual header "/usr/include/c++/7.5.0/tr1/functional"
- textual header "/usr/include/c++/7.5.0/tr1/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/tr1/gamma.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable.h"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/tr1/hypergeometric.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/inttypes.h"
- textual header "/usr/include/c++/7.5.0/tr1/legendre_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/limits.h"
- textual header "/usr/include/c++/7.5.0/tr1/math.h"
- textual header "/usr/include/c++/7.5.0/tr1/memory"
- textual header "/usr/include/c++/7.5.0/tr1/modified_bessel_func.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_hermite.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_laguerre.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/random"
- textual header "/usr/include/c++/7.5.0/tr1/random.h"
- textual header "/usr/include/c++/7.5.0/tr1/random.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/regex"
- textual header "/usr/include/c++/7.5.0/tr1/riemann_zeta.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/tr1/special_function_util.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdarg.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdbool.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdint.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdio.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdlib.h"
- textual header "/usr/include/c++/7.5.0/tr1/tgmath.h"
- textual header "/usr/include/c++/7.5.0/tr1/tuple"
- textual header "/usr/include/c++/7.5.0/tr1/type_traits"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/tr1/utility"
- textual header "/usr/include/c++/7.5.0/tr1/wchar.h"
- textual header "/usr/include/c++/7.5.0/tr1/wctype.h"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/ratio"
- textual header "/usr/include/c++/7.5.0/tr2/type_traits"
- textual header "/usr/include/c++/7.5.0/tuple"
- textual header "/usr/include/c++/7.5.0/type_traits"
- textual header "/usr/include/c++/7.5.0/typeindex"
- textual header "/usr/include/c++/7.5.0/typeinfo"
- textual header "/usr/include/c++/7.5.0/unordered_map"
- textual header "/usr/include/c++/7.5.0/unordered_set"
- textual header "/usr/include/c++/7.5.0/utility"
- textual header "/usr/include/c++/7.5.0/valarray"
- textual header "/usr/include/c++/7.5.0/variant"
- textual header "/usr/include/c++/7.5.0/vector"
- textual header "/usr/include/c++/7/algorithm"
- textual header "/usr/include/c++/7/any"
- textual header "/usr/include/c++/7/array"
- textual header "/usr/include/c++/7/atomic"
- textual header "/usr/include/c++/7/backward/auto_ptr.h"
- textual header "/usr/include/c++/7/backward/backward_warning.h"
- textual header "/usr/include/c++/7/backward/binders.h"
- textual header "/usr/include/c++/7/backward/hash_fun.h"
- textual header "/usr/include/c++/7/backward/hash_map"
- textual header "/usr/include/c++/7/backward/hash_set"
- textual header "/usr/include/c++/7/backward/hashtable.h"
- textual header "/usr/include/c++/7/backward/strstream"
- textual header "/usr/include/c++/7/bits/algorithmfwd.h"
- textual header "/usr/include/c++/7/bits/alloc_traits.h"
- textual header "/usr/include/c++/7/bits/allocated_ptr.h"
- textual header "/usr/include/c++/7/bits/allocator.h"
- textual header "/usr/include/c++/7/bits/atomic_base.h"
- textual header "/usr/include/c++/7/bits/atomic_futex.h"
- textual header "/usr/include/c++/7/bits/atomic_lockfree_defines.h"
- textual header "/usr/include/c++/7/bits/basic_ios.h"
- textual header "/usr/include/c++/7/bits/basic_ios.tcc"
- textual header "/usr/include/c++/7/bits/basic_string.h"
- textual header "/usr/include/c++/7/bits/basic_string.tcc"
- textual header "/usr/include/c++/7/bits/boost_concept_check.h"
- textual header "/usr/include/c++/7/bits/c++0x_warning.h"
- textual header "/usr/include/c++/7/bits/char_traits.h"
- textual header "/usr/include/c++/7/bits/codecvt.h"
- textual header "/usr/include/c++/7/bits/concept_check.h"
- textual header "/usr/include/c++/7/bits/cpp_type_traits.h"
- textual header "/usr/include/c++/7/bits/cxxabi_forced.h"
- textual header "/usr/include/c++/7/bits/cxxabi_init_exception.h"
- textual header "/usr/include/c++/7/bits/deque.tcc"
- textual header "/usr/include/c++/7/bits/enable_special_members.h"
- textual header "/usr/include/c++/7/bits/exception.h"
- textual header "/usr/include/c++/7/bits/exception_defines.h"
- textual header "/usr/include/c++/7/bits/exception_ptr.h"
- textual header "/usr/include/c++/7/bits/forward_list.h"
- textual header "/usr/include/c++/7/bits/forward_list.tcc"
- textual header "/usr/include/c++/7/bits/fstream.tcc"
- textual header "/usr/include/c++/7/bits/functexcept.h"
- textual header "/usr/include/c++/7/bits/functional_hash.h"
- textual header "/usr/include/c++/7/bits/gslice.h"
- textual header "/usr/include/c++/7/bits/gslice_array.h"
- textual header "/usr/include/c++/7/bits/hash_bytes.h"
- textual header "/usr/include/c++/7/bits/hashtable.h"
- textual header "/usr/include/c++/7/bits/hashtable_policy.h"
- textual header "/usr/include/c++/7/bits/indirect_array.h"
- textual header "/usr/include/c++/7/bits/invoke.h"
- textual header "/usr/include/c++/7/bits/ios_base.h"
- textual header "/usr/include/c++/7/bits/istream.tcc"
- textual header "/usr/include/c++/7/bits/list.tcc"
- textual header "/usr/include/c++/7/bits/locale_classes.h"
- textual header "/usr/include/c++/7/bits/locale_classes.tcc"
- textual header "/usr/include/c++/7/bits/locale_conv.h"
- textual header "/usr/include/c++/7/bits/locale_facets.h"
- textual header "/usr/include/c++/7/bits/locale_facets.tcc"
- textual header "/usr/include/c++/7/bits/locale_facets_nonio.h"
- textual header "/usr/include/c++/7/bits/locale_facets_nonio.tcc"
- textual header "/usr/include/c++/7/bits/localefwd.h"
- textual header "/usr/include/c++/7/bits/mask_array.h"
- textual header "/usr/include/c++/7/bits/memoryfwd.h"
- textual header "/usr/include/c++/7/bits/move.h"
- textual header "/usr/include/c++/7/bits/nested_exception.h"
- textual header "/usr/include/c++/7/bits/node_handle.h"
- textual header "/usr/include/c++/7/bits/ostream.tcc"
- textual header "/usr/include/c++/7/bits/ostream_insert.h"
- textual header "/usr/include/c++/7/bits/parse_numbers.h"
- textual header "/usr/include/c++/7/bits/postypes.h"
- textual header "/usr/include/c++/7/bits/predefined_ops.h"
- textual header "/usr/include/c++/7/bits/ptr_traits.h"
- textual header "/usr/include/c++/7/bits/quoted_string.h"
- textual header "/usr/include/c++/7/bits/random.h"
- textual header "/usr/include/c++/7/bits/random.tcc"
- textual header "/usr/include/c++/7/bits/range_access.h"
- textual header "/usr/include/c++/7/bits/refwrap.h"
- textual header "/usr/include/c++/7/bits/regex.h"
- textual header "/usr/include/c++/7/bits/regex.tcc"
- textual header "/usr/include/c++/7/bits/regex_automaton.h"
- textual header "/usr/include/c++/7/bits/regex_automaton.tcc"
- textual header "/usr/include/c++/7/bits/regex_compiler.h"
- textual header "/usr/include/c++/7/bits/regex_compiler.tcc"
- textual header "/usr/include/c++/7/bits/regex_constants.h"
- textual header "/usr/include/c++/7/bits/regex_error.h"
- textual header "/usr/include/c++/7/bits/regex_executor.h"
- textual header "/usr/include/c++/7/bits/regex_executor.tcc"
- textual header "/usr/include/c++/7/bits/regex_scanner.h"
- textual header "/usr/include/c++/7/bits/regex_scanner.tcc"
- textual header "/usr/include/c++/7/bits/shared_ptr.h"
- textual header "/usr/include/c++/7/bits/shared_ptr_atomic.h"
- textual header "/usr/include/c++/7/bits/shared_ptr_base.h"
- textual header "/usr/include/c++/7/bits/slice_array.h"
- textual header "/usr/include/c++/7/bits/specfun.h"
- textual header "/usr/include/c++/7/bits/sstream.tcc"
- textual header "/usr/include/c++/7/bits/std_abs.h"
- textual header "/usr/include/c++/7/bits/std_function.h"
- textual header "/usr/include/c++/7/bits/std_mutex.h"
- textual header "/usr/include/c++/7/bits/stl_algo.h"
- textual header "/usr/include/c++/7/bits/stl_algobase.h"
- textual header "/usr/include/c++/7/bits/stl_bvector.h"
- textual header "/usr/include/c++/7/bits/stl_construct.h"
- textual header "/usr/include/c++/7/bits/stl_deque.h"
- textual header "/usr/include/c++/7/bits/stl_function.h"
- textual header "/usr/include/c++/7/bits/stl_heap.h"
- textual header "/usr/include/c++/7/bits/stl_iterator.h"
- textual header "/usr/include/c++/7/bits/stl_iterator_base_funcs.h"
- textual header "/usr/include/c++/7/bits/stl_iterator_base_types.h"
- textual header "/usr/include/c++/7/bits/stl_list.h"
- textual header "/usr/include/c++/7/bits/stl_map.h"
- textual header "/usr/include/c++/7/bits/stl_multimap.h"
- textual header "/usr/include/c++/7/bits/stl_multiset.h"
- textual header "/usr/include/c++/7/bits/stl_numeric.h"
- textual header "/usr/include/c++/7/bits/stl_pair.h"
- textual header "/usr/include/c++/7/bits/stl_queue.h"
- textual header "/usr/include/c++/7/bits/stl_raw_storage_iter.h"
- textual header "/usr/include/c++/7/bits/stl_relops.h"
- textual header "/usr/include/c++/7/bits/stl_set.h"
- textual header "/usr/include/c++/7/bits/stl_stack.h"
- textual header "/usr/include/c++/7/bits/stl_tempbuf.h"
- textual header "/usr/include/c++/7/bits/stl_tree.h"
- textual header "/usr/include/c++/7/bits/stl_uninitialized.h"
- textual header "/usr/include/c++/7/bits/stl_vector.h"
- textual header "/usr/include/c++/7/bits/stream_iterator.h"
- textual header "/usr/include/c++/7/bits/streambuf.tcc"
- textual header "/usr/include/c++/7/bits/streambuf_iterator.h"
- textual header "/usr/include/c++/7/bits/string_view.tcc"
- textual header "/usr/include/c++/7/bits/stringfwd.h"
- textual header "/usr/include/c++/7/bits/uniform_int_dist.h"
- textual header "/usr/include/c++/7/bits/unique_ptr.h"
- textual header "/usr/include/c++/7/bits/unordered_map.h"
- textual header "/usr/include/c++/7/bits/unordered_set.h"
- textual header "/usr/include/c++/7/bits/uses_allocator.h"
- textual header "/usr/include/c++/7/bits/valarray_after.h"
- textual header "/usr/include/c++/7/bits/valarray_array.h"
- textual header "/usr/include/c++/7/bits/valarray_array.tcc"
- textual header "/usr/include/c++/7/bits/valarray_before.h"
- textual header "/usr/include/c++/7/bits/vector.tcc"
- textual header "/usr/include/c++/7/bitset"
- textual header "/usr/include/c++/7/cassert"
- textual header "/usr/include/c++/7/ccomplex"
- textual header "/usr/include/c++/7/cctype"
- textual header "/usr/include/c++/7/cerrno"
- textual header "/usr/include/c++/7/cfenv"
- textual header "/usr/include/c++/7/cfloat"
- textual header "/usr/include/c++/7/chrono"
- textual header "/usr/include/c++/7/cinttypes"
- textual header "/usr/include/c++/7/ciso646"
- textual header "/usr/include/c++/7/climits"
- textual header "/usr/include/c++/7/clocale"
- textual header "/usr/include/c++/7/cmath"
- textual header "/usr/include/c++/7/codecvt"
- textual header "/usr/include/c++/7/complex"
- textual header "/usr/include/c++/7/complex.h"
- textual header "/usr/include/c++/7/condition_variable"
- textual header "/usr/include/c++/7/csetjmp"
- textual header "/usr/include/c++/7/csignal"
- textual header "/usr/include/c++/7/cstdalign"
- textual header "/usr/include/c++/7/cstdarg"
- textual header "/usr/include/c++/7/cstdbool"
- textual header "/usr/include/c++/7/cstddef"
- textual header "/usr/include/c++/7/cstdint"
- textual header "/usr/include/c++/7/cstdio"
- textual header "/usr/include/c++/7/cstdlib"
- textual header "/usr/include/c++/7/cstring"
- textual header "/usr/include/c++/7/ctgmath"
- textual header "/usr/include/c++/7/ctime"
- textual header "/usr/include/c++/7/cuchar"
- textual header "/usr/include/c++/7/cwchar"
- textual header "/usr/include/c++/7/cwctype"
- textual header "/usr/include/c++/7/cxxabi.h"
- textual header "/usr/include/c++/7/debug/array"
- textual header "/usr/include/c++/7/debug/assertions.h"
- textual header "/usr/include/c++/7/debug/bitset"
- textual header "/usr/include/c++/7/debug/debug.h"
- textual header "/usr/include/c++/7/debug/deque"
- textual header "/usr/include/c++/7/debug/formatter.h"
- textual header "/usr/include/c++/7/debug/forward_list"
- textual header "/usr/include/c++/7/debug/functions.h"
- textual header "/usr/include/c++/7/debug/helper_functions.h"
- textual header "/usr/include/c++/7/debug/list"
- textual header "/usr/include/c++/7/debug/macros.h"
- textual header "/usr/include/c++/7/debug/map"
- textual header "/usr/include/c++/7/debug/map.h"
- textual header "/usr/include/c++/7/debug/multimap.h"
- textual header "/usr/include/c++/7/debug/multiset.h"
- textual header "/usr/include/c++/7/debug/safe_base.h"
- textual header "/usr/include/c++/7/debug/safe_container.h"
- textual header "/usr/include/c++/7/debug/safe_iterator.h"
- textual header "/usr/include/c++/7/debug/safe_iterator.tcc"
- textual header "/usr/include/c++/7/debug/safe_local_iterator.h"
- textual header "/usr/include/c++/7/debug/safe_local_iterator.tcc"
- textual header "/usr/include/c++/7/debug/safe_sequence.h"
- textual header "/usr/include/c++/7/debug/safe_sequence.tcc"
- textual header "/usr/include/c++/7/debug/safe_unordered_base.h"
- textual header "/usr/include/c++/7/debug/safe_unordered_container.h"
- textual header "/usr/include/c++/7/debug/safe_unordered_container.tcc"
- textual header "/usr/include/c++/7/debug/set"
- textual header "/usr/include/c++/7/debug/set.h"
- textual header "/usr/include/c++/7/debug/stl_iterator.h"
- textual header "/usr/include/c++/7/debug/string"
- textual header "/usr/include/c++/7/debug/unordered_map"
- textual header "/usr/include/c++/7/debug/unordered_set"
- textual header "/usr/include/c++/7/debug/vector"
- textual header "/usr/include/c++/7/decimal/decimal"
- textual header "/usr/include/c++/7/decimal/decimal.h"
- textual header "/usr/include/c++/7/deque"
- textual header "/usr/include/c++/7/exception"
- textual header "/usr/include/c++/7/experimental/algorithm"
- textual header "/usr/include/c++/7/experimental/any"
- textual header "/usr/include/c++/7/experimental/array"
- textual header "/usr/include/c++/7/experimental/bits/erase_if.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_dir.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_fwd.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_ops.h"
- textual header "/usr/include/c++/7/experimental/bits/fs_path.h"
- textual header "/usr/include/c++/7/experimental/bits/lfts_config.h"
- textual header "/usr/include/c++/7/experimental/bits/shared_ptr.h"
- textual header "/usr/include/c++/7/experimental/bits/string_view.tcc"
- textual header "/usr/include/c++/7/experimental/chrono"
- textual header "/usr/include/c++/7/experimental/deque"
- textual header "/usr/include/c++/7/experimental/filesystem"
- textual header "/usr/include/c++/7/experimental/forward_list"
- textual header "/usr/include/c++/7/experimental/functional"
- textual header "/usr/include/c++/7/experimental/iterator"
- textual header "/usr/include/c++/7/experimental/list"
- textual header "/usr/include/c++/7/experimental/map"
- textual header "/usr/include/c++/7/experimental/memory"
- textual header "/usr/include/c++/7/experimental/memory_resource"
- textual header "/usr/include/c++/7/experimental/numeric"
- textual header "/usr/include/c++/7/experimental/optional"
- textual header "/usr/include/c++/7/experimental/propagate_const"
- textual header "/usr/include/c++/7/experimental/random"
- textual header "/usr/include/c++/7/experimental/ratio"
- textual header "/usr/include/c++/7/experimental/regex"
- textual header "/usr/include/c++/7/experimental/set"
- textual header "/usr/include/c++/7/experimental/source_location"
- textual header "/usr/include/c++/7/experimental/string"
- textual header "/usr/include/c++/7/experimental/string_view"
- textual header "/usr/include/c++/7/experimental/system_error"
- textual header "/usr/include/c++/7/experimental/tuple"
- textual header "/usr/include/c++/7/experimental/type_traits"
- textual header "/usr/include/c++/7/experimental/unordered_map"
- textual header "/usr/include/c++/7/experimental/unordered_set"
- textual header "/usr/include/c++/7/experimental/utility"
- textual header "/usr/include/c++/7/experimental/vector"
- textual header "/usr/include/c++/7/ext/algorithm"
- textual header "/usr/include/c++/7/ext/aligned_buffer.h"
- textual header "/usr/include/c++/7/ext/alloc_traits.h"
- textual header "/usr/include/c++/7/ext/array_allocator.h"
- textual header "/usr/include/c++/7/ext/atomicity.h"
- textual header "/usr/include/c++/7/ext/bitmap_allocator.h"
- textual header "/usr/include/c++/7/ext/cast.h"
- textual header "/usr/include/c++/7/ext/cmath"
- textual header "/usr/include/c++/7/ext/codecvt_specializations.h"
- textual header "/usr/include/c++/7/ext/concurrence.h"
- textual header "/usr/include/c++/7/ext/debug_allocator.h"
- textual header "/usr/include/c++/7/ext/enc_filebuf.h"
- textual header "/usr/include/c++/7/ext/extptr_allocator.h"
- textual header "/usr/include/c++/7/ext/functional"
- textual header "/usr/include/c++/7/ext/hash_map"
- textual header "/usr/include/c++/7/ext/hash_set"
- textual header "/usr/include/c++/7/ext/iterator"
- textual header "/usr/include/c++/7/ext/malloc_allocator.h"
- textual header "/usr/include/c++/7/ext/memory"
- textual header "/usr/include/c++/7/ext/mt_allocator.h"
- textual header "/usr/include/c++/7/ext/new_allocator.h"
- textual header "/usr/include/c++/7/ext/numeric"
- textual header "/usr/include/c++/7/ext/numeric_traits.h"
- textual header "/usr/include/c++/7/ext/pb_ds/assoc_container.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/bin_search_tree_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/entry_pred.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/resize_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/branch_policy/branch_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/branch_policy/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/cond_dealtor.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/container_base_dispatch.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/debug_map_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/eq_fn/eq_by_less.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/lu_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/ov_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/priority_queue_base_dispatch.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/node.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rb_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/node.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/splay_tree_/traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/standard_policies.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/tree_trace_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/type_utils.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/types_traits.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/exception.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/hash_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/list_update_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/priority_queue.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/tag_and_trait.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/tree_policy.hpp"
- textual header "/usr/include/c++/7/ext/pb_ds/trie_policy.hpp"
- textual header "/usr/include/c++/7/ext/pod_char_traits.h"
- textual header "/usr/include/c++/7/ext/pointer.h"
- textual header "/usr/include/c++/7/ext/pool_allocator.h"
- textual header "/usr/include/c++/7/ext/random"
- textual header "/usr/include/c++/7/ext/random.tcc"
- textual header "/usr/include/c++/7/ext/rb_tree"
- textual header "/usr/include/c++/7/ext/rc_string_base.h"
- textual header "/usr/include/c++/7/ext/rope"
- textual header "/usr/include/c++/7/ext/ropeimpl.h"
- textual header "/usr/include/c++/7/ext/slist"
- textual header "/usr/include/c++/7/ext/sso_string_base.h"
- textual header "/usr/include/c++/7/ext/stdio_filebuf.h"
- textual header "/usr/include/c++/7/ext/stdio_sync_filebuf.h"
- textual header "/usr/include/c++/7/ext/string_conversions.h"
- textual header "/usr/include/c++/7/ext/throw_allocator.h"
- textual header "/usr/include/c++/7/ext/type_traits.h"
- textual header "/usr/include/c++/7/ext/typelist.h"
- textual header "/usr/include/c++/7/ext/vstring.h"
- textual header "/usr/include/c++/7/ext/vstring.tcc"
- textual header "/usr/include/c++/7/ext/vstring_fwd.h"
- textual header "/usr/include/c++/7/ext/vstring_util.h"
- textual header "/usr/include/c++/7/fenv.h"
- textual header "/usr/include/c++/7/forward_list"
- textual header "/usr/include/c++/7/fstream"
- textual header "/usr/include/c++/7/functional"
- textual header "/usr/include/c++/7/future"
- textual header "/usr/include/c++/7/initializer_list"
- textual header "/usr/include/c++/7/iomanip"
- textual header "/usr/include/c++/7/ios"
- textual header "/usr/include/c++/7/iosfwd"
- textual header "/usr/include/c++/7/iostream"
- textual header "/usr/include/c++/7/istream"
- textual header "/usr/include/c++/7/iterator"
- textual header "/usr/include/c++/7/limits"
- textual header "/usr/include/c++/7/list"
- textual header "/usr/include/c++/7/locale"
- textual header "/usr/include/c++/7/map"
- textual header "/usr/include/c++/7/math.h"
- textual header "/usr/include/c++/7/memory"
- textual header "/usr/include/c++/7/mutex"
- textual header "/usr/include/c++/7/new"
- textual header "/usr/include/c++/7/numeric"
- textual header "/usr/include/c++/7/optional"
- textual header "/usr/include/c++/7/ostream"
- textual header "/usr/include/c++/7/parallel/algo.h"
- textual header "/usr/include/c++/7/parallel/algobase.h"
- textual header "/usr/include/c++/7/parallel/algorithm"
- textual header "/usr/include/c++/7/parallel/algorithmfwd.h"
- textual header "/usr/include/c++/7/parallel/balanced_quicksort.h"
- textual header "/usr/include/c++/7/parallel/base.h"
- textual header "/usr/include/c++/7/parallel/basic_iterator.h"
- textual header "/usr/include/c++/7/parallel/checkers.h"
- textual header "/usr/include/c++/7/parallel/compatibility.h"
- textual header "/usr/include/c++/7/parallel/compiletime_settings.h"
- textual header "/usr/include/c++/7/parallel/equally_split.h"
- textual header "/usr/include/c++/7/parallel/features.h"
- textual header "/usr/include/c++/7/parallel/find.h"
- textual header "/usr/include/c++/7/parallel/find_selectors.h"
- textual header "/usr/include/c++/7/parallel/for_each.h"
- textual header "/usr/include/c++/7/parallel/for_each_selectors.h"
- textual header "/usr/include/c++/7/parallel/iterator.h"
- textual header "/usr/include/c++/7/parallel/list_partition.h"
- textual header "/usr/include/c++/7/parallel/losertree.h"
- textual header "/usr/include/c++/7/parallel/merge.h"
- textual header "/usr/include/c++/7/parallel/multiseq_selection.h"
- textual header "/usr/include/c++/7/parallel/multiway_merge.h"
- textual header "/usr/include/c++/7/parallel/multiway_mergesort.h"
- textual header "/usr/include/c++/7/parallel/numeric"
- textual header "/usr/include/c++/7/parallel/numericfwd.h"
- textual header "/usr/include/c++/7/parallel/omp_loop.h"
- textual header "/usr/include/c++/7/parallel/omp_loop_static.h"
- textual header "/usr/include/c++/7/parallel/par_loop.h"
- textual header "/usr/include/c++/7/parallel/parallel.h"
- textual header "/usr/include/c++/7/parallel/partial_sum.h"
- textual header "/usr/include/c++/7/parallel/partition.h"
- textual header "/usr/include/c++/7/parallel/queue.h"
- textual header "/usr/include/c++/7/parallel/quicksort.h"
- textual header "/usr/include/c++/7/parallel/random_number.h"
- textual header "/usr/include/c++/7/parallel/random_shuffle.h"
- textual header "/usr/include/c++/7/parallel/search.h"
- textual header "/usr/include/c++/7/parallel/set_operations.h"
- textual header "/usr/include/c++/7/parallel/settings.h"
- textual header "/usr/include/c++/7/parallel/sort.h"
- textual header "/usr/include/c++/7/parallel/tags.h"
- textual header "/usr/include/c++/7/parallel/types.h"
- textual header "/usr/include/c++/7/parallel/unique_copy.h"
- textual header "/usr/include/c++/7/parallel/workstealing.h"
- textual header "/usr/include/c++/7/profile/array"
- textual header "/usr/include/c++/7/profile/base.h"
- textual header "/usr/include/c++/7/profile/bitset"
- textual header "/usr/include/c++/7/profile/deque"
- textual header "/usr/include/c++/7/profile/forward_list"
- textual header "/usr/include/c++/7/profile/impl/profiler.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_algos.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_container_size.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_hash_func.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_hashtable_size.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_list_to_slist.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_list_to_vector.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_map_to_unordered_map.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_node.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_state.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_trace.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_vector_size.h"
- textual header "/usr/include/c++/7/profile/impl/profiler_vector_to_list.h"
- textual header "/usr/include/c++/7/profile/iterator_tracker.h"
- textual header "/usr/include/c++/7/profile/list"
- textual header "/usr/include/c++/7/profile/map"
- textual header "/usr/include/c++/7/profile/map.h"
- textual header "/usr/include/c++/7/profile/multimap.h"
- textual header "/usr/include/c++/7/profile/multiset.h"
- textual header "/usr/include/c++/7/profile/ordered_base.h"
- textual header "/usr/include/c++/7/profile/set"
- textual header "/usr/include/c++/7/profile/set.h"
- textual header "/usr/include/c++/7/profile/unordered_base.h"
- textual header "/usr/include/c++/7/profile/unordered_map"
- textual header "/usr/include/c++/7/profile/unordered_set"
- textual header "/usr/include/c++/7/profile/vector"
- textual header "/usr/include/c++/7/queue"
- textual header "/usr/include/c++/7/random"
- textual header "/usr/include/c++/7/ratio"
- textual header "/usr/include/c++/7/regex"
- textual header "/usr/include/c++/7/scoped_allocator"
- textual header "/usr/include/c++/7/set"
- textual header "/usr/include/c++/7/shared_mutex"
- textual header "/usr/include/c++/7/sstream"
- textual header "/usr/include/c++/7/stack"
- textual header "/usr/include/c++/7/stdexcept"
- textual header "/usr/include/c++/7/stdlib.h"
- textual header "/usr/include/c++/7/streambuf"
- textual header "/usr/include/c++/7/string"
- textual header "/usr/include/c++/7/string_view"
- textual header "/usr/include/c++/7/system_error"
- textual header "/usr/include/c++/7/tgmath.h"
- textual header "/usr/include/c++/7/thread"
- textual header "/usr/include/c++/7/tr1/array"
- textual header "/usr/include/c++/7/tr1/bessel_function.tcc"
- textual header "/usr/include/c++/7/tr1/beta_function.tcc"
- textual header "/usr/include/c++/7/tr1/ccomplex"
- textual header "/usr/include/c++/7/tr1/cctype"
- textual header "/usr/include/c++/7/tr1/cfenv"
- textual header "/usr/include/c++/7/tr1/cfloat"
- textual header "/usr/include/c++/7/tr1/cinttypes"
- textual header "/usr/include/c++/7/tr1/climits"
- textual header "/usr/include/c++/7/tr1/cmath"
- textual header "/usr/include/c++/7/tr1/complex"
- textual header "/usr/include/c++/7/tr1/complex.h"
- textual header "/usr/include/c++/7/tr1/cstdarg"
- textual header "/usr/include/c++/7/tr1/cstdbool"
- textual header "/usr/include/c++/7/tr1/cstdint"
- textual header "/usr/include/c++/7/tr1/cstdio"
- textual header "/usr/include/c++/7/tr1/cstdlib"
- textual header "/usr/include/c++/7/tr1/ctgmath"
- textual header "/usr/include/c++/7/tr1/ctime"
- textual header "/usr/include/c++/7/tr1/ctype.h"
- textual header "/usr/include/c++/7/tr1/cwchar"
- textual header "/usr/include/c++/7/tr1/cwctype"
- textual header "/usr/include/c++/7/tr1/ell_integral.tcc"
- textual header "/usr/include/c++/7/tr1/exp_integral.tcc"
- textual header "/usr/include/c++/7/tr1/fenv.h"
- textual header "/usr/include/c++/7/tr1/float.h"
- textual header "/usr/include/c++/7/tr1/functional"
- textual header "/usr/include/c++/7/tr1/functional_hash.h"
- textual header "/usr/include/c++/7/tr1/gamma.tcc"
- textual header "/usr/include/c++/7/tr1/hashtable.h"
- textual header "/usr/include/c++/7/tr1/hashtable_policy.h"
- textual header "/usr/include/c++/7/tr1/hypergeometric.tcc"
- textual header "/usr/include/c++/7/tr1/inttypes.h"
- textual header "/usr/include/c++/7/tr1/legendre_function.tcc"
- textual header "/usr/include/c++/7/tr1/limits.h"
- textual header "/usr/include/c++/7/tr1/math.h"
- textual header "/usr/include/c++/7/tr1/memory"
- textual header "/usr/include/c++/7/tr1/modified_bessel_func.tcc"
- textual header "/usr/include/c++/7/tr1/poly_hermite.tcc"
- textual header "/usr/include/c++/7/tr1/poly_laguerre.tcc"
- textual header "/usr/include/c++/7/tr1/random"
- textual header "/usr/include/c++/7/tr1/random.h"
- textual header "/usr/include/c++/7/tr1/random.tcc"
- textual header "/usr/include/c++/7/tr1/regex"
- textual header "/usr/include/c++/7/tr1/riemann_zeta.tcc"
- textual header "/usr/include/c++/7/tr1/shared_ptr.h"
- textual header "/usr/include/c++/7/tr1/special_function_util.h"
- textual header "/usr/include/c++/7/tr1/stdarg.h"
- textual header "/usr/include/c++/7/tr1/stdbool.h"
- textual header "/usr/include/c++/7/tr1/stdint.h"
- textual header "/usr/include/c++/7/tr1/stdio.h"
- textual header "/usr/include/c++/7/tr1/stdlib.h"
- textual header "/usr/include/c++/7/tr1/tgmath.h"
- textual header "/usr/include/c++/7/tr1/tuple"
- textual header "/usr/include/c++/7/tr1/type_traits"
- textual header "/usr/include/c++/7/tr1/unordered_map"
- textual header "/usr/include/c++/7/tr1/unordered_map.h"
- textual header "/usr/include/c++/7/tr1/unordered_set"
- textual header "/usr/include/c++/7/tr1/unordered_set.h"
- textual header "/usr/include/c++/7/tr1/utility"
- textual header "/usr/include/c++/7/tr1/wchar.h"
- textual header "/usr/include/c++/7/tr1/wctype.h"
- textual header "/usr/include/c++/7/tr2/bool_set"
- textual header "/usr/include/c++/7/tr2/bool_set.tcc"
- textual header "/usr/include/c++/7/tr2/dynamic_bitset"
- textual header "/usr/include/c++/7/tr2/dynamic_bitset.tcc"
- textual header "/usr/include/c++/7/tr2/ratio"
- textual header "/usr/include/c++/7/tr2/type_traits"
- textual header "/usr/include/c++/7/tuple"
- textual header "/usr/include/c++/7/type_traits"
- textual header "/usr/include/c++/7/typeindex"
- textual header "/usr/include/c++/7/typeinfo"
- textual header "/usr/include/c++/7/unordered_map"
- textual header "/usr/include/c++/7/unordered_set"
- textual header "/usr/include/c++/7/utility"
- textual header "/usr/include/c++/7/valarray"
- textual header "/usr/include/c++/7/variant"
- textual header "/usr/include/c++/7/vector"
- textual header "/usr/include/complex.h"
- textual header "/usr/include/cpio.h"
- textual header "/usr/include/crypt.h"
- textual header "/usr/include/ctype.h"
- textual header "/usr/include/dirent.h"
- textual header "/usr/include/dlfcn.h"
- textual header "/usr/include/drm/amdgpu_drm.h"
- textual header "/usr/include/drm/armada_drm.h"
- textual header "/usr/include/drm/drm.h"
- textual header "/usr/include/drm/drm_fourcc.h"
- textual header "/usr/include/drm/drm_mode.h"
- textual header "/usr/include/drm/drm_sarea.h"
- textual header "/usr/include/drm/etnaviv_drm.h"
- textual header "/usr/include/drm/exynos_drm.h"
- textual header "/usr/include/drm/i810_drm.h"
- textual header "/usr/include/drm/i915_drm.h"
- textual header "/usr/include/drm/mga_drm.h"
- textual header "/usr/include/drm/msm_drm.h"
- textual header "/usr/include/drm/nouveau_drm.h"
- textual header "/usr/include/drm/omap_drm.h"
- textual header "/usr/include/drm/qxl_drm.h"
- textual header "/usr/include/drm/r128_drm.h"
- textual header "/usr/include/drm/radeon_drm.h"
- textual header "/usr/include/drm/savage_drm.h"
- textual header "/usr/include/drm/sis_drm.h"
- textual header "/usr/include/drm/tegra_drm.h"
- textual header "/usr/include/drm/vc4_drm.h"
- textual header "/usr/include/drm/vgem_drm.h"
- textual header "/usr/include/drm/via_drm.h"
- textual header "/usr/include/drm/virtgpu_drm.h"
- textual header "/usr/include/drm/vmwgfx_drm.h"
- textual header "/usr/include/elf.h"
- textual header "/usr/include/endian.h"
- textual header "/usr/include/envz.h"
- textual header "/usr/include/err.h"
- textual header "/usr/include/errno.h"
- textual header "/usr/include/error.h"
- textual header "/usr/include/execinfo.h"
- textual header "/usr/include/expat.h"
- textual header "/usr/include/expat_external.h"
- textual header "/usr/include/fcntl.h"
- textual header "/usr/include/features.h"
- textual header "/usr/include/fenv.h"
- textual header "/usr/include/fmtmsg.h"
- textual header "/usr/include/fnmatch.h"
- textual header "/usr/include/fstab.h"
- textual header "/usr/include/fts.h"
- textual header "/usr/include/ftw.h"
- textual header "/usr/include/gconv.h"
- textual header "/usr/include/getopt.h"
- textual header "/usr/include/glob.h"
- textual header "/usr/include/gmpxx.h"
- textual header "/usr/include/gnu-versions.h"
- textual header "/usr/include/gnumake.h"
- textual header "/usr/include/grp.h"
- textual header "/usr/include/gshadow.h"
- textual header "/usr/include/iconv.h"
- textual header "/usr/include/ifaddrs.h"
- textual header "/usr/include/inttypes.h"
- textual header "/usr/include/langinfo.h"
- textual header "/usr/include/lastlog.h"
- textual header "/usr/include/libgen.h"
- textual header "/usr/include/libintl.h"
- textual header "/usr/include/libio.h"
- textual header "/usr/include/limits.h"
- textual header "/usr/include/link.h"
- textual header "/usr/include/linux/a.out.h"
- textual header "/usr/include/linux/acct.h"
- textual header "/usr/include/linux/adb.h"
- textual header "/usr/include/linux/adfs_fs.h"
- textual header "/usr/include/linux/affs_hardblocks.h"
- textual header "/usr/include/linux/agpgart.h"
- textual header "/usr/include/linux/aio_abi.h"
- textual header "/usr/include/linux/am437x-vpfe.h"
- textual header "/usr/include/linux/android/binder.h"
- textual header "/usr/include/linux/apm_bios.h"
- textual header "/usr/include/linux/arcfb.h"
- textual header "/usr/include/linux/arm_sdei.h"
- textual header "/usr/include/linux/aspeed-lpc-ctrl.h"
- textual header "/usr/include/linux/atalk.h"
- textual header "/usr/include/linux/atm.h"
- textual header "/usr/include/linux/atm_eni.h"
- textual header "/usr/include/linux/atm_he.h"
- textual header "/usr/include/linux/atm_idt77105.h"
- textual header "/usr/include/linux/atm_nicstar.h"
- textual header "/usr/include/linux/atm_tcp.h"
- textual header "/usr/include/linux/atm_zatm.h"
- textual header "/usr/include/linux/atmapi.h"
- textual header "/usr/include/linux/atmarp.h"
- textual header "/usr/include/linux/atmbr2684.h"
- textual header "/usr/include/linux/atmclip.h"
- textual header "/usr/include/linux/atmdev.h"
- textual header "/usr/include/linux/atmioc.h"
- textual header "/usr/include/linux/atmlec.h"
- textual header "/usr/include/linux/atmmpc.h"
- textual header "/usr/include/linux/atmppp.h"
- textual header "/usr/include/linux/atmsap.h"
- textual header "/usr/include/linux/atmsvc.h"
- textual header "/usr/include/linux/audit.h"
- textual header "/usr/include/linux/aufs_type.h"
- textual header "/usr/include/linux/auto_dev-ioctl.h"
- textual header "/usr/include/linux/auto_fs.h"
- textual header "/usr/include/linux/auto_fs4.h"
- textual header "/usr/include/linux/auxvec.h"
- textual header "/usr/include/linux/ax25.h"
- textual header "/usr/include/linux/b1lli.h"
- textual header "/usr/include/linux/batman_adv.h"
- textual header "/usr/include/linux/baycom.h"
- textual header "/usr/include/linux/bcache.h"
- textual header "/usr/include/linux/bcm933xx_hcs.h"
- textual header "/usr/include/linux/bfs_fs.h"
- textual header "/usr/include/linux/binfmts.h"
- textual header "/usr/include/linux/blkpg.h"
- textual header "/usr/include/linux/blktrace_api.h"
- textual header "/usr/include/linux/blkzoned.h"
- textual header "/usr/include/linux/bpf.h"
- textual header "/usr/include/linux/bpf_common.h"
- textual header "/usr/include/linux/bpf_perf_event.h"
- textual header "/usr/include/linux/bpqether.h"
- textual header "/usr/include/linux/bsg.h"
- textual header "/usr/include/linux/bt-bmc.h"
- textual header "/usr/include/linux/btrfs.h"
- textual header "/usr/include/linux/btrfs_tree.h"
- textual header "/usr/include/linux/byteorder/big_endian.h"
- textual header "/usr/include/linux/byteorder/little_endian.h"
- textual header "/usr/include/linux/caif/caif_socket.h"
- textual header "/usr/include/linux/caif/if_caif.h"
- textual header "/usr/include/linux/can.h"
- textual header "/usr/include/linux/can/bcm.h"
- textual header "/usr/include/linux/can/error.h"
- textual header "/usr/include/linux/can/gw.h"
- textual header "/usr/include/linux/can/netlink.h"
- textual header "/usr/include/linux/can/raw.h"
- textual header "/usr/include/linux/can/vxcan.h"
- textual header "/usr/include/linux/capability.h"
- textual header "/usr/include/linux/capi.h"
- textual header "/usr/include/linux/cciss_defs.h"
- textual header "/usr/include/linux/cciss_ioctl.h"
- textual header "/usr/include/linux/cdrom.h"
- textual header "/usr/include/linux/cec-funcs.h"
- textual header "/usr/include/linux/cec.h"
- textual header "/usr/include/linux/cgroupstats.h"
- textual header "/usr/include/linux/chio.h"
- textual header "/usr/include/linux/cifs/cifs_mount.h"
- textual header "/usr/include/linux/cm4000_cs.h"
- textual header "/usr/include/linux/cn_proc.h"
- textual header "/usr/include/linux/coda.h"
- textual header "/usr/include/linux/coda_psdev.h"
- textual header "/usr/include/linux/coff.h"
- textual header "/usr/include/linux/connector.h"
- textual header "/usr/include/linux/const.h"
- textual header "/usr/include/linux/coresight-stm.h"
- textual header "/usr/include/linux/cramfs_fs.h"
- textual header "/usr/include/linux/cryptouser.h"
- textual header "/usr/include/linux/cuda.h"
- textual header "/usr/include/linux/cyclades.h"
- textual header "/usr/include/linux/cycx_cfm.h"
- textual header "/usr/include/linux/dcbnl.h"
- textual header "/usr/include/linux/dccp.h"
- textual header "/usr/include/linux/devlink.h"
- textual header "/usr/include/linux/dlm.h"
- textual header "/usr/include/linux/dlm_device.h"
- textual header "/usr/include/linux/dlm_netlink.h"
- textual header "/usr/include/linux/dlm_plock.h"
- textual header "/usr/include/linux/dlmconstants.h"
- textual header "/usr/include/linux/dm-ioctl.h"
- textual header "/usr/include/linux/dm-log-userspace.h"
- textual header "/usr/include/linux/dma-buf.h"
- textual header "/usr/include/linux/dn.h"
- textual header "/usr/include/linux/dqblk_xfs.h"
- textual header "/usr/include/linux/dvb/audio.h"
- textual header "/usr/include/linux/dvb/ca.h"
- textual header "/usr/include/linux/dvb/dmx.h"
- textual header "/usr/include/linux/dvb/frontend.h"
- textual header "/usr/include/linux/dvb/net.h"
- textual header "/usr/include/linux/dvb/osd.h"
- textual header "/usr/include/linux/dvb/version.h"
- textual header "/usr/include/linux/dvb/video.h"
- textual header "/usr/include/linux/edd.h"
- textual header "/usr/include/linux/efs_fs_sb.h"
- textual header "/usr/include/linux/elf-em.h"
- textual header "/usr/include/linux/elf-fdpic.h"
- textual header "/usr/include/linux/elf.h"
- textual header "/usr/include/linux/elfcore.h"
- textual header "/usr/include/linux/errno.h"
- textual header "/usr/include/linux/errqueue.h"
- textual header "/usr/include/linux/ethtool.h"
- textual header "/usr/include/linux/eventpoll.h"
- textual header "/usr/include/linux/fadvise.h"
- textual header "/usr/include/linux/falloc.h"
- textual header "/usr/include/linux/fanotify.h"
- textual header "/usr/include/linux/fb.h"
- textual header "/usr/include/linux/fcntl.h"
- textual header "/usr/include/linux/fd.h"
- textual header "/usr/include/linux/fdreg.h"
- textual header "/usr/include/linux/fib_rules.h"
- textual header "/usr/include/linux/fiemap.h"
- textual header "/usr/include/linux/filter.h"
- textual header "/usr/include/linux/firewire-cdev.h"
- textual header "/usr/include/linux/firewire-constants.h"
- textual header "/usr/include/linux/flat.h"
- textual header "/usr/include/linux/fou.h"
- textual header "/usr/include/linux/fs.h"
- textual header "/usr/include/linux/fsl_hypervisor.h"
- textual header "/usr/include/linux/fsmap.h"
- textual header "/usr/include/linux/fuse.h"
- textual header "/usr/include/linux/futex.h"
- textual header "/usr/include/linux/gameport.h"
- textual header "/usr/include/linux/gen_stats.h"
- textual header "/usr/include/linux/genetlink.h"
- textual header "/usr/include/linux/genwqe/genwqe_card.h"
- textual header "/usr/include/linux/gfs2_ondisk.h"
- textual header "/usr/include/linux/gigaset_dev.h"
- textual header "/usr/include/linux/gpio.h"
- textual header "/usr/include/linux/gsmmux.h"
- textual header "/usr/include/linux/gtp.h"
- textual header "/usr/include/linux/hash_info.h"
- textual header "/usr/include/linux/hdlc.h"
- textual header "/usr/include/linux/hdlc/ioctl.h"
- textual header "/usr/include/linux/hdlcdrv.h"
- textual header "/usr/include/linux/hdreg.h"
- textual header "/usr/include/linux/hid.h"
- textual header "/usr/include/linux/hiddev.h"
- textual header "/usr/include/linux/hidraw.h"
- textual header "/usr/include/linux/hpet.h"
- textual header "/usr/include/linux/hsi/cs-protocol.h"
- textual header "/usr/include/linux/hsi/hsi_char.h"
- textual header "/usr/include/linux/hsr_netlink.h"
- textual header "/usr/include/linux/hw_breakpoint.h"
- textual header "/usr/include/linux/hyperv.h"
- textual header "/usr/include/linux/hysdn_if.h"
- textual header "/usr/include/linux/i2c-dev.h"
- textual header "/usr/include/linux/i2c.h"
- textual header "/usr/include/linux/i2o-dev.h"
- textual header "/usr/include/linux/i8k.h"
- textual header "/usr/include/linux/icmp.h"
- textual header "/usr/include/linux/icmpv6.h"
- textual header "/usr/include/linux/if.h"
- textual header "/usr/include/linux/if_addr.h"
- textual header "/usr/include/linux/if_addrlabel.h"
- textual header "/usr/include/linux/if_alg.h"
- textual header "/usr/include/linux/if_arcnet.h"
- textual header "/usr/include/linux/if_arp.h"
- textual header "/usr/include/linux/if_bonding.h"
- textual header "/usr/include/linux/if_bridge.h"
- textual header "/usr/include/linux/if_cablemodem.h"
- textual header "/usr/include/linux/if_eql.h"
- textual header "/usr/include/linux/if_ether.h"
- textual header "/usr/include/linux/if_fc.h"
- textual header "/usr/include/linux/if_fddi.h"
- textual header "/usr/include/linux/if_frad.h"
- textual header "/usr/include/linux/if_hippi.h"
- textual header "/usr/include/linux/if_infiniband.h"
- textual header "/usr/include/linux/if_link.h"
- textual header "/usr/include/linux/if_ltalk.h"
- textual header "/usr/include/linux/if_macsec.h"
- textual header "/usr/include/linux/if_packet.h"
- textual header "/usr/include/linux/if_phonet.h"
- textual header "/usr/include/linux/if_plip.h"
- textual header "/usr/include/linux/if_ppp.h"
- textual header "/usr/include/linux/if_pppol2tp.h"
- textual header "/usr/include/linux/if_pppox.h"
- textual header "/usr/include/linux/if_slip.h"
- textual header "/usr/include/linux/if_team.h"
- textual header "/usr/include/linux/if_tun.h"
- textual header "/usr/include/linux/if_tunnel.h"
- textual header "/usr/include/linux/if_vlan.h"
- textual header "/usr/include/linux/if_x25.h"
- textual header "/usr/include/linux/ife.h"
- textual header "/usr/include/linux/igmp.h"
- textual header "/usr/include/linux/iio/events.h"
- textual header "/usr/include/linux/iio/types.h"
- textual header "/usr/include/linux/ila.h"
- textual header "/usr/include/linux/in.h"
- textual header "/usr/include/linux/in6.h"
- textual header "/usr/include/linux/in_route.h"
- textual header "/usr/include/linux/inet_diag.h"
- textual header "/usr/include/linux/inotify.h"
- textual header "/usr/include/linux/input-event-codes.h"
- textual header "/usr/include/linux/input.h"
- textual header "/usr/include/linux/ioctl.h"
- textual header "/usr/include/linux/ip.h"
- textual header "/usr/include/linux/ip6_tunnel.h"
- textual header "/usr/include/linux/ip_vs.h"
- textual header "/usr/include/linux/ipc.h"
- textual header "/usr/include/linux/ipmi.h"
- textual header "/usr/include/linux/ipmi_msgdefs.h"
- textual header "/usr/include/linux/ipsec.h"
- textual header "/usr/include/linux/ipv6.h"
- textual header "/usr/include/linux/ipv6_route.h"
- textual header "/usr/include/linux/ipx.h"
- textual header "/usr/include/linux/irda.h"
- textual header "/usr/include/linux/irqnr.h"
- textual header "/usr/include/linux/isdn.h"
- textual header "/usr/include/linux/isdn/capicmd.h"
- textual header "/usr/include/linux/isdn_divertif.h"
- textual header "/usr/include/linux/isdn_ppp.h"
- textual header "/usr/include/linux/isdnif.h"
- textual header "/usr/include/linux/iso_fs.h"
- textual header "/usr/include/linux/ivtv.h"
- textual header "/usr/include/linux/ivtvfb.h"
- textual header "/usr/include/linux/ixjuser.h"
- textual header "/usr/include/linux/jffs2.h"
- textual header "/usr/include/linux/joystick.h"
- textual header "/usr/include/linux/kcm.h"
- textual header "/usr/include/linux/kcmp.h"
- textual header "/usr/include/linux/kcov.h"
- textual header "/usr/include/linux/kd.h"
- textual header "/usr/include/linux/kdev_t.h"
- textual header "/usr/include/linux/kernel-page-flags.h"
- textual header "/usr/include/linux/kernel.h"
- textual header "/usr/include/linux/kernelcapi.h"
- textual header "/usr/include/linux/kexec.h"
- textual header "/usr/include/linux/keyboard.h"
- textual header "/usr/include/linux/keyctl.h"
- textual header "/usr/include/linux/kfd_ioctl.h"
- textual header "/usr/include/linux/kvm.h"
- textual header "/usr/include/linux/kvm_para.h"
- textual header "/usr/include/linux/l2tp.h"
- textual header "/usr/include/linux/libc-compat.h"
- textual header "/usr/include/linux/lightnvm.h"
- textual header "/usr/include/linux/limits.h"
- textual header "/usr/include/linux/lirc.h"
- textual header "/usr/include/linux/llc.h"
- textual header "/usr/include/linux/loop.h"
- textual header "/usr/include/linux/lp.h"
- textual header "/usr/include/linux/lwtunnel.h"
- textual header "/usr/include/linux/magic.h"
- textual header "/usr/include/linux/major.h"
- textual header "/usr/include/linux/map_to_7segment.h"
- textual header "/usr/include/linux/matroxfb.h"
- textual header "/usr/include/linux/max2175.h"
- textual header "/usr/include/linux/mdio.h"
- textual header "/usr/include/linux/media-bus-format.h"
- textual header "/usr/include/linux/media.h"
- textual header "/usr/include/linux/mei.h"
- textual header "/usr/include/linux/membarrier.h"
- textual header "/usr/include/linux/memfd.h"
- textual header "/usr/include/linux/mempolicy.h"
- textual header "/usr/include/linux/meye.h"
- textual header "/usr/include/linux/mic_common.h"
- textual header "/usr/include/linux/mic_ioctl.h"
- textual header "/usr/include/linux/mii.h"
- textual header "/usr/include/linux/minix_fs.h"
- textual header "/usr/include/linux/mman.h"
- textual header "/usr/include/linux/mmc/ioctl.h"
- textual header "/usr/include/linux/mmtimer.h"
- textual header "/usr/include/linux/module.h"
- textual header "/usr/include/linux/mpls.h"
- textual header "/usr/include/linux/mpls_iptunnel.h"
- textual header "/usr/include/linux/mqueue.h"
- textual header "/usr/include/linux/mroute.h"
- textual header "/usr/include/linux/mroute6.h"
- textual header "/usr/include/linux/msdos_fs.h"
- textual header "/usr/include/linux/msg.h"
- textual header "/usr/include/linux/mtio.h"
- textual header "/usr/include/linux/n_r3964.h"
- textual header "/usr/include/linux/nbd-netlink.h"
- textual header "/usr/include/linux/nbd.h"
- textual header "/usr/include/linux/ncp.h"
- textual header "/usr/include/linux/ncp_fs.h"
- textual header "/usr/include/linux/ncp_mount.h"
- textual header "/usr/include/linux/ncp_no.h"
- textual header "/usr/include/linux/ndctl.h"
- textual header "/usr/include/linux/neighbour.h"
- textual header "/usr/include/linux/net.h"
- textual header "/usr/include/linux/net_dropmon.h"
- textual header "/usr/include/linux/net_namespace.h"
- textual header "/usr/include/linux/net_tstamp.h"
- textual header "/usr/include/linux/netconf.h"
- textual header "/usr/include/linux/netdevice.h"
- textual header "/usr/include/linux/netfilter.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set_bitmap.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set_hash.h"
- textual header "/usr/include/linux/netfilter/ipset/ip_set_list.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_common.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_ftp.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_sctp.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_tcp.h"
- textual header "/usr/include/linux/netfilter/nf_conntrack_tuple_common.h"
- textual header "/usr/include/linux/netfilter/nf_log.h"
- textual header "/usr/include/linux/netfilter/nf_nat.h"
- textual header "/usr/include/linux/netfilter/nf_tables.h"
- textual header "/usr/include/linux/netfilter/nf_tables_compat.h"
- textual header "/usr/include/linux/netfilter/nfnetlink.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_acct.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_compat.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_conntrack.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_cthelper.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_cttimeout.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_log.h"
- textual header "/usr/include/linux/netfilter/nfnetlink_queue.h"
- textual header "/usr/include/linux/netfilter/x_tables.h"
- textual header "/usr/include/linux/netfilter/xt_AUDIT.h"
- textual header "/usr/include/linux/netfilter/xt_CHECKSUM.h"
- textual header "/usr/include/linux/netfilter/xt_CLASSIFY.h"
- textual header "/usr/include/linux/netfilter/xt_CONNMARK.h"
- textual header "/usr/include/linux/netfilter/xt_CONNSECMARK.h"
- textual header "/usr/include/linux/netfilter/xt_CT.h"
- textual header "/usr/include/linux/netfilter/xt_DSCP.h"
- textual header "/usr/include/linux/netfilter/xt_HMARK.h"
- textual header "/usr/include/linux/netfilter/xt_IDLETIMER.h"
- textual header "/usr/include/linux/netfilter/xt_LED.h"
- textual header "/usr/include/linux/netfilter/xt_LOG.h"
- textual header "/usr/include/linux/netfilter/xt_MARK.h"
- textual header "/usr/include/linux/netfilter/xt_NFLOG.h"
- textual header "/usr/include/linux/netfilter/xt_NFQUEUE.h"
- textual header "/usr/include/linux/netfilter/xt_RATEEST.h"
- textual header "/usr/include/linux/netfilter/xt_SECMARK.h"
- textual header "/usr/include/linux/netfilter/xt_SYNPROXY.h"
- textual header "/usr/include/linux/netfilter/xt_TCPMSS.h"
- textual header "/usr/include/linux/netfilter/xt_TCPOPTSTRIP.h"
- textual header "/usr/include/linux/netfilter/xt_TEE.h"
- textual header "/usr/include/linux/netfilter/xt_TPROXY.h"
- textual header "/usr/include/linux/netfilter/xt_addrtype.h"
- textual header "/usr/include/linux/netfilter/xt_bpf.h"
- textual header "/usr/include/linux/netfilter/xt_cgroup.h"
- textual header "/usr/include/linux/netfilter/xt_cluster.h"
- textual header "/usr/include/linux/netfilter/xt_comment.h"
- textual header "/usr/include/linux/netfilter/xt_connbytes.h"
- textual header "/usr/include/linux/netfilter/xt_connlabel.h"
- textual header "/usr/include/linux/netfilter/xt_connlimit.h"
- textual header "/usr/include/linux/netfilter/xt_connmark.h"
- textual header "/usr/include/linux/netfilter/xt_conntrack.h"
- textual header "/usr/include/linux/netfilter/xt_cpu.h"
- textual header "/usr/include/linux/netfilter/xt_dccp.h"
- textual header "/usr/include/linux/netfilter/xt_devgroup.h"
- textual header "/usr/include/linux/netfilter/xt_dscp.h"
- textual header "/usr/include/linux/netfilter/xt_ecn.h"
- textual header "/usr/include/linux/netfilter/xt_esp.h"
- textual header "/usr/include/linux/netfilter/xt_hashlimit.h"
- textual header "/usr/include/linux/netfilter/xt_helper.h"
- textual header "/usr/include/linux/netfilter/xt_ipcomp.h"
- textual header "/usr/include/linux/netfilter/xt_iprange.h"
- textual header "/usr/include/linux/netfilter/xt_ipvs.h"
- textual header "/usr/include/linux/netfilter/xt_l2tp.h"
- textual header "/usr/include/linux/netfilter/xt_length.h"
- textual header "/usr/include/linux/netfilter/xt_limit.h"
- textual header "/usr/include/linux/netfilter/xt_mac.h"
- textual header "/usr/include/linux/netfilter/xt_mark.h"
- textual header "/usr/include/linux/netfilter/xt_multiport.h"
- textual header "/usr/include/linux/netfilter/xt_nfacct.h"
- textual header "/usr/include/linux/netfilter/xt_osf.h"
- textual header "/usr/include/linux/netfilter/xt_owner.h"
- textual header "/usr/include/linux/netfilter/xt_physdev.h"
- textual header "/usr/include/linux/netfilter/xt_pkttype.h"
- textual header "/usr/include/linux/netfilter/xt_policy.h"
- textual header "/usr/include/linux/netfilter/xt_quota.h"
- textual header "/usr/include/linux/netfilter/xt_rateest.h"
- textual header "/usr/include/linux/netfilter/xt_realm.h"
- textual header "/usr/include/linux/netfilter/xt_recent.h"
- textual header "/usr/include/linux/netfilter/xt_rpfilter.h"
- textual header "/usr/include/linux/netfilter/xt_sctp.h"
- textual header "/usr/include/linux/netfilter/xt_set.h"
- textual header "/usr/include/linux/netfilter/xt_socket.h"
- textual header "/usr/include/linux/netfilter/xt_state.h"
- textual header "/usr/include/linux/netfilter/xt_statistic.h"
- textual header "/usr/include/linux/netfilter/xt_string.h"
- textual header "/usr/include/linux/netfilter/xt_tcpmss.h"
- textual header "/usr/include/linux/netfilter/xt_tcpudp.h"
- textual header "/usr/include/linux/netfilter/xt_time.h"
- textual header "/usr/include/linux/netfilter/xt_u32.h"
- textual header "/usr/include/linux/netfilter_arp.h"
- textual header "/usr/include/linux/netfilter_arp/arp_tables.h"
- textual header "/usr/include/linux/netfilter_arp/arpt_mangle.h"
- textual header "/usr/include/linux/netfilter_bridge.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_802_3.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_among.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_arp.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_arpreply.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_ip.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_ip6.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_limit.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_log.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_mark_m.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_mark_t.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_nat.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_nflog.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_pkttype.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_redirect.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_stp.h"
- textual header "/usr/include/linux/netfilter_bridge/ebt_vlan.h"
- textual header "/usr/include/linux/netfilter_bridge/ebtables.h"
- textual header "/usr/include/linux/netfilter_decnet.h"
- textual header "/usr/include/linux/netfilter_ipv4.h"
- textual header "/usr/include/linux/netfilter_ipv4/ip_tables.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ECN.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_LOG.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_REJECT.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_TTL.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ah.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ecn.h"
- textual header "/usr/include/linux/netfilter_ipv4/ipt_ttl.h"
- textual header "/usr/include/linux/netfilter_ipv6.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6_tables.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_HL.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_LOG.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_NPT.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_REJECT.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_ah.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_frag.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_hl.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_ipv6header.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_mh.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_opts.h"
- textual header "/usr/include/linux/netfilter_ipv6/ip6t_rt.h"
- textual header "/usr/include/linux/netlink.h"
- textual header "/usr/include/linux/netlink_diag.h"
- textual header "/usr/include/linux/netrom.h"
- textual header "/usr/include/linux/nfc.h"
- textual header "/usr/include/linux/nfs.h"
- textual header "/usr/include/linux/nfs2.h"
- textual header "/usr/include/linux/nfs3.h"
- textual header "/usr/include/linux/nfs4.h"
- textual header "/usr/include/linux/nfs4_mount.h"
- textual header "/usr/include/linux/nfs_fs.h"
- textual header "/usr/include/linux/nfs_idmap.h"
- textual header "/usr/include/linux/nfs_mount.h"
- textual header "/usr/include/linux/nfsacl.h"
- textual header "/usr/include/linux/nfsd/cld.h"
- textual header "/usr/include/linux/nfsd/debug.h"
- textual header "/usr/include/linux/nfsd/export.h"
- textual header "/usr/include/linux/nfsd/nfsfh.h"
- textual header "/usr/include/linux/nfsd/stats.h"
- textual header "/usr/include/linux/nilfs2_api.h"
- textual header "/usr/include/linux/nilfs2_ondisk.h"
- textual header "/usr/include/linux/nl80211.h"
- textual header "/usr/include/linux/nsfs.h"
- textual header "/usr/include/linux/nubus.h"
- textual header "/usr/include/linux/nvme_ioctl.h"
- textual header "/usr/include/linux/nvram.h"
- textual header "/usr/include/linux/omap3isp.h"
- textual header "/usr/include/linux/omapfb.h"
- textual header "/usr/include/linux/oom.h"
- textual header "/usr/include/linux/openvswitch.h"
- textual header "/usr/include/linux/packet_diag.h"
- textual header "/usr/include/linux/param.h"
- textual header "/usr/include/linux/parport.h"
- textual header "/usr/include/linux/patchkey.h"
- textual header "/usr/include/linux/pci.h"
- textual header "/usr/include/linux/pci_regs.h"
- textual header "/usr/include/linux/pcitest.h"
- textual header "/usr/include/linux/perf_event.h"
- textual header "/usr/include/linux/personality.h"
- textual header "/usr/include/linux/pfkeyv2.h"
- textual header "/usr/include/linux/pg.h"
- textual header "/usr/include/linux/phantom.h"
- textual header "/usr/include/linux/phonet.h"
- textual header "/usr/include/linux/pkt_cls.h"
- textual header "/usr/include/linux/pkt_sched.h"
- textual header "/usr/include/linux/pktcdvd.h"
- textual header "/usr/include/linux/pmu.h"
- textual header "/usr/include/linux/poll.h"
- textual header "/usr/include/linux/posix_acl.h"
- textual header "/usr/include/linux/posix_acl_xattr.h"
- textual header "/usr/include/linux/posix_types.h"
- textual header "/usr/include/linux/ppdev.h"
- textual header "/usr/include/linux/ppp-comp.h"
- textual header "/usr/include/linux/ppp-ioctl.h"
- textual header "/usr/include/linux/ppp_defs.h"
- textual header "/usr/include/linux/pps.h"
- textual header "/usr/include/linux/pr.h"
- textual header "/usr/include/linux/prctl.h"
- textual header "/usr/include/linux/psample.h"
- textual header "/usr/include/linux/psci.h"
- textual header "/usr/include/linux/ptp_clock.h"
- textual header "/usr/include/linux/ptrace.h"
- textual header "/usr/include/linux/qnx4_fs.h"
- textual header "/usr/include/linux/qnxtypes.h"
- textual header "/usr/include/linux/qrtr.h"
- textual header "/usr/include/linux/quota.h"
- textual header "/usr/include/linux/radeonfb.h"
- textual header "/usr/include/linux/raid/md_p.h"
- textual header "/usr/include/linux/raid/md_u.h"
- textual header "/usr/include/linux/random.h"
- textual header "/usr/include/linux/raw.h"
- textual header "/usr/include/linux/rds.h"
- textual header "/usr/include/linux/reboot.h"
- textual header "/usr/include/linux/reiserfs_fs.h"
- textual header "/usr/include/linux/reiserfs_xattr.h"
- textual header "/usr/include/linux/resource.h"
- textual header "/usr/include/linux/rfkill.h"
- textual header "/usr/include/linux/rio_cm_cdev.h"
- textual header "/usr/include/linux/rio_mport_cdev.h"
- textual header "/usr/include/linux/romfs_fs.h"
- textual header "/usr/include/linux/rose.h"
- textual header "/usr/include/linux/route.h"
- textual header "/usr/include/linux/rpmsg.h"
- textual header "/usr/include/linux/rtc.h"
- textual header "/usr/include/linux/rtnetlink.h"
- textual header "/usr/include/linux/rxrpc.h"
- textual header "/usr/include/linux/scc.h"
- textual header "/usr/include/linux/sched.h"
- textual header "/usr/include/linux/sched/types.h"
- textual header "/usr/include/linux/scif_ioctl.h"
- textual header "/usr/include/linux/screen_info.h"
- textual header "/usr/include/linux/sctp.h"
- textual header "/usr/include/linux/sdla.h"
- textual header "/usr/include/linux/seccomp.h"
- textual header "/usr/include/linux/securebits.h"
- textual header "/usr/include/linux/sed-opal.h"
- textual header "/usr/include/linux/seg6.h"
- textual header "/usr/include/linux/seg6_genl.h"
- textual header "/usr/include/linux/seg6_hmac.h"
- textual header "/usr/include/linux/seg6_iptunnel.h"
- textual header "/usr/include/linux/seg6_local.h"
- textual header "/usr/include/linux/selinux_netlink.h"
- textual header "/usr/include/linux/sem.h"
- textual header "/usr/include/linux/serial.h"
- textual header "/usr/include/linux/serial_core.h"
- textual header "/usr/include/linux/serial_reg.h"
- textual header "/usr/include/linux/serio.h"
- textual header "/usr/include/linux/shm.h"
- textual header "/usr/include/linux/signal.h"
- textual header "/usr/include/linux/signalfd.h"
- textual header "/usr/include/linux/smc.h"
- textual header "/usr/include/linux/smc_diag.h"
- textual header "/usr/include/linux/smiapp.h"
- textual header "/usr/include/linux/snmp.h"
- textual header "/usr/include/linux/sock_diag.h"
- textual header "/usr/include/linux/socket.h"
- textual header "/usr/include/linux/sockios.h"
- textual header "/usr/include/linux/sonet.h"
- textual header "/usr/include/linux/sonypi.h"
- textual header "/usr/include/linux/sound.h"
- textual header "/usr/include/linux/soundcard.h"
- textual header "/usr/include/linux/spi/spidev.h"
- textual header "/usr/include/linux/stat.h"
- textual header "/usr/include/linux/stddef.h"
- textual header "/usr/include/linux/stm.h"
- textual header "/usr/include/linux/string.h"
- textual header "/usr/include/linux/sunrpc/debug.h"
- textual header "/usr/include/linux/suspend_ioctls.h"
- textual header "/usr/include/linux/swab.h"
- textual header "/usr/include/linux/switchtec_ioctl.h"
- textual header "/usr/include/linux/sync_file.h"
- textual header "/usr/include/linux/synclink.h"
- textual header "/usr/include/linux/sysctl.h"
- textual header "/usr/include/linux/sysinfo.h"
- textual header "/usr/include/linux/target_core_user.h"
- textual header "/usr/include/linux/taskstats.h"
- textual header "/usr/include/linux/tc_act/tc_bpf.h"
- textual header "/usr/include/linux/tc_act/tc_connmark.h"
- textual header "/usr/include/linux/tc_act/tc_csum.h"
- textual header "/usr/include/linux/tc_act/tc_defact.h"
- textual header "/usr/include/linux/tc_act/tc_gact.h"
- textual header "/usr/include/linux/tc_act/tc_ife.h"
- textual header "/usr/include/linux/tc_act/tc_ipt.h"
- textual header "/usr/include/linux/tc_act/tc_mirred.h"
- textual header "/usr/include/linux/tc_act/tc_nat.h"
- textual header "/usr/include/linux/tc_act/tc_pedit.h"
- textual header "/usr/include/linux/tc_act/tc_sample.h"
- textual header "/usr/include/linux/tc_act/tc_skbedit.h"
- textual header "/usr/include/linux/tc_act/tc_skbmod.h"
- textual header "/usr/include/linux/tc_act/tc_tunnel_key.h"
- textual header "/usr/include/linux/tc_act/tc_vlan.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_cmp.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_meta.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_nbyte.h"
- textual header "/usr/include/linux/tc_ematch/tc_em_text.h"
- textual header "/usr/include/linux/tcp.h"
- textual header "/usr/include/linux/tcp_metrics.h"
- textual header "/usr/include/linux/tee.h"
- textual header "/usr/include/linux/telephony.h"
- textual header "/usr/include/linux/termios.h"
- textual header "/usr/include/linux/thermal.h"
- textual header "/usr/include/linux/time.h"
- textual header "/usr/include/linux/timerfd.h"
- textual header "/usr/include/linux/times.h"
- textual header "/usr/include/linux/timex.h"
- textual header "/usr/include/linux/tiocl.h"
- textual header "/usr/include/linux/tipc.h"
- textual header "/usr/include/linux/tipc_config.h"
- textual header "/usr/include/linux/tipc_netlink.h"
- textual header "/usr/include/linux/tls.h"
- textual header "/usr/include/linux/toshiba.h"
- textual header "/usr/include/linux/tty.h"
- textual header "/usr/include/linux/tty_flags.h"
- textual header "/usr/include/linux/types.h"
- textual header "/usr/include/linux/udf_fs_i.h"
- textual header "/usr/include/linux/udp.h"
- textual header "/usr/include/linux/uhid.h"
- textual header "/usr/include/linux/uinput.h"
- textual header "/usr/include/linux/uio.h"
- textual header "/usr/include/linux/uleds.h"
- textual header "/usr/include/linux/ultrasound.h"
- textual header "/usr/include/linux/un.h"
- textual header "/usr/include/linux/unistd.h"
- textual header "/usr/include/linux/unix_diag.h"
- textual header "/usr/include/linux/usb/audio.h"
- textual header "/usr/include/linux/usb/cdc-wdm.h"
- textual header "/usr/include/linux/usb/cdc.h"
- textual header "/usr/include/linux/usb/ch11.h"
- textual header "/usr/include/linux/usb/ch9.h"
- textual header "/usr/include/linux/usb/charger.h"
- textual header "/usr/include/linux/usb/functionfs.h"
- textual header "/usr/include/linux/usb/g_printer.h"
- textual header "/usr/include/linux/usb/gadgetfs.h"
- textual header "/usr/include/linux/usb/midi.h"
- textual header "/usr/include/linux/usb/tmc.h"
- textual header "/usr/include/linux/usb/video.h"
- textual header "/usr/include/linux/usbdevice_fs.h"
- textual header "/usr/include/linux/usbip.h"
- textual header "/usr/include/linux/userfaultfd.h"
- textual header "/usr/include/linux/userio.h"
- textual header "/usr/include/linux/utime.h"
- textual header "/usr/include/linux/utsname.h"
- textual header "/usr/include/linux/uuid.h"
- textual header "/usr/include/linux/uvcvideo.h"
- textual header "/usr/include/linux/v4l2-common.h"
- textual header "/usr/include/linux/v4l2-controls.h"
- textual header "/usr/include/linux/v4l2-dv-timings.h"
- textual header "/usr/include/linux/v4l2-mediabus.h"
- textual header "/usr/include/linux/v4l2-subdev.h"
- textual header "/usr/include/linux/version.h"
- textual header "/usr/include/linux/veth.h"
- textual header "/usr/include/linux/vfio.h"
- textual header "/usr/include/linux/vfio_ccw.h"
- textual header "/usr/include/linux/vhost.h"
- textual header "/usr/include/linux/videodev2.h"
- textual header "/usr/include/linux/virtio_9p.h"
- textual header "/usr/include/linux/virtio_balloon.h"
- textual header "/usr/include/linux/virtio_blk.h"
- textual header "/usr/include/linux/virtio_config.h"
- textual header "/usr/include/linux/virtio_console.h"
- textual header "/usr/include/linux/virtio_crypto.h"
- textual header "/usr/include/linux/virtio_gpu.h"
- textual header "/usr/include/linux/virtio_ids.h"
- textual header "/usr/include/linux/virtio_input.h"
- textual header "/usr/include/linux/virtio_mmio.h"
- textual header "/usr/include/linux/virtio_net.h"
- textual header "/usr/include/linux/virtio_pci.h"
- textual header "/usr/include/linux/virtio_ring.h"
- textual header "/usr/include/linux/virtio_rng.h"
- textual header "/usr/include/linux/virtio_scsi.h"
- textual header "/usr/include/linux/virtio_types.h"
- textual header "/usr/include/linux/virtio_vsock.h"
- textual header "/usr/include/linux/vm_sockets.h"
- textual header "/usr/include/linux/vm_sockets_diag.h"
- textual header "/usr/include/linux/vsockmon.h"
- textual header "/usr/include/linux/vt.h"
- textual header "/usr/include/linux/vtpm_proxy.h"
- textual header "/usr/include/linux/wait.h"
- textual header "/usr/include/linux/wanrouter.h"
- textual header "/usr/include/linux/watchdog.h"
- textual header "/usr/include/linux/wimax.h"
- textual header "/usr/include/linux/wimax/i2400m.h"
- textual header "/usr/include/linux/wireless.h"
- textual header "/usr/include/linux/wmi.h"
- textual header "/usr/include/linux/x25.h"
- textual header "/usr/include/linux/xattr.h"
- textual header "/usr/include/linux/xfrm.h"
- textual header "/usr/include/linux/xilinx-v4l2-controls.h"
- textual header "/usr/include/linux/zorro.h"
- textual header "/usr/include/linux/zorro_ids.h"
- textual header "/usr/include/locale.h"
- textual header "/usr/include/malloc.h"
- textual header "/usr/include/math.h"
- textual header "/usr/include/mcheck.h"
- textual header "/usr/include/memory.h"
- textual header "/usr/include/misc/cxl.h"
- textual header "/usr/include/misc/ocxl.h"
- textual header "/usr/include/mntent.h"
- textual header "/usr/include/monetary.h"
- textual header "/usr/include/mqueue.h"
- textual header "/usr/include/mtd/inftl-user.h"
- textual header "/usr/include/mtd/mtd-abi.h"
- textual header "/usr/include/mtd/mtd-user.h"
- textual header "/usr/include/mtd/nftl-user.h"
- textual header "/usr/include/mtd/ubi-user.h"
- textual header "/usr/include/net/ethernet.h"
- textual header "/usr/include/net/if.h"
- textual header "/usr/include/net/if_arp.h"
- textual header "/usr/include/net/if_packet.h"
- textual header "/usr/include/net/if_ppp.h"
- textual header "/usr/include/net/if_shaper.h"
- textual header "/usr/include/net/if_slip.h"
- textual header "/usr/include/net/ppp-comp.h"
- textual header "/usr/include/net/ppp_defs.h"
- textual header "/usr/include/net/route.h"
- textual header "/usr/include/netash/ash.h"
- textual header "/usr/include/netatalk/at.h"
- textual header "/usr/include/netax25/ax25.h"
- textual header "/usr/include/netdb.h"
- textual header "/usr/include/neteconet/ec.h"
- textual header "/usr/include/netinet/ether.h"
- textual header "/usr/include/netinet/icmp6.h"
- textual header "/usr/include/netinet/if_ether.h"
- textual header "/usr/include/netinet/if_fddi.h"
- textual header "/usr/include/netinet/if_tr.h"
- textual header "/usr/include/netinet/igmp.h"
- textual header "/usr/include/netinet/in.h"
- textual header "/usr/include/netinet/in_systm.h"
- textual header "/usr/include/netinet/ip.h"
- textual header "/usr/include/netinet/ip6.h"
- textual header "/usr/include/netinet/ip_icmp.h"
- textual header "/usr/include/netinet/tcp.h"
- textual header "/usr/include/netinet/udp.h"
- textual header "/usr/include/netipx/ipx.h"
- textual header "/usr/include/netiucv/iucv.h"
- textual header "/usr/include/netpacket/packet.h"
- textual header "/usr/include/netrom/netrom.h"
- textual header "/usr/include/netrose/rose.h"
- textual header "/usr/include/nfs/nfs.h"
- textual header "/usr/include/nl_types.h"
- textual header "/usr/include/nss.h"
- textual header "/usr/include/obstack.h"
- textual header "/usr/include/paths.h"
- textual header "/usr/include/poll.h"
- textual header "/usr/include/printf.h"
- textual header "/usr/include/proc_service.h"
- textual header "/usr/include/protocols/routed.h"
- textual header "/usr/include/protocols/rwhod.h"
- textual header "/usr/include/protocols/talkd.h"
- textual header "/usr/include/protocols/timed.h"
- textual header "/usr/include/pthread.h"
- textual header "/usr/include/pty.h"
- textual header "/usr/include/pwd.h"
- textual header "/usr/include/python2.7/Python-ast.h"
- textual header "/usr/include/python2.7/Python.h"
- textual header "/usr/include/python2.7/abstract.h"
- textual header "/usr/include/python2.7/asdl.h"
- textual header "/usr/include/python2.7/ast.h"
- textual header "/usr/include/python2.7/bitset.h"
- textual header "/usr/include/python2.7/boolobject.h"
- textual header "/usr/include/python2.7/bufferobject.h"
- textual header "/usr/include/python2.7/bytearrayobject.h"
- textual header "/usr/include/python2.7/bytes_methods.h"
- textual header "/usr/include/python2.7/bytesobject.h"
- textual header "/usr/include/python2.7/cStringIO.h"
- textual header "/usr/include/python2.7/cellobject.h"
- textual header "/usr/include/python2.7/ceval.h"
- textual header "/usr/include/python2.7/classobject.h"
- textual header "/usr/include/python2.7/cobject.h"
- textual header "/usr/include/python2.7/code.h"
- textual header "/usr/include/python2.7/codecs.h"
- textual header "/usr/include/python2.7/compile.h"
- textual header "/usr/include/python2.7/complexobject.h"
- textual header "/usr/include/python2.7/datetime.h"
- textual header "/usr/include/python2.7/descrobject.h"
- textual header "/usr/include/python2.7/dictobject.h"
- textual header "/usr/include/python2.7/dtoa.h"
- textual header "/usr/include/python2.7/enumobject.h"
- textual header "/usr/include/python2.7/errcode.h"
- textual header "/usr/include/python2.7/eval.h"
- textual header "/usr/include/python2.7/fileobject.h"
- textual header "/usr/include/python2.7/floatobject.h"
- textual header "/usr/include/python2.7/frameobject.h"
- textual header "/usr/include/python2.7/funcobject.h"
- textual header "/usr/include/python2.7/genobject.h"
- textual header "/usr/include/python2.7/graminit.h"
- textual header "/usr/include/python2.7/grammar.h"
- textual header "/usr/include/python2.7/import.h"
- textual header "/usr/include/python2.7/intobject.h"
- textual header "/usr/include/python2.7/intrcheck.h"
- textual header "/usr/include/python2.7/iterobject.h"
- textual header "/usr/include/python2.7/listobject.h"
- textual header "/usr/include/python2.7/longintrepr.h"
- textual header "/usr/include/python2.7/longobject.h"
- textual header "/usr/include/python2.7/marshal.h"
- textual header "/usr/include/python2.7/memoryobject.h"
- textual header "/usr/include/python2.7/metagrammar.h"
- textual header "/usr/include/python2.7/methodobject.h"
- textual header "/usr/include/python2.7/modsupport.h"
- textual header "/usr/include/python2.7/moduleobject.h"
- textual header "/usr/include/python2.7/node.h"
- textual header "/usr/include/python2.7/object.h"
- textual header "/usr/include/python2.7/objimpl.h"
- textual header "/usr/include/python2.7/opcode.h"
- textual header "/usr/include/python2.7/osdefs.h"
- textual header "/usr/include/python2.7/parsetok.h"
- textual header "/usr/include/python2.7/patchlevel.h"
- textual header "/usr/include/python2.7/pgen.h"
- textual header "/usr/include/python2.7/pgenheaders.h"
- textual header "/usr/include/python2.7/py_curses.h"
- textual header "/usr/include/python2.7/pyarena.h"
- textual header "/usr/include/python2.7/pycapsule.h"
- textual header "/usr/include/python2.7/pyconfig.h"
- textual header "/usr/include/python2.7/pyctype.h"
- textual header "/usr/include/python2.7/pydebug.h"
- textual header "/usr/include/python2.7/pyerrors.h"
- textual header "/usr/include/python2.7/pyexpat.h"
- textual header "/usr/include/python2.7/pyfpe.h"
- textual header "/usr/include/python2.7/pygetopt.h"
- textual header "/usr/include/python2.7/pymacconfig.h"
- textual header "/usr/include/python2.7/pymactoolbox.h"
- textual header "/usr/include/python2.7/pymath.h"
- textual header "/usr/include/python2.7/pymem.h"
- textual header "/usr/include/python2.7/pyport.h"
- textual header "/usr/include/python2.7/pystate.h"
- textual header "/usr/include/python2.7/pystrcmp.h"
- textual header "/usr/include/python2.7/pystrtod.h"
- textual header "/usr/include/python2.7/pythonrun.h"
- textual header "/usr/include/python2.7/pythread.h"
- textual header "/usr/include/python2.7/rangeobject.h"
- textual header "/usr/include/python2.7/setobject.h"
- textual header "/usr/include/python2.7/sliceobject.h"
- textual header "/usr/include/python2.7/stringobject.h"
- textual header "/usr/include/python2.7/structmember.h"
- textual header "/usr/include/python2.7/structseq.h"
- textual header "/usr/include/python2.7/symtable.h"
- textual header "/usr/include/python2.7/sysmodule.h"
- textual header "/usr/include/python2.7/timefuncs.h"
- textual header "/usr/include/python2.7/token.h"
- textual header "/usr/include/python2.7/traceback.h"
- textual header "/usr/include/python2.7/tupleobject.h"
- textual header "/usr/include/python2.7/ucnhash.h"
- textual header "/usr/include/python2.7/unicodeobject.h"
- textual header "/usr/include/python2.7/warnings.h"
- textual header "/usr/include/python2.7/weakrefobject.h"
- textual header "/usr/include/python3.7/Python-ast.h"
- textual header "/usr/include/python3.7/Python.h"
- textual header "/usr/include/python3.7/abstract.h"
- textual header "/usr/include/python3.7/accu.h"
- textual header "/usr/include/python3.7/asdl.h"
- textual header "/usr/include/python3.7/ast.h"
- textual header "/usr/include/python3.7/bitset.h"
- textual header "/usr/include/python3.7/bltinmodule.h"
- textual header "/usr/include/python3.7/boolobject.h"
- textual header "/usr/include/python3.7/bytearrayobject.h"
- textual header "/usr/include/python3.7/bytes_methods.h"
- textual header "/usr/include/python3.7/bytesobject.h"
- textual header "/usr/include/python3.7/cellobject.h"
- textual header "/usr/include/python3.7/ceval.h"
- textual header "/usr/include/python3.7/classobject.h"
- textual header "/usr/include/python3.7/code.h"
- textual header "/usr/include/python3.7/codecs.h"
- textual header "/usr/include/python3.7/compile.h"
- textual header "/usr/include/python3.7/complexobject.h"
- textual header "/usr/include/python3.7/context.h"
- textual header "/usr/include/python3.7/datetime.h"
- textual header "/usr/include/python3.7/descrobject.h"
- textual header "/usr/include/python3.7/dictobject.h"
- textual header "/usr/include/python3.7/dtoa.h"
- textual header "/usr/include/python3.7/dynamic_annotations.h"
- textual header "/usr/include/python3.7/enumobject.h"
- textual header "/usr/include/python3.7/errcode.h"
- textual header "/usr/include/python3.7/eval.h"
- textual header "/usr/include/python3.7/fileobject.h"
- textual header "/usr/include/python3.7/fileutils.h"
- textual header "/usr/include/python3.7/floatobject.h"
- textual header "/usr/include/python3.7/frameobject.h"
- textual header "/usr/include/python3.7/funcobject.h"
- textual header "/usr/include/python3.7/genobject.h"
- textual header "/usr/include/python3.7/graminit.h"
- textual header "/usr/include/python3.7/grammar.h"
- textual header "/usr/include/python3.7/import.h"
- textual header "/usr/include/python3.7/internal/ceval.h"
- textual header "/usr/include/python3.7/internal/condvar.h"
- textual header "/usr/include/python3.7/internal/context.h"
- textual header "/usr/include/python3.7/internal/gil.h"
- textual header "/usr/include/python3.7/internal/hamt.h"
- textual header "/usr/include/python3.7/internal/hash.h"
- textual header "/usr/include/python3.7/internal/import.h"
- textual header "/usr/include/python3.7/internal/mem.h"
- textual header "/usr/include/python3.7/internal/pygetopt.h"
- textual header "/usr/include/python3.7/internal/pystate.h"
- textual header "/usr/include/python3.7/internal/warnings.h"
- textual header "/usr/include/python3.7/intrcheck.h"
- textual header "/usr/include/python3.7/iterobject.h"
- textual header "/usr/include/python3.7/listobject.h"
- textual header "/usr/include/python3.7/longintrepr.h"
- textual header "/usr/include/python3.7/longobject.h"
- textual header "/usr/include/python3.7/marshal.h"
- textual header "/usr/include/python3.7/memoryobject.h"
- textual header "/usr/include/python3.7/metagrammar.h"
- textual header "/usr/include/python3.7/methodobject.h"
- textual header "/usr/include/python3.7/modsupport.h"
- textual header "/usr/include/python3.7/moduleobject.h"
- textual header "/usr/include/python3.7/namespaceobject.h"
- textual header "/usr/include/python3.7/node.h"
- textual header "/usr/include/python3.7/object.h"
- textual header "/usr/include/python3.7/objimpl.h"
- textual header "/usr/include/python3.7/odictobject.h"
- textual header "/usr/include/python3.7/opcode.h"
- textual header "/usr/include/python3.7/osdefs.h"
- textual header "/usr/include/python3.7/osmodule.h"
- textual header "/usr/include/python3.7/parsetok.h"
- textual header "/usr/include/python3.7/patchlevel.h"
- textual header "/usr/include/python3.7/pgen.h"
- textual header "/usr/include/python3.7/pgenheaders.h"
- textual header "/usr/include/python3.7/py_curses.h"
- textual header "/usr/include/python3.7/pyarena.h"
- textual header "/usr/include/python3.7/pyatomic.h"
- textual header "/usr/include/python3.7/pycapsule.h"
- textual header "/usr/include/python3.7/pyconfig.h"
- textual header "/usr/include/python3.7/pyctype.h"
- textual header "/usr/include/python3.7/pydebug.h"
- textual header "/usr/include/python3.7/pydtrace.h"
- textual header "/usr/include/python3.7/pyerrors.h"
- textual header "/usr/include/python3.7/pyexpat.h"
- textual header "/usr/include/python3.7/pyfpe.h"
- textual header "/usr/include/python3.7/pyhash.h"
- textual header "/usr/include/python3.7/pylifecycle.h"
- textual header "/usr/include/python3.7/pymacconfig.h"
- textual header "/usr/include/python3.7/pymacro.h"
- textual header "/usr/include/python3.7/pymath.h"
- textual header "/usr/include/python3.7/pymem.h"
- textual header "/usr/include/python3.7/pyport.h"
- textual header "/usr/include/python3.7/pystate.h"
- textual header "/usr/include/python3.7/pystrcmp.h"
- textual header "/usr/include/python3.7/pystrhex.h"
- textual header "/usr/include/python3.7/pystrtod.h"
- textual header "/usr/include/python3.7/pythonrun.h"
- textual header "/usr/include/python3.7/pythread.h"
- textual header "/usr/include/python3.7/pytime.h"
- textual header "/usr/include/python3.7/rangeobject.h"
- textual header "/usr/include/python3.7/setobject.h"
- textual header "/usr/include/python3.7/sliceobject.h"
- textual header "/usr/include/python3.7/structmember.h"
- textual header "/usr/include/python3.7/structseq.h"
- textual header "/usr/include/python3.7/symtable.h"
- textual header "/usr/include/python3.7/sysmodule.h"
- textual header "/usr/include/python3.7/token.h"
- textual header "/usr/include/python3.7/traceback.h"
- textual header "/usr/include/python3.7/tupleobject.h"
- textual header "/usr/include/python3.7/typeslots.h"
- textual header "/usr/include/python3.7/ucnhash.h"
- textual header "/usr/include/python3.7/unicodeobject.h"
- textual header "/usr/include/python3.7/warnings.h"
- textual header "/usr/include/python3.7/weakrefobject.h"
- textual header "/usr/include/python3.7m/Python-ast.h"
- textual header "/usr/include/python3.7m/Python.h"
- textual header "/usr/include/python3.7m/abstract.h"
- textual header "/usr/include/python3.7m/accu.h"
- textual header "/usr/include/python3.7m/asdl.h"
- textual header "/usr/include/python3.7m/ast.h"
- textual header "/usr/include/python3.7m/bitset.h"
- textual header "/usr/include/python3.7m/bltinmodule.h"
- textual header "/usr/include/python3.7m/boolobject.h"
- textual header "/usr/include/python3.7m/bytearrayobject.h"
- textual header "/usr/include/python3.7m/bytes_methods.h"
- textual header "/usr/include/python3.7m/bytesobject.h"
- textual header "/usr/include/python3.7m/cellobject.h"
- textual header "/usr/include/python3.7m/ceval.h"
- textual header "/usr/include/python3.7m/classobject.h"
- textual header "/usr/include/python3.7m/code.h"
- textual header "/usr/include/python3.7m/codecs.h"
- textual header "/usr/include/python3.7m/compile.h"
- textual header "/usr/include/python3.7m/complexobject.h"
- textual header "/usr/include/python3.7m/context.h"
- textual header "/usr/include/python3.7m/datetime.h"
- textual header "/usr/include/python3.7m/descrobject.h"
- textual header "/usr/include/python3.7m/dictobject.h"
- textual header "/usr/include/python3.7m/dtoa.h"
- textual header "/usr/include/python3.7m/dynamic_annotations.h"
- textual header "/usr/include/python3.7m/enumobject.h"
- textual header "/usr/include/python3.7m/errcode.h"
- textual header "/usr/include/python3.7m/eval.h"
- textual header "/usr/include/python3.7m/fileobject.h"
- textual header "/usr/include/python3.7m/fileutils.h"
- textual header "/usr/include/python3.7m/floatobject.h"
- textual header "/usr/include/python3.7m/frameobject.h"
- textual header "/usr/include/python3.7m/funcobject.h"
- textual header "/usr/include/python3.7m/genobject.h"
- textual header "/usr/include/python3.7m/graminit.h"
- textual header "/usr/include/python3.7m/grammar.h"
- textual header "/usr/include/python3.7m/import.h"
- textual header "/usr/include/python3.7m/internal/ceval.h"
- textual header "/usr/include/python3.7m/internal/condvar.h"
- textual header "/usr/include/python3.7m/internal/context.h"
- textual header "/usr/include/python3.7m/internal/gil.h"
- textual header "/usr/include/python3.7m/internal/hamt.h"
- textual header "/usr/include/python3.7m/internal/hash.h"
- textual header "/usr/include/python3.7m/internal/import.h"
- textual header "/usr/include/python3.7m/internal/mem.h"
- textual header "/usr/include/python3.7m/internal/pygetopt.h"
- textual header "/usr/include/python3.7m/internal/pystate.h"
- textual header "/usr/include/python3.7m/internal/warnings.h"
- textual header "/usr/include/python3.7m/intrcheck.h"
- textual header "/usr/include/python3.7m/iterobject.h"
- textual header "/usr/include/python3.7m/listobject.h"
- textual header "/usr/include/python3.7m/longintrepr.h"
- textual header "/usr/include/python3.7m/longobject.h"
- textual header "/usr/include/python3.7m/marshal.h"
- textual header "/usr/include/python3.7m/memoryobject.h"
- textual header "/usr/include/python3.7m/metagrammar.h"
- textual header "/usr/include/python3.7m/methodobject.h"
- textual header "/usr/include/python3.7m/modsupport.h"
- textual header "/usr/include/python3.7m/moduleobject.h"
- textual header "/usr/include/python3.7m/namespaceobject.h"
- textual header "/usr/include/python3.7m/node.h"
- textual header "/usr/include/python3.7m/object.h"
- textual header "/usr/include/python3.7m/objimpl.h"
- textual header "/usr/include/python3.7m/odictobject.h"
- textual header "/usr/include/python3.7m/opcode.h"
- textual header "/usr/include/python3.7m/osdefs.h"
- textual header "/usr/include/python3.7m/osmodule.h"
- textual header "/usr/include/python3.7m/parsetok.h"
- textual header "/usr/include/python3.7m/patchlevel.h"
- textual header "/usr/include/python3.7m/pgen.h"
- textual header "/usr/include/python3.7m/pgenheaders.h"
- textual header "/usr/include/python3.7m/py_curses.h"
- textual header "/usr/include/python3.7m/pyarena.h"
- textual header "/usr/include/python3.7m/pyatomic.h"
- textual header "/usr/include/python3.7m/pycapsule.h"
- textual header "/usr/include/python3.7m/pyconfig.h"
- textual header "/usr/include/python3.7m/pyctype.h"
- textual header "/usr/include/python3.7m/pydebug.h"
- textual header "/usr/include/python3.7m/pydtrace.h"
- textual header "/usr/include/python3.7m/pyerrors.h"
- textual header "/usr/include/python3.7m/pyexpat.h"
- textual header "/usr/include/python3.7m/pyfpe.h"
- textual header "/usr/include/python3.7m/pyhash.h"
- textual header "/usr/include/python3.7m/pylifecycle.h"
- textual header "/usr/include/python3.7m/pymacconfig.h"
- textual header "/usr/include/python3.7m/pymacro.h"
- textual header "/usr/include/python3.7m/pymath.h"
- textual header "/usr/include/python3.7m/pymem.h"
- textual header "/usr/include/python3.7m/pyport.h"
- textual header "/usr/include/python3.7m/pystate.h"
- textual header "/usr/include/python3.7m/pystrcmp.h"
- textual header "/usr/include/python3.7m/pystrhex.h"
- textual header "/usr/include/python3.7m/pystrtod.h"
- textual header "/usr/include/python3.7m/pythonrun.h"
- textual header "/usr/include/python3.7m/pythread.h"
- textual header "/usr/include/python3.7m/pytime.h"
- textual header "/usr/include/python3.7m/rangeobject.h"
- textual header "/usr/include/python3.7m/setobject.h"
- textual header "/usr/include/python3.7m/sliceobject.h"
- textual header "/usr/include/python3.7m/structmember.h"
- textual header "/usr/include/python3.7m/structseq.h"
- textual header "/usr/include/python3.7m/symtable.h"
- textual header "/usr/include/python3.7m/sysmodule.h"
- textual header "/usr/include/python3.7m/token.h"
- textual header "/usr/include/python3.7m/traceback.h"
- textual header "/usr/include/python3.7m/tupleobject.h"
- textual header "/usr/include/python3.7m/typeslots.h"
- textual header "/usr/include/python3.7m/ucnhash.h"
- textual header "/usr/include/python3.7m/unicodeobject.h"
- textual header "/usr/include/python3.7m/warnings.h"
- textual header "/usr/include/python3.7m/weakrefobject.h"
- textual header "/usr/include/rdma/bnxt_re-abi.h"
- textual header "/usr/include/rdma/cxgb3-abi.h"
- textual header "/usr/include/rdma/cxgb4-abi.h"
- textual header "/usr/include/rdma/hfi/hfi1_ioctl.h"
- textual header "/usr/include/rdma/hfi/hfi1_user.h"
- textual header "/usr/include/rdma/hns-abi.h"
- textual header "/usr/include/rdma/ib_user_cm.h"
- textual header "/usr/include/rdma/ib_user_ioctl_verbs.h"
- textual header "/usr/include/rdma/ib_user_mad.h"
- textual header "/usr/include/rdma/ib_user_sa.h"
- textual header "/usr/include/rdma/ib_user_verbs.h"
- textual header "/usr/include/rdma/mlx4-abi.h"
- textual header "/usr/include/rdma/mlx5-abi.h"
- textual header "/usr/include/rdma/mthca-abi.h"
- textual header "/usr/include/rdma/nes-abi.h"
- textual header "/usr/include/rdma/ocrdma-abi.h"
- textual header "/usr/include/rdma/qedr-abi.h"
- textual header "/usr/include/rdma/rdma_netlink.h"
- textual header "/usr/include/rdma/rdma_user_cm.h"
- textual header "/usr/include/rdma/rdma_user_ioctl.h"
- textual header "/usr/include/rdma/rdma_user_rxe.h"
- textual header "/usr/include/rdma/vmw_pvrdma-abi.h"
- textual header "/usr/include/re_comp.h"
- textual header "/usr/include/regex.h"
- textual header "/usr/include/regexp.h"
- textual header "/usr/include/resolv.h"
- textual header "/usr/include/rpc/auth.h"
- textual header "/usr/include/rpc/auth_des.h"
- textual header "/usr/include/rpc/auth_unix.h"
- textual header "/usr/include/rpc/clnt.h"
- textual header "/usr/include/rpc/des_crypt.h"
- textual header "/usr/include/rpc/key_prot.h"
- textual header "/usr/include/rpc/netdb.h"
- textual header "/usr/include/rpc/pmap_clnt.h"
- textual header "/usr/include/rpc/pmap_prot.h"
- textual header "/usr/include/rpc/pmap_rmt.h"
- textual header "/usr/include/rpc/rpc.h"
- textual header "/usr/include/rpc/rpc_des.h"
- textual header "/usr/include/rpc/rpc_msg.h"
- textual header "/usr/include/rpc/svc.h"
- textual header "/usr/include/rpc/svc_auth.h"
- textual header "/usr/include/rpc/types.h"
- textual header "/usr/include/rpc/xdr.h"
- textual header "/usr/include/rpcsvc/bootparam.h"
- textual header "/usr/include/rpcsvc/bootparam_prot.h"
- textual header "/usr/include/rpcsvc/bootparam_prot.x"
- textual header "/usr/include/rpcsvc/key_prot.h"
- textual header "/usr/include/rpcsvc/key_prot.x"
- textual header "/usr/include/rpcsvc/klm_prot.h"
- textual header "/usr/include/rpcsvc/klm_prot.x"
- textual header "/usr/include/rpcsvc/mount.h"
- textual header "/usr/include/rpcsvc/mount.x"
- textual header "/usr/include/rpcsvc/nfs_prot.h"
- textual header "/usr/include/rpcsvc/nfs_prot.x"
- textual header "/usr/include/rpcsvc/nis.h"
- textual header "/usr/include/rpcsvc/nis.x"
- textual header "/usr/include/rpcsvc/nis_callback.h"
- textual header "/usr/include/rpcsvc/nis_callback.x"
- textual header "/usr/include/rpcsvc/nis_object.x"
- textual header "/usr/include/rpcsvc/nis_tags.h"
- textual header "/usr/include/rpcsvc/nislib.h"
- textual header "/usr/include/rpcsvc/nlm_prot.h"
- textual header "/usr/include/rpcsvc/nlm_prot.x"
- textual header "/usr/include/rpcsvc/rex.h"
- textual header "/usr/include/rpcsvc/rex.x"
- textual header "/usr/include/rpcsvc/rquota.h"
- textual header "/usr/include/rpcsvc/rquota.x"
- textual header "/usr/include/rpcsvc/rstat.h"
- textual header "/usr/include/rpcsvc/rstat.x"
- textual header "/usr/include/rpcsvc/rusers.h"
- textual header "/usr/include/rpcsvc/rusers.x"
- textual header "/usr/include/rpcsvc/sm_inter.h"
- textual header "/usr/include/rpcsvc/sm_inter.x"
- textual header "/usr/include/rpcsvc/spray.h"
- textual header "/usr/include/rpcsvc/spray.x"
- textual header "/usr/include/rpcsvc/yp.h"
- textual header "/usr/include/rpcsvc/yp.x"
- textual header "/usr/include/rpcsvc/yp_prot.h"
- textual header "/usr/include/rpcsvc/ypclnt.h"
- textual header "/usr/include/rpcsvc/yppasswd.h"
- textual header "/usr/include/rpcsvc/yppasswd.x"
- textual header "/usr/include/rpcsvc/ypupd.h"
- textual header "/usr/include/ruby-2.5.0/ruby.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/classext.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/rubyio.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/rubysig.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/st.h"
- textual header "/usr/include/ruby-2.5.0/ruby/backward/util.h"
- textual header "/usr/include/ruby-2.5.0/ruby/debug.h"
- textual header "/usr/include/ruby-2.5.0/ruby/defines.h"
- textual header "/usr/include/ruby-2.5.0/ruby/digest.h"
- textual header "/usr/include/ruby-2.5.0/ruby/encoding.h"
- textual header "/usr/include/ruby-2.5.0/ruby/intern.h"
- textual header "/usr/include/ruby-2.5.0/ruby/io.h"
- textual header "/usr/include/ruby-2.5.0/ruby/missing.h"
- textual header "/usr/include/ruby-2.5.0/ruby/onigmo.h"
- textual header "/usr/include/ruby-2.5.0/ruby/oniguruma.h"
- textual header "/usr/include/ruby-2.5.0/ruby/re.h"
- textual header "/usr/include/ruby-2.5.0/ruby/regex.h"
- textual header "/usr/include/ruby-2.5.0/ruby/ruby.h"
- textual header "/usr/include/ruby-2.5.0/ruby/st.h"
- textual header "/usr/include/ruby-2.5.0/ruby/subst.h"
- textual header "/usr/include/ruby-2.5.0/ruby/thread.h"
- textual header "/usr/include/ruby-2.5.0/ruby/thread_native.h"
- textual header "/usr/include/ruby-2.5.0/ruby/util.h"
- textual header "/usr/include/ruby-2.5.0/ruby/version.h"
- textual header "/usr/include/ruby-2.5.0/ruby/vm.h"
- textual header "/usr/include/sched.h"
- textual header "/usr/include/scsi/cxlflash_ioctl.h"
- textual header "/usr/include/scsi/fc/fc_els.h"
- textual header "/usr/include/scsi/fc/fc_fs.h"
- textual header "/usr/include/scsi/fc/fc_gs.h"
- textual header "/usr/include/scsi/fc/fc_ns.h"
- textual header "/usr/include/scsi/scsi.h"
- textual header "/usr/include/scsi/scsi_bsg_fc.h"
- textual header "/usr/include/scsi/scsi_ioctl.h"
- textual header "/usr/include/scsi/scsi_netlink.h"
- textual header "/usr/include/scsi/scsi_netlink_fc.h"
- textual header "/usr/include/scsi/sg.h"
- textual header "/usr/include/search.h"
- textual header "/usr/include/semaphore.h"
- textual header "/usr/include/setjmp.h"
- textual header "/usr/include/sgtty.h"
- textual header "/usr/include/shadow.h"
- textual header "/usr/include/signal.h"
- textual header "/usr/include/sound/asequencer.h"
- textual header "/usr/include/sound/asoc.h"
- textual header "/usr/include/sound/asound.h"
- textual header "/usr/include/sound/asound_fm.h"
- textual header "/usr/include/sound/compress_offload.h"
- textual header "/usr/include/sound/compress_params.h"
- textual header "/usr/include/sound/emu10k1.h"
- textual header "/usr/include/sound/firewire.h"
- textual header "/usr/include/sound/hdsp.h"
- textual header "/usr/include/sound/hdspm.h"
- textual header "/usr/include/sound/sb16_csp.h"
- textual header "/usr/include/sound/sfnt_info.h"
- textual header "/usr/include/sound/snd_sst_tokens.h"
- textual header "/usr/include/sound/tlv.h"
- textual header "/usr/include/sound/usb_stream.h"
- textual header "/usr/include/spawn.h"
- textual header "/usr/include/stab.h"
- textual header "/usr/include/stdc-predef.h"
- textual header "/usr/include/stdint.h"
- textual header "/usr/include/stdio.h"
- textual header "/usr/include/stdio_ext.h"
- textual header "/usr/include/stdlib.h"
- textual header "/usr/include/string.h"
- textual header "/usr/include/strings.h"
- textual header "/usr/include/stropts.h"
- textual header "/usr/include/syscall.h"
- textual header "/usr/include/sysexits.h"
- textual header "/usr/include/syslog.h"
- textual header "/usr/include/tar.h"
- textual header "/usr/include/termio.h"
- textual header "/usr/include/termios.h"
- textual header "/usr/include/tgmath.h"
- textual header "/usr/include/thread_db.h"
- textual header "/usr/include/time.h"
- textual header "/usr/include/ttyent.h"
- textual header "/usr/include/uchar.h"
- textual header "/usr/include/ucontext.h"
- textual header "/usr/include/ulimit.h"
- textual header "/usr/include/unistd.h"
- textual header "/usr/include/ustat.h"
- textual header "/usr/include/utime.h"
- textual header "/usr/include/utmp.h"
- textual header "/usr/include/utmpx.h"
- textual header "/usr/include/uuid/uuid.h"
- textual header "/usr/include/values.h"
- textual header "/usr/include/video/edid.h"
- textual header "/usr/include/video/sisfb.h"
- textual header "/usr/include/video/uvesafb.h"
- textual header "/usr/include/wait.h"
- textual header "/usr/include/wchar.h"
- textual header "/usr/include/wctype.h"
- textual header "/usr/include/wordexp.h"
- textual header "/usr/include/x86_64-linux-gnu/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/auxvec.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/boot.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bootparam.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/bpf_perf_event.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/byteorder.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/e820.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hw_breakpoint.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hwcap2.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/hyperv.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ipcbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ist.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_para.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/kvm_perf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ldt.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mce.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msgbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/msr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/mtrr.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/param.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/perf_regs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/posix_types_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/processor-flags.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace-abi.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sembuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/setup.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/shmbuf.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sigcontext32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/siginfo.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/sockios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/svm.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/swab.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termbits.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/types.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_64.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/unistd_x32.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vmx.h"
- textual header "/usr/include/x86_64-linux-gnu/asm/vsyscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/_G_config.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/a.out.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/byteswap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cmathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/confname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/cpu-set.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dirent.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/dlfcn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/elfclass.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/endian.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/environments.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/error.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fcntl2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenv.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fenvinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn-common.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/floatn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-fast.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/fp-logb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_core.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/getopt_posix.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/hwcap.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/in.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/initspin.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctl-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ioctls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ipctypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/iscanonical.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/link.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/local_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/locale.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/long-double.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-finite.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/math-vector.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathcalls.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathdef.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mathinline.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-linux.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/monetary-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/mqueue2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/msq.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/netdb.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/param.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/poll2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/posix_opt.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/printf-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ptrace-shared.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sched.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/select2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/semaphore.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/setjmp2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigaction.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigcontext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum-generic.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/signum.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sigthread.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/socket_type.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ss_flags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stab.def"
- textual header "/usr/include/x86_64-linux-gnu/bits/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stdlib.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/string_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/strings_fortified.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog-path.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/time.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clock_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/locale_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/res_state.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/stack_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_rusage.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/time_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/timer_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/types/wint_t.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/typesizes.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uintn-identity.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio-ext.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/uio_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmp.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utmpx.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitflags.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/waitstatus.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar-ldbl.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wchar2.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/wordsize.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h"
- textual header "/usr/include/x86_64-linux-gnu/bits/xtitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7/ext/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/expat_config.h"
- textual header "/usr/include/x86_64-linux-gnu/fpu_control.h"
- textual header "/usr/include/x86_64-linux-gnu/gmp.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/lib-names.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/libc-version.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h"
- textual header "/usr/include/x86_64-linux-gnu/gnu/stubs.h"
- textual header "/usr/include/x86_64-linux-gnu/ieee754.h"
- textual header "/usr/include/x86_64-linux-gnu/python2.7/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/python3.7m/pyconfig.h"
- textual header "/usr/include/x86_64-linux-gnu/ruby-2.5.0/ruby/config.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/acct.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/auxv.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/bitypes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/cdefs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/debugreg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/dir.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/elf.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/epoll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/errno.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/eventfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fanotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fcntl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/file.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/fsuid.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/gmon_out.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/inotify.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/io.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ioctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ipc.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/kd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/klog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mman.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mount.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/msg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/mtio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/param.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/pci.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/perm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/personality.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/poll.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/prctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/procfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/profil.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ptrace.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/queue.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/quota.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/random.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/raw.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reboot.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/reg.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/resource.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/select.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sem.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sendfile.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/shm.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signal.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/signalfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socket.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/socketvar.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/soundcard.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/statvfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/stropts.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/swap.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syscall.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysctl.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysinfo.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/syslog.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/sysmacros.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/termios.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/time.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timeb.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timerfd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/times.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/timex.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttychars.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ttydefaults.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/types.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ucontext.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/uio.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/un.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/unistd.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/user.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/ustat.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/utsname.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vfs.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vlimit.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vm86.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vt.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/vtimes.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/wait.h"
- textual header "/usr/include/x86_64-linux-gnu/sys/xattr.h"
- textual header "/usr/include/xen/evtchn.h"
- textual header "/usr/include/xen/gntalloc.h"
- textual header "/usr/include/xen/gntdev.h"
- textual header "/usr/include/xen/privcmd.h"
- textual header "/usr/include/zconf.h"
- textual header "/usr/include/zlib.h"
- textual header "/usr/local/lib/clang/12.0.0/share/asan_blacklist.txt"
- textual header "/usr/local/lib/clang/12.0.0/share/msan_blacklist.txt"
- textual header "/usr/include/c++/7.5.0/algorithm"
- textual header "/usr/include/c++/7.5.0/any"
- textual header "/usr/include/c++/7.5.0/array"
- textual header "/usr/include/c++/7.5.0/atomic"
- textual header "/usr/include/c++/7.5.0/backward/auto_ptr.h"
- textual header "/usr/include/c++/7.5.0/backward/backward_warning.h"
- textual header "/usr/include/c++/7.5.0/backward/binders.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_fun.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_map"
- textual header "/usr/include/c++/7.5.0/backward/hash_set"
- textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
- textual header "/usr/include/c++/7.5.0/backward/strstream"
- textual header "/usr/include/c++/7.5.0/bits/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/allocated_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_base.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_futex.h"
- textual header "/usr/include/c++/7.5.0/bits/atomic_lockfree_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_ios.tcc"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.h"
- textual header "/usr/include/c++/7.5.0/bits/basic_string.tcc"
- textual header "/usr/include/c++/7.5.0/bits/boost_concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/c++0x_warning.h"
- textual header "/usr/include/c++/7.5.0/bits/char_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/codecvt.h"
- textual header "/usr/include/c++/7.5.0/bits/concept_check.h"
- textual header "/usr/include/c++/7.5.0/bits/cpp_type_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_forced.h"
- textual header "/usr/include/c++/7.5.0/bits/cxxabi_init_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/deque.tcc"
- textual header "/usr/include/c++/7.5.0/bits/enable_special_members.h"
- textual header "/usr/include/c++/7.5.0/bits/exception.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_defines.h"
- textual header "/usr/include/c++/7.5.0/bits/exception_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.h"
- textual header "/usr/include/c++/7.5.0/bits/forward_list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/fstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/functexcept.h"
- textual header "/usr/include/c++/7.5.0/bits/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice.h"
- textual header "/usr/include/c++/7.5.0/bits/gslice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/hash_bytes.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable.h"
- textual header "/usr/include/c++/7.5.0/bits/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/bits/indirect_array.h"
- textual header "/usr/include/c++/7.5.0/bits/invoke.h"
- textual header "/usr/include/c++/7.5.0/bits/ios_base.h"
- textual header "/usr/include/c++/7.5.0/bits/istream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/list.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_classes.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_conv.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets.tcc"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.h"
- textual header "/usr/include/c++/7.5.0/bits/locale_facets_nonio.tcc"
- textual header "/usr/include/c++/7.5.0/bits/localefwd.h"
- textual header "/usr/include/c++/7.5.0/bits/mask_array.h"
- textual header "/usr/include/c++/7.5.0/bits/memoryfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/move.h"
- textual header "/usr/include/c++/7.5.0/bits/nested_exception.h"
- textual header "/usr/include/c++/7.5.0/bits/node_handle.h"
- textual header "/usr/include/c++/7.5.0/bits/ostream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/ostream_insert.h"
- textual header "/usr/include/c++/7.5.0/bits/parse_numbers.h"
- textual header "/usr/include/c++/7.5.0/bits/postypes.h"
- textual header "/usr/include/c++/7.5.0/bits/predefined_ops.h"
- textual header "/usr/include/c++/7.5.0/bits/ptr_traits.h"
- textual header "/usr/include/c++/7.5.0/bits/quoted_string.h"
- textual header "/usr/include/c++/7.5.0/bits/random.h"
- textual header "/usr/include/c++/7.5.0/bits/random.tcc"
- textual header "/usr/include/c++/7.5.0/bits/range_access.h"
- textual header "/usr/include/c++/7.5.0/bits/refwrap.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.h"
- textual header "/usr/include/c++/7.5.0/bits/regex.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_automaton.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_compiler.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_constants.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_error.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_executor.tcc"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.h"
- textual header "/usr/include/c++/7.5.0/bits/regex_scanner.tcc"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_atomic.h"
- textual header "/usr/include/c++/7.5.0/bits/shared_ptr_base.h"
- textual header "/usr/include/c++/7.5.0/bits/slice_array.h"
- textual header "/usr/include/c++/7.5.0/bits/specfun.h"
- textual header "/usr/include/c++/7.5.0/bits/sstream.tcc"
- textual header "/usr/include/c++/7.5.0/bits/std_abs.h"
- textual header "/usr/include/c++/7.5.0/bits/std_function.h"
- textual header "/usr/include/c++/7.5.0/bits/std_mutex.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algo.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_algobase.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_bvector.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_construct.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_deque.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_function.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_heap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_funcs.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_iterator_base_types.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_list.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_map.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multimap.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_multiset.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_numeric.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_pair.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_queue.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_raw_storage_iter.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_relops.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_set.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_stack.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tempbuf.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_tree.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_uninitialized.h"
- textual header "/usr/include/c++/7.5.0/bits/stl_vector.h"
- textual header "/usr/include/c++/7.5.0/bits/stream_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/streambuf.tcc"
- textual header "/usr/include/c++/7.5.0/bits/streambuf_iterator.h"
- textual header "/usr/include/c++/7.5.0/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/bits/stringfwd.h"
- textual header "/usr/include/c++/7.5.0/bits/uniform_int_dist.h"
- textual header "/usr/include/c++/7.5.0/bits/unique_ptr.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/bits/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/bits/uses_allocator.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_after.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.h"
- textual header "/usr/include/c++/7.5.0/bits/valarray_array.tcc"
- textual header "/usr/include/c++/7.5.0/bits/valarray_before.h"
- textual header "/usr/include/c++/7.5.0/bits/vector.tcc"
- textual header "/usr/include/c++/7.5.0/bitset"
- textual header "/usr/include/c++/7.5.0/cassert"
- textual header "/usr/include/c++/7.5.0/ccomplex"
- textual header "/usr/include/c++/7.5.0/cctype"
- textual header "/usr/include/c++/7.5.0/cerrno"
- textual header "/usr/include/c++/7.5.0/cfenv"
- textual header "/usr/include/c++/7.5.0/cfloat"
- textual header "/usr/include/c++/7.5.0/chrono"
- textual header "/usr/include/c++/7.5.0/cinttypes"
- textual header "/usr/include/c++/7.5.0/ciso646"
- textual header "/usr/include/c++/7.5.0/climits"
- textual header "/usr/include/c++/7.5.0/clocale"
- textual header "/usr/include/c++/7.5.0/cmath"
- textual header "/usr/include/c++/7.5.0/codecvt"
- textual header "/usr/include/c++/7.5.0/complex"
- textual header "/usr/include/c++/7.5.0/complex.h"
- textual header "/usr/include/c++/7.5.0/condition_variable"
- textual header "/usr/include/c++/7.5.0/csetjmp"
- textual header "/usr/include/c++/7.5.0/csignal"
- textual header "/usr/include/c++/7.5.0/cstdalign"
- textual header "/usr/include/c++/7.5.0/cstdarg"
- textual header "/usr/include/c++/7.5.0/cstdbool"
- textual header "/usr/include/c++/7.5.0/cstddef"
- textual header "/usr/include/c++/7.5.0/cstdint"
- textual header "/usr/include/c++/7.5.0/cstdio"
- textual header "/usr/include/c++/7.5.0/cstdlib"
- textual header "/usr/include/c++/7.5.0/cstring"
- textual header "/usr/include/c++/7.5.0/ctgmath"
- textual header "/usr/include/c++/7.5.0/ctime"
- textual header "/usr/include/c++/7.5.0/cuchar"
- textual header "/usr/include/c++/7.5.0/cwchar"
- textual header "/usr/include/c++/7.5.0/cwctype"
- textual header "/usr/include/c++/7.5.0/cxxabi.h"
- textual header "/usr/include/c++/7.5.0/debug/array"
- textual header "/usr/include/c++/7.5.0/debug/assertions.h"
- textual header "/usr/include/c++/7.5.0/debug/bitset"
- textual header "/usr/include/c++/7.5.0/debug/debug.h"
- textual header "/usr/include/c++/7.5.0/debug/deque"
- textual header "/usr/include/c++/7.5.0/debug/formatter.h"
- textual header "/usr/include/c++/7.5.0/debug/forward_list"
- textual header "/usr/include/c++/7.5.0/debug/functions.h"
- textual header "/usr/include/c++/7.5.0/debug/helper_functions.h"
- textual header "/usr/include/c++/7.5.0/debug/list"
- textual header "/usr/include/c++/7.5.0/debug/macros.h"
- textual header "/usr/include/c++/7.5.0/debug/map"
- textual header "/usr/include/c++/7.5.0/debug/map.h"
- textual header "/usr/include/c++/7.5.0/debug/multimap.h"
- textual header "/usr/include/c++/7.5.0/debug/multiset.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_local_iterator.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_sequence.tcc"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_base.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.h"
- textual header "/usr/include/c++/7.5.0/debug/safe_unordered_container.tcc"
- textual header "/usr/include/c++/7.5.0/debug/set"
- textual header "/usr/include/c++/7.5.0/debug/set.h"
- textual header "/usr/include/c++/7.5.0/debug/stl_iterator.h"
- textual header "/usr/include/c++/7.5.0/debug/string"
- textual header "/usr/include/c++/7.5.0/debug/unordered_map"
- textual header "/usr/include/c++/7.5.0/debug/unordered_set"
- textual header "/usr/include/c++/7.5.0/debug/vector"
- textual header "/usr/include/c++/7.5.0/decimal/decimal"
- textual header "/usr/include/c++/7.5.0/decimal/decimal.h"
- textual header "/usr/include/c++/7.5.0/deque"
- textual header "/usr/include/c++/7.5.0/exception"
- textual header "/usr/include/c++/7.5.0/experimental/algorithm"
- textual header "/usr/include/c++/7.5.0/experimental/any"
- textual header "/usr/include/c++/7.5.0/experimental/array"
- textual header "/usr/include/c++/7.5.0/experimental/bits/erase_if.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_dir.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_fwd.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_ops.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/fs_path.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/lfts_config.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/experimental/bits/string_view.tcc"
- textual header "/usr/include/c++/7.5.0/experimental/chrono"
- textual header "/usr/include/c++/7.5.0/experimental/deque"
- textual header "/usr/include/c++/7.5.0/experimental/filesystem"
- textual header "/usr/include/c++/7.5.0/experimental/forward_list"
- textual header "/usr/include/c++/7.5.0/experimental/functional"
- textual header "/usr/include/c++/7.5.0/experimental/iterator"
- textual header "/usr/include/c++/7.5.0/experimental/list"
- textual header "/usr/include/c++/7.5.0/experimental/map"
- textual header "/usr/include/c++/7.5.0/experimental/memory"
- textual header "/usr/include/c++/7.5.0/experimental/memory_resource"
- textual header "/usr/include/c++/7.5.0/experimental/numeric"
- textual header "/usr/include/c++/7.5.0/experimental/optional"
- textual header "/usr/include/c++/7.5.0/experimental/propagate_const"
- textual header "/usr/include/c++/7.5.0/experimental/random"
- textual header "/usr/include/c++/7.5.0/experimental/ratio"
- textual header "/usr/include/c++/7.5.0/experimental/regex"
- textual header "/usr/include/c++/7.5.0/experimental/set"
- textual header "/usr/include/c++/7.5.0/experimental/source_location"
- textual header "/usr/include/c++/7.5.0/experimental/string"
- textual header "/usr/include/c++/7.5.0/experimental/string_view"
- textual header "/usr/include/c++/7.5.0/experimental/system_error"
- textual header "/usr/include/c++/7.5.0/experimental/tuple"
- textual header "/usr/include/c++/7.5.0/experimental/type_traits"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_map"
- textual header "/usr/include/c++/7.5.0/experimental/unordered_set"
- textual header "/usr/include/c++/7.5.0/experimental/utility"
- textual header "/usr/include/c++/7.5.0/experimental/vector"
- textual header "/usr/include/c++/7.5.0/ext/algorithm"
- textual header "/usr/include/c++/7.5.0/ext/aligned_buffer.h"
- textual header "/usr/include/c++/7.5.0/ext/alloc_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/array_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/atomicity.h"
- textual header "/usr/include/c++/7.5.0/ext/bitmap_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/cast.h"
- textual header "/usr/include/c++/7.5.0/ext/cmath"
- textual header "/usr/include/c++/7.5.0/ext/codecvt_specializations.h"
- textual header "/usr/include/c++/7.5.0/ext/concurrence.h"
- textual header "/usr/include/c++/7.5.0/ext/debug_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/enc_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/extptr_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/functional"
- textual header "/usr/include/c++/7.5.0/ext/hash_map"
- textual header "/usr/include/c++/7.5.0/ext/hash_set"
- textual header "/usr/include/c++/7.5.0/ext/iterator"
- textual header "/usr/include/c++/7.5.0/ext/malloc_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/memory"
- textual header "/usr/include/c++/7.5.0/ext/mt_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/new_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/numeric"
- textual header "/usr/include/c++/7.5.0/ext/numeric_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/assoc_container.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/branch_policy/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/cond_dealtor.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/container_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/debug_map_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/node.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/splay_tree_/traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/standard_policies.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/tree_trace_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/type_utils.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/types_traits.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/exception.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/hash_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/list_update_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/priority_queue.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tag_and_trait.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/tree_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pb_ds/trie_policy.hpp"
- textual header "/usr/include/c++/7.5.0/ext/pod_char_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/pointer.h"
- textual header "/usr/include/c++/7.5.0/ext/pool_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/random"
- textual header "/usr/include/c++/7.5.0/ext/random.tcc"
- textual header "/usr/include/c++/7.5.0/ext/rb_tree"
- textual header "/usr/include/c++/7.5.0/ext/rc_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/rope"
- textual header "/usr/include/c++/7.5.0/ext/ropeimpl.h"
- textual header "/usr/include/c++/7.5.0/ext/slist"
- textual header "/usr/include/c++/7.5.0/ext/sso_string_base.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/stdio_sync_filebuf.h"
- textual header "/usr/include/c++/7.5.0/ext/string_conversions.h"
- textual header "/usr/include/c++/7.5.0/ext/throw_allocator.h"
- textual header "/usr/include/c++/7.5.0/ext/type_traits.h"
- textual header "/usr/include/c++/7.5.0/ext/typelist.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring.tcc"
- textual header "/usr/include/c++/7.5.0/ext/vstring_fwd.h"
- textual header "/usr/include/c++/7.5.0/ext/vstring_util.h"
- textual header "/usr/include/c++/7.5.0/fenv.h"
- textual header "/usr/include/c++/7.5.0/forward_list"
- textual header "/usr/include/c++/7.5.0/fstream"
- textual header "/usr/include/c++/7.5.0/functional"
- textual header "/usr/include/c++/7.5.0/future"
- textual header "/usr/include/c++/7.5.0/initializer_list"
- textual header "/usr/include/c++/7.5.0/iomanip"
- textual header "/usr/include/c++/7.5.0/ios"
- textual header "/usr/include/c++/7.5.0/iosfwd"
- textual header "/usr/include/c++/7.5.0/iostream"
- textual header "/usr/include/c++/7.5.0/istream"
- textual header "/usr/include/c++/7.5.0/iterator"
- textual header "/usr/include/c++/7.5.0/limits"
- textual header "/usr/include/c++/7.5.0/list"
- textual header "/usr/include/c++/7.5.0/locale"
- textual header "/usr/include/c++/7.5.0/map"
- textual header "/usr/include/c++/7.5.0/math.h"
- textual header "/usr/include/c++/7.5.0/memory"
- textual header "/usr/include/c++/7.5.0/mutex"
- textual header "/usr/include/c++/7.5.0/new"
- textual header "/usr/include/c++/7.5.0/numeric"
- textual header "/usr/include/c++/7.5.0/optional"
- textual header "/usr/include/c++/7.5.0/ostream"
- textual header "/usr/include/c++/7.5.0/parallel/algo.h"
- textual header "/usr/include/c++/7.5.0/parallel/algobase.h"
- textual header "/usr/include/c++/7.5.0/parallel/algorithm"
- textual header "/usr/include/c++/7.5.0/parallel/algorithmfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/balanced_quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/base.h"
- textual header "/usr/include/c++/7.5.0/parallel/basic_iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/checkers.h"
- textual header "/usr/include/c++/7.5.0/parallel/compatibility.h"
- textual header "/usr/include/c++/7.5.0/parallel/compiletime_settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/equally_split.h"
- textual header "/usr/include/c++/7.5.0/parallel/features.h"
- textual header "/usr/include/c++/7.5.0/parallel/find.h"
- textual header "/usr/include/c++/7.5.0/parallel/find_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each.h"
- textual header "/usr/include/c++/7.5.0/parallel/for_each_selectors.h"
- textual header "/usr/include/c++/7.5.0/parallel/iterator.h"
- textual header "/usr/include/c++/7.5.0/parallel/list_partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/losertree.h"
- textual header "/usr/include/c++/7.5.0/parallel/merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiseq_selection.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_merge.h"
- textual header "/usr/include/c++/7.5.0/parallel/multiway_mergesort.h"
- textual header "/usr/include/c++/7.5.0/parallel/numeric"
- textual header "/usr/include/c++/7.5.0/parallel/numericfwd.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/omp_loop_static.h"
- textual header "/usr/include/c++/7.5.0/parallel/par_loop.h"
- textual header "/usr/include/c++/7.5.0/parallel/parallel.h"
- textual header "/usr/include/c++/7.5.0/parallel/partial_sum.h"
- textual header "/usr/include/c++/7.5.0/parallel/partition.h"
- textual header "/usr/include/c++/7.5.0/parallel/queue.h"
- textual header "/usr/include/c++/7.5.0/parallel/quicksort.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_number.h"
- textual header "/usr/include/c++/7.5.0/parallel/random_shuffle.h"
- textual header "/usr/include/c++/7.5.0/parallel/search.h"
- textual header "/usr/include/c++/7.5.0/parallel/set_operations.h"
- textual header "/usr/include/c++/7.5.0/parallel/settings.h"
- textual header "/usr/include/c++/7.5.0/parallel/sort.h"
- textual header "/usr/include/c++/7.5.0/parallel/tags.h"
- textual header "/usr/include/c++/7.5.0/parallel/types.h"
- textual header "/usr/include/c++/7.5.0/parallel/unique_copy.h"
- textual header "/usr/include/c++/7.5.0/parallel/workstealing.h"
- textual header "/usr/include/c++/7.5.0/profile/array"
- textual header "/usr/include/c++/7.5.0/profile/base.h"
- textual header "/usr/include/c++/7.5.0/profile/bitset"
- textual header "/usr/include/c++/7.5.0/profile/deque"
- textual header "/usr/include/c++/7.5.0/profile/forward_list"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_algos.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_container_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hash_func.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_hashtable_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_slist.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_list_to_vector.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_map_to_unordered_map.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_node.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_state.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_trace.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_size.h"
- textual header "/usr/include/c++/7.5.0/profile/impl/profiler_vector_to_list.h"
- textual header "/usr/include/c++/7.5.0/profile/iterator_tracker.h"
- textual header "/usr/include/c++/7.5.0/profile/list"
- textual header "/usr/include/c++/7.5.0/profile/map"
- textual header "/usr/include/c++/7.5.0/profile/map.h"
- textual header "/usr/include/c++/7.5.0/profile/multimap.h"
- textual header "/usr/include/c++/7.5.0/profile/multiset.h"
- textual header "/usr/include/c++/7.5.0/profile/ordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/set"
- textual header "/usr/include/c++/7.5.0/profile/set.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_base.h"
- textual header "/usr/include/c++/7.5.0/profile/unordered_map"
- textual header "/usr/include/c++/7.5.0/profile/unordered_set"
- textual header "/usr/include/c++/7.5.0/profile/vector"
- textual header "/usr/include/c++/7.5.0/queue"
- textual header "/usr/include/c++/7.5.0/random"
- textual header "/usr/include/c++/7.5.0/ratio"
- textual header "/usr/include/c++/7.5.0/regex"
- textual header "/usr/include/c++/7.5.0/scoped_allocator"
- textual header "/usr/include/c++/7.5.0/set"
- textual header "/usr/include/c++/7.5.0/shared_mutex"
- textual header "/usr/include/c++/7.5.0/sstream"
- textual header "/usr/include/c++/7.5.0/stack"
- textual header "/usr/include/c++/7.5.0/stdexcept"
- textual header "/usr/include/c++/7.5.0/stdlib.h"
- textual header "/usr/include/c++/7.5.0/streambuf"
- textual header "/usr/include/c++/7.5.0/string"
- textual header "/usr/include/c++/7.5.0/string_view"
- textual header "/usr/include/c++/7.5.0/system_error"
- textual header "/usr/include/c++/7.5.0/tgmath.h"
- textual header "/usr/include/c++/7.5.0/thread"
- textual header "/usr/include/c++/7.5.0/tr1/array"
- textual header "/usr/include/c++/7.5.0/tr1/bessel_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/beta_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/ccomplex"
- textual header "/usr/include/c++/7.5.0/tr1/cctype"
- textual header "/usr/include/c++/7.5.0/tr1/cfenv"
- textual header "/usr/include/c++/7.5.0/tr1/cfloat"
- textual header "/usr/include/c++/7.5.0/tr1/cinttypes"
- textual header "/usr/include/c++/7.5.0/tr1/climits"
- textual header "/usr/include/c++/7.5.0/tr1/cmath"
- textual header "/usr/include/c++/7.5.0/tr1/complex"
- textual header "/usr/include/c++/7.5.0/tr1/complex.h"
- textual header "/usr/include/c++/7.5.0/tr1/cstdarg"
- textual header "/usr/include/c++/7.5.0/tr1/cstdbool"
- textual header "/usr/include/c++/7.5.0/tr1/cstdint"
- textual header "/usr/include/c++/7.5.0/tr1/cstdio"
- textual header "/usr/include/c++/7.5.0/tr1/cstdlib"
- textual header "/usr/include/c++/7.5.0/tr1/ctgmath"
- textual header "/usr/include/c++/7.5.0/tr1/ctime"
- textual header "/usr/include/c++/7.5.0/tr1/ctype.h"
- textual header "/usr/include/c++/7.5.0/tr1/cwchar"
- textual header "/usr/include/c++/7.5.0/tr1/cwctype"
- textual header "/usr/include/c++/7.5.0/tr1/ell_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/exp_integral.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/fenv.h"
- textual header "/usr/include/c++/7.5.0/tr1/float.h"
- textual header "/usr/include/c++/7.5.0/tr1/functional"
- textual header "/usr/include/c++/7.5.0/tr1/functional_hash.h"
- textual header "/usr/include/c++/7.5.0/tr1/gamma.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable.h"
- textual header "/usr/include/c++/7.5.0/tr1/hashtable_policy.h"
- textual header "/usr/include/c++/7.5.0/tr1/hypergeometric.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/inttypes.h"
- textual header "/usr/include/c++/7.5.0/tr1/legendre_function.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/limits.h"
- textual header "/usr/include/c++/7.5.0/tr1/math.h"
- textual header "/usr/include/c++/7.5.0/tr1/memory"
- textual header "/usr/include/c++/7.5.0/tr1/modified_bessel_func.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_hermite.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/poly_laguerre.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/random"
- textual header "/usr/include/c++/7.5.0/tr1/random.h"
- textual header "/usr/include/c++/7.5.0/tr1/random.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/regex"
- textual header "/usr/include/c++/7.5.0/tr1/riemann_zeta.tcc"
- textual header "/usr/include/c++/7.5.0/tr1/shared_ptr.h"
- textual header "/usr/include/c++/7.5.0/tr1/special_function_util.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdarg.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdbool.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdint.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdio.h"
- textual header "/usr/include/c++/7.5.0/tr1/stdlib.h"
- textual header "/usr/include/c++/7.5.0/tr1/tgmath.h"
- textual header "/usr/include/c++/7.5.0/tr1/tuple"
- textual header "/usr/include/c++/7.5.0/tr1/type_traits"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_map.h"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set"
- textual header "/usr/include/c++/7.5.0/tr1/unordered_set.h"
- textual header "/usr/include/c++/7.5.0/tr1/utility"
- textual header "/usr/include/c++/7.5.0/tr1/wchar.h"
- textual header "/usr/include/c++/7.5.0/tr1/wctype.h"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set"
- textual header "/usr/include/c++/7.5.0/tr2/bool_set.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset"
- textual header "/usr/include/c++/7.5.0/tr2/dynamic_bitset.tcc"
- textual header "/usr/include/c++/7.5.0/tr2/ratio"
- textual header "/usr/include/c++/7.5.0/tr2/type_traits"
- textual header "/usr/include/c++/7.5.0/tuple"
- textual header "/usr/include/c++/7.5.0/type_traits"
- textual header "/usr/include/c++/7.5.0/typeindex"
- textual header "/usr/include/c++/7.5.0/typeinfo"
- textual header "/usr/include/c++/7.5.0/unordered_map"
- textual header "/usr/include/c++/7.5.0/unordered_set"
- textual header "/usr/include/c++/7.5.0/utility"
- textual header "/usr/include/c++/7.5.0/valarray"
- textual header "/usr/include/c++/7.5.0/variant"
- textual header "/usr/include/c++/7.5.0/vector"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/atomic_word.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/basic_file.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++allocator.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++config.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++io.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/c++locale.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cpu_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_base.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/ctype_inline.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/cxxabi_tweaks.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/error_constants.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/extc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-posix.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-single.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/gthr.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/messages_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/opt_random.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/os_defines.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdc++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/stdtr1c++.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/bits/time_members.h"
- textual header "/usr/include/x86_64-linux-gnu/c++/7.5.0/ext/opt_random.h"
- textual header "/usr/include/c++/7.5.0/backward/auto_ptr.h"
- textual header "/usr/include/c++/7.5.0/backward/backward_warning.h"
- textual header "/usr/include/c++/7.5.0/backward/binders.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_fun.h"
- textual header "/usr/include/c++/7.5.0/backward/hash_map"
- textual header "/usr/include/c++/7.5.0/backward/hash_set"
- textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
- textual header "/usr/include/c++/7.5.0/backward/strstream"
-} \ No newline at end of file
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config/BUILD b/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config/BUILD
deleted file mode 100644
index 1da3ee121..000000000
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/config/BUILD
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is auto-generated by an rbe_autoconfig repository rule
-# and should not be modified directly.
-# See @bazel_toolchains//rules:rbe_repo.bzl
-
-package(default_visibility = ["//visibility:public"])
-
-toolchain(
- name = "cc-toolchain",
- exec_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//tools/cpp:clang",
- ],
- target_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
- ],
- toolchain = "//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc:cc-compiler-k8",
- toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
-)
-
-platform(
- name = "platform",
- constraint_values = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//tools/cpp:clang",
- ],
- exec_properties = {"container-image": "docker://gcr.io/kythe-repo/kythe-builder@sha256:49a7a2a52ac943571dbf7c49e888c74eebe1e56ac28badab746e49841fadd3a3", "OSFamily": "Linux"},
-)
diff --git a/tools/platforms/configs/empty-versions.bzl b/tools/platforms/configs/empty-versions.bzl
deleted file mode 100644
index 0e0f44bc0..000000000
--- a/tools/platforms/configs/empty-versions.bzl
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file, do not modify by hand
-"""Definitions to be used in rbe_repo attr of an rbe_autoconf rule """
-_TOOLCHAIN_CONFIG_SPECS = []
-_BAZEL_TO_CONFIG_SPEC_NAMES = {}
-LATEST = ""
-CONTAINER_TO_CONFIG_SPEC_NAMES = {}
-_DEFAULT_TOOLCHAIN_CONFIG_SPEC = ""
-TOOLCHAIN_CONFIG_AUTOGEN_SPEC = struct(
- bazel_to_config_spec_names_map = _BAZEL_TO_CONFIG_SPEC_NAMES,
- container_to_config_spec_names_map = CONTAINER_TO_CONFIG_SPEC_NAMES,
- default_toolchain_config_spec = _DEFAULT_TOOLCHAIN_CONFIG_SPEC,
- latest_container = LATEST,
- toolchain_config_specs = _TOOLCHAIN_CONFIG_SPECS,
-)
diff --git a/tools/platforms/configs/rbe_default/LICENSE b/tools/platforms/configs/rbe_default/LICENSE
new file mode 100755
index 000000000..f0a1f59a3
--- /dev/null
+++ b/tools/platforms/configs/rbe_default/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2021 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. \ No newline at end of file
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/BUILD b/tools/platforms/configs/rbe_default/cc/BUILD
index 8411d4907..66de3cf67 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/BUILD
+++ b/tools/platforms/configs/rbe_default/cc/BUILD
@@ -14,12 +14,12 @@
# This becomes the BUILD file for @local_config_cc// under non-BSD unixes.
-package(default_visibility = ["//visibility:public"])
-
load(":cc_toolchain_config.bzl", "cc_toolchain_config")
load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
+package(default_visibility = ["//visibility:public"])
+
licenses(["notice"]) # Apache 2.0
cc_library(
@@ -87,12 +87,13 @@ cc_toolchain_config(
"/usr/local/lib/clang/12.0.0/share",
"/usr/include/c++/7.5.0",
"/usr/include/x86_64-linux-gnu/c++/7.5.0",
- "/usr/include/c++/7.5.0/backward"],
+ "/usr/include/c++/7.5.0/backward",
+ "/usr/local/include/c++/v1"],
tool_paths = {"ar": "/usr/bin/ar",
"ld": "/usr/bin/ld",
"llvm-cov": "/usr/local/bin/llvm-cov",
"cpp": "/usr/bin/cpp",
- "gcc": "/usr/local/bin/clang",
+ "gcc": "/usr/local/bin/clang-12",
"dwp": "/usr/bin/dwp",
"gcov": "/dev/null",
"nm": "/usr/bin/nm",
diff --git a/tools/platforms/configs/rbe_default/cc/WORKSPACE b/tools/platforms/configs/rbe_default/cc/WORKSPACE
new file mode 100644
index 000000000..bc05b4c36
--- /dev/null
+++ b/tools/platforms/configs/rbe_default/cc/WORKSPACE
@@ -0,0 +1,2 @@
+# DO NOT EDIT: automatically generated WORKSPACE file for cc_autoconf rule
+workspace(name = "local_config_cc")
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/armeabi_cc_toolchain_config.bzl b/tools/platforms/configs/rbe_default/cc/armeabi_cc_toolchain_config.bzl
index 94e0720bf..94e0720bf 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/armeabi_cc_toolchain_config.bzl
+++ b/tools/platforms/configs/rbe_default/cc/armeabi_cc_toolchain_config.bzl
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/builtin_include_directory_paths b/tools/platforms/configs/rbe_default/cc/builtin_include_directory_paths
index a09dfbc08..f5f8a4238 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/builtin_include_directory_paths
+++ b/tools/platforms/configs/rbe_default/cc/builtin_include_directory_paths
@@ -1,5 +1,5 @@
This file is generated by cc_configure and contains builtin include directories
-that /usr/local/bin/clang reported. This file is a dependency of every compilation action and
+that /usr/local/bin/clang-12 reported. This file is a dependency of every compilation action and
changes to it will be reflected in the action cache key. When some of these
paths change, Bazel will make sure to rerun the action, even though none of
declared action inputs or the action commandline changes.
@@ -12,3 +12,4 @@ declared action inputs or the action commandline changes.
/usr/include/c++/7.5.0
/usr/include/x86_64-linux-gnu/c++/7.5.0
/usr/include/c++/7.5.0/backward
+/usr/local/include/c++/v1
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/cc_toolchain_config.bzl b/tools/platforms/configs/rbe_default/cc/cc_toolchain_config.bzl
index 5dbaa86ab..261191410 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc/cc_toolchain_config.bzl
+++ b/tools/platforms/configs/rbe_default/cc/cc_toolchain_config.bzl
@@ -386,7 +386,7 @@ def _impl(ctx):
],
flag_groups = [
flag_group(
- flags = ["-gsplit-dwarf"],
+ flags = ["-gsplit-dwarf", "-g"],
expand_if_available = "per_object_debug_info_file",
),
],
@@ -669,6 +669,32 @@ def _impl(ctx):
],
)
+ external_include_paths_feature = feature(
+ name = "external_include_paths",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-isystem", "%{external_include_paths}"],
+ iterate_over = "external_include_paths",
+ expand_if_available = "external_include_paths",
+ ),
+ ],
+ ),
+ ],
+ )
+
symbol_counts_feature = feature(
name = "symbol_counts",
flag_sets = [
@@ -1167,6 +1193,7 @@ def _impl(ctx):
preprocessor_defines_feature,
includes_feature,
include_paths_feature,
+ external_include_paths_feature,
fdo_instrument_feature,
cs_fdo_instrument_feature,
cs_fdo_optimize_feature,
@@ -1216,6 +1243,7 @@ def _impl(ctx):
coverage_feature,
default_compile_flags_feature,
default_link_flags_feature,
+ user_link_flags_feature,
fdo_optimize_feature,
supports_dynamic_linker_feature,
dbg_feature,
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_wrapper.sh b/tools/platforms/configs/rbe_default/cc/cc_wrapper.sh
index 42a751dcc..e1b9258a2 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/cc/cc_wrapper.sh
+++ b/tools/platforms/configs/rbe_default/cc/cc_wrapper.sh
@@ -22,4 +22,4 @@ set -eu
# Call the C++ compiler
-/usr/local/bin/clang "$@"
+/usr/local/bin/clang-12 "$@"
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/module.modulemap b/tools/platforms/configs/rbe_default/cc/module.modulemap
index 5671c2bcb..a276ca2f2 100755..100644
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.0.0/cc/module.modulemap
+++ b/tools/platforms/configs/rbe_default/cc/module.modulemap
@@ -4754,4 +4754,184 @@ module "crosstool" [system] {
textual header "/usr/include/c++/7.5.0/backward/hash_set"
textual header "/usr/include/c++/7.5.0/backward/hashtable.h"
textual header "/usr/include/c++/7.5.0/backward/strstream"
+ textual header "/usr/local/include/c++/v1/__bit_reference"
+ textual header "/usr/local/include/c++/v1/__bsd_locale_defaults.h"
+ textual header "/usr/local/include/c++/v1/__bsd_locale_fallbacks.h"
+ textual header "/usr/local/include/c++/v1/__config"
+ textual header "/usr/local/include/c++/v1/__cxxabi_config.h"
+ textual header "/usr/local/include/c++/v1/__debug"
+ textual header "/usr/local/include/c++/v1/__errc"
+ textual header "/usr/local/include/c++/v1/__functional_03"
+ textual header "/usr/local/include/c++/v1/__functional_base"
+ textual header "/usr/local/include/c++/v1/__functional_base_03"
+ textual header "/usr/local/include/c++/v1/__hash_table"
+ textual header "/usr/local/include/c++/v1/__libcpp_version"
+ textual header "/usr/local/include/c++/v1/__locale"
+ textual header "/usr/local/include/c++/v1/__mutex_base"
+ textual header "/usr/local/include/c++/v1/__node_handle"
+ textual header "/usr/local/include/c++/v1/__nullptr"
+ textual header "/usr/local/include/c++/v1/__split_buffer"
+ textual header "/usr/local/include/c++/v1/__sso_allocator"
+ textual header "/usr/local/include/c++/v1/__std_stream"
+ textual header "/usr/local/include/c++/v1/__string"
+ textual header "/usr/local/include/c++/v1/__threading_support"
+ textual header "/usr/local/include/c++/v1/__tree"
+ textual header "/usr/local/include/c++/v1/__tuple"
+ textual header "/usr/local/include/c++/v1/__undef_macros"
+ textual header "/usr/local/include/c++/v1/algorithm"
+ textual header "/usr/local/include/c++/v1/any"
+ textual header "/usr/local/include/c++/v1/array"
+ textual header "/usr/local/include/c++/v1/atomic"
+ textual header "/usr/local/include/c++/v1/barrier"
+ textual header "/usr/local/include/c++/v1/bit"
+ textual header "/usr/local/include/c++/v1/bitset"
+ textual header "/usr/local/include/c++/v1/cassert"
+ textual header "/usr/local/include/c++/v1/ccomplex"
+ textual header "/usr/local/include/c++/v1/cctype"
+ textual header "/usr/local/include/c++/v1/cerrno"
+ textual header "/usr/local/include/c++/v1/cfenv"
+ textual header "/usr/local/include/c++/v1/cfloat"
+ textual header "/usr/local/include/c++/v1/charconv"
+ textual header "/usr/local/include/c++/v1/chrono"
+ textual header "/usr/local/include/c++/v1/cinttypes"
+ textual header "/usr/local/include/c++/v1/ciso646"
+ textual header "/usr/local/include/c++/v1/climits"
+ textual header "/usr/local/include/c++/v1/clocale"
+ textual header "/usr/local/include/c++/v1/cmath"
+ textual header "/usr/local/include/c++/v1/codecvt"
+ textual header "/usr/local/include/c++/v1/compare"
+ textual header "/usr/local/include/c++/v1/complex"
+ textual header "/usr/local/include/c++/v1/complex.h"
+ textual header "/usr/local/include/c++/v1/concepts"
+ textual header "/usr/local/include/c++/v1/condition_variable"
+ textual header "/usr/local/include/c++/v1/csetjmp"
+ textual header "/usr/local/include/c++/v1/csignal"
+ textual header "/usr/local/include/c++/v1/cstdarg"
+ textual header "/usr/local/include/c++/v1/cstdbool"
+ textual header "/usr/local/include/c++/v1/cstddef"
+ textual header "/usr/local/include/c++/v1/cstdint"
+ textual header "/usr/local/include/c++/v1/cstdio"
+ textual header "/usr/local/include/c++/v1/cstdlib"
+ textual header "/usr/local/include/c++/v1/cstring"
+ textual header "/usr/local/include/c++/v1/ctgmath"
+ textual header "/usr/local/include/c++/v1/ctime"
+ textual header "/usr/local/include/c++/v1/ctype.h"
+ textual header "/usr/local/include/c++/v1/cwchar"
+ textual header "/usr/local/include/c++/v1/cwctype"
+ textual header "/usr/local/include/c++/v1/cxxabi.h"
+ textual header "/usr/local/include/c++/v1/deque"
+ textual header "/usr/local/include/c++/v1/errno.h"
+ textual header "/usr/local/include/c++/v1/exception"
+ textual header "/usr/local/include/c++/v1/execution"
+ textual header "/usr/local/include/c++/v1/experimental/__config"
+ textual header "/usr/local/include/c++/v1/experimental/__memory"
+ textual header "/usr/local/include/c++/v1/experimental/algorithm"
+ textual header "/usr/local/include/c++/v1/experimental/coroutine"
+ textual header "/usr/local/include/c++/v1/experimental/deque"
+ textual header "/usr/local/include/c++/v1/experimental/filesystem"
+ textual header "/usr/local/include/c++/v1/experimental/forward_list"
+ textual header "/usr/local/include/c++/v1/experimental/functional"
+ textual header "/usr/local/include/c++/v1/experimental/iterator"
+ textual header "/usr/local/include/c++/v1/experimental/list"
+ textual header "/usr/local/include/c++/v1/experimental/map"
+ textual header "/usr/local/include/c++/v1/experimental/memory_resource"
+ textual header "/usr/local/include/c++/v1/experimental/propagate_const"
+ textual header "/usr/local/include/c++/v1/experimental/regex"
+ textual header "/usr/local/include/c++/v1/experimental/set"
+ textual header "/usr/local/include/c++/v1/experimental/simd"
+ textual header "/usr/local/include/c++/v1/experimental/string"
+ textual header "/usr/local/include/c++/v1/experimental/type_traits"
+ textual header "/usr/local/include/c++/v1/experimental/unordered_map"
+ textual header "/usr/local/include/c++/v1/experimental/unordered_set"
+ textual header "/usr/local/include/c++/v1/experimental/utility"
+ textual header "/usr/local/include/c++/v1/experimental/vector"
+ textual header "/usr/local/include/c++/v1/ext/__hash"
+ textual header "/usr/local/include/c++/v1/ext/hash_map"
+ textual header "/usr/local/include/c++/v1/ext/hash_set"
+ textual header "/usr/local/include/c++/v1/fenv.h"
+ textual header "/usr/local/include/c++/v1/filesystem"
+ textual header "/usr/local/include/c++/v1/float.h"
+ textual header "/usr/local/include/c++/v1/forward_list"
+ textual header "/usr/local/include/c++/v1/fstream"
+ textual header "/usr/local/include/c++/v1/functional"
+ textual header "/usr/local/include/c++/v1/future"
+ textual header "/usr/local/include/c++/v1/initializer_list"
+ textual header "/usr/local/include/c++/v1/inttypes.h"
+ textual header "/usr/local/include/c++/v1/iomanip"
+ textual header "/usr/local/include/c++/v1/ios"
+ textual header "/usr/local/include/c++/v1/iosfwd"
+ textual header "/usr/local/include/c++/v1/iostream"
+ textual header "/usr/local/include/c++/v1/istream"
+ textual header "/usr/local/include/c++/v1/iterator"
+ textual header "/usr/local/include/c++/v1/latch"
+ textual header "/usr/local/include/c++/v1/limits"
+ textual header "/usr/local/include/c++/v1/limits.h"
+ textual header "/usr/local/include/c++/v1/list"
+ textual header "/usr/local/include/c++/v1/locale"
+ textual header "/usr/local/include/c++/v1/locale.h"
+ textual header "/usr/local/include/c++/v1/map"
+ textual header "/usr/local/include/c++/v1/math.h"
+ textual header "/usr/local/include/c++/v1/memory"
+ textual header "/usr/local/include/c++/v1/module.modulemap"
+ textual header "/usr/local/include/c++/v1/mutex"
+ textual header "/usr/local/include/c++/v1/new"
+ textual header "/usr/local/include/c++/v1/numbers"
+ textual header "/usr/local/include/c++/v1/numeric"
+ textual header "/usr/local/include/c++/v1/optional"
+ textual header "/usr/local/include/c++/v1/ostream"
+ textual header "/usr/local/include/c++/v1/queue"
+ textual header "/usr/local/include/c++/v1/random"
+ textual header "/usr/local/include/c++/v1/ratio"
+ textual header "/usr/local/include/c++/v1/regex"
+ textual header "/usr/local/include/c++/v1/scoped_allocator"
+ textual header "/usr/local/include/c++/v1/semaphore"
+ textual header "/usr/local/include/c++/v1/set"
+ textual header "/usr/local/include/c++/v1/setjmp.h"
+ textual header "/usr/local/include/c++/v1/shared_mutex"
+ textual header "/usr/local/include/c++/v1/span"
+ textual header "/usr/local/include/c++/v1/sstream"
+ textual header "/usr/local/include/c++/v1/stack"
+ textual header "/usr/local/include/c++/v1/stdbool.h"
+ textual header "/usr/local/include/c++/v1/stddef.h"
+ textual header "/usr/local/include/c++/v1/stdexcept"
+ textual header "/usr/local/include/c++/v1/stdint.h"
+ textual header "/usr/local/include/c++/v1/stdio.h"
+ textual header "/usr/local/include/c++/v1/stdlib.h"
+ textual header "/usr/local/include/c++/v1/streambuf"
+ textual header "/usr/local/include/c++/v1/string"
+ textual header "/usr/local/include/c++/v1/string.h"
+ textual header "/usr/local/include/c++/v1/string_view"
+ textual header "/usr/local/include/c++/v1/strstream"
+ textual header "/usr/local/include/c++/v1/support/android/locale_bionic.h"
+ textual header "/usr/local/include/c++/v1/support/fuchsia/xlocale.h"
+ textual header "/usr/local/include/c++/v1/support/ibm/limits.h"
+ textual header "/usr/local/include/c++/v1/support/ibm/locale_mgmt_aix.h"
+ textual header "/usr/local/include/c++/v1/support/ibm/support.h"
+ textual header "/usr/local/include/c++/v1/support/ibm/xlocale.h"
+ textual header "/usr/local/include/c++/v1/support/musl/xlocale.h"
+ textual header "/usr/local/include/c++/v1/support/newlib/xlocale.h"
+ textual header "/usr/local/include/c++/v1/support/solaris/floatingpoint.h"
+ textual header "/usr/local/include/c++/v1/support/solaris/wchar.h"
+ textual header "/usr/local/include/c++/v1/support/solaris/xlocale.h"
+ textual header "/usr/local/include/c++/v1/support/win32/limits_msvc_win32.h"
+ textual header "/usr/local/include/c++/v1/support/win32/locale_win32.h"
+ textual header "/usr/local/include/c++/v1/support/xlocale/__nop_locale_mgmt.h"
+ textual header "/usr/local/include/c++/v1/support/xlocale/__posix_l_fallback.h"
+ textual header "/usr/local/include/c++/v1/support/xlocale/__strtonum_fallback.h"
+ textual header "/usr/local/include/c++/v1/system_error"
+ textual header "/usr/local/include/c++/v1/tgmath.h"
+ textual header "/usr/local/include/c++/v1/thread"
+ textual header "/usr/local/include/c++/v1/tuple"
+ textual header "/usr/local/include/c++/v1/type_traits"
+ textual header "/usr/local/include/c++/v1/typeindex"
+ textual header "/usr/local/include/c++/v1/typeinfo"
+ textual header "/usr/local/include/c++/v1/unordered_map"
+ textual header "/usr/local/include/c++/v1/unordered_set"
+ textual header "/usr/local/include/c++/v1/utility"
+ textual header "/usr/local/include/c++/v1/valarray"
+ textual header "/usr/local/include/c++/v1/variant"
+ textual header "/usr/local/include/c++/v1/vector"
+ textual header "/usr/local/include/c++/v1/version"
+ textual header "/usr/local/include/c++/v1/wchar.h"
+ textual header "/usr/local/include/c++/v1/wctype.h"
} \ No newline at end of file
diff --git a/tools/platforms/configs/rbe_default/cc/tools/cpp/empty.cc b/tools/platforms/configs/rbe_default/cc/tools/cpp/empty.cc
new file mode 100644
index 000000000..c272dabae
--- /dev/null
+++ b/tools/platforms/configs/rbe_default/cc/tools/cpp/empty.cc
@@ -0,0 +1 @@
+int main() {} \ No newline at end of file
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/config/BUILD b/tools/platforms/configs/rbe_default/config/BUILD
index b9c33f89f..6a7456bf1 100644..100755
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/config/BUILD
+++ b/tools/platforms/configs/rbe_default/config/BUILD
@@ -1,4 +1,4 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
+# Copyright 2020 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -12,12 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# This file is auto-generated by an rbe_autoconfig repository rule
+# This file is auto-generated by github.com/bazelbuild/bazel-toolchains/pkg/rbeconfigsgen
# and should not be modified directly.
-# See @bazel_toolchains//rules:rbe_repo.bzl
package(default_visibility = ["//visibility:public"])
+
toolchain(
name = "cc-toolchain",
exec_compatible_with = [
@@ -29,16 +29,20 @@ toolchain(
"@bazel_tools//platforms:linux",
"@bazel_tools//platforms:x86_64",
],
- toolchain = "//tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.1.0/cc:cc-compiler-k8",
+ toolchain = "//tools/platforms/configs/rbe_default/cc:cc-compiler-k8",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
)
platform(
name = "platform",
+ parents = ["@local_config_platform//:host"],
constraint_values = [
"@bazel_tools//platforms:linux",
"@bazel_tools//platforms:x86_64",
"@bazel_tools//tools/cpp:clang",
],
- exec_properties = {"container-image": "docker://gcr.io/kythe-repo/kythe-builder@sha256:49a7a2a52ac943571dbf7c49e888c74eebe1e56ac28badab746e49841fadd3a3", "OSFamily": "Linux"},
+ exec_properties = {
+ "container-image": "docker://gcr.io/kythe-repo/kythe-builder@sha256:cffb7ddda181cbc7de869d5c796a640a9eee127bb60dd305b71da110172ca057",
+ "OSFamily": "Linux",
+ },
)
diff --git a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/java/BUILD b/tools/platforms/configs/rbe_default/java/BUILD
index 47c3ef12f..2fe5f78ee 100644..100755
--- a/tools/platforms/configs/default_toolchain_config_spec_name/bazel_4.2.0/java/BUILD
+++ b/tools/platforms/configs/rbe_default/java/BUILD
@@ -1,4 +1,4 @@
-# Copyright 2016 The Bazel Authors. All rights reserved.
+# Copyright 2020 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -12,14 +12,20 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# This file is auto-generated by an rbe_autoconfig repository rule
+# This file is auto-generated by github.com/bazelbuild/bazel-toolchains/pkg/rbeconfigsgen
# and should not be modified directly.
-# See @bazel_toolchains//rules:rbe_repo.bzl
+
+load("@bazel_tools//tools/jdk:local_java_repository.bzl", "local_java_runtime")
package(default_visibility = ["//visibility:public"])
-java_runtime(
+alias(
name = "jdk",
- srcs = [],
+ actual = "rbe_jdk",
+)
+
+local_java_runtime(
+ name = "rbe_jdk",
java_home = "/usr/lib/jvm/11.29.3-ca-jdk11.0.2/reduced",
+ version = "11.0.2",
)
diff --git a/tools/platforms/configs/rebuild.sh b/tools/platforms/configs/rebuild.sh
index 67d595938..c8b982681 100755
--- a/tools/platforms/configs/rebuild.sh
+++ b/tools/platforms/configs/rebuild.sh
@@ -2,24 +2,11 @@
# Rebuild the versions.bzl from the latest image and current minimum and maximum
# bazel version.
# This should be run if there is a new RBE image or the configuration changes.
-HERE="$(dirname "$0")"
-
-RBE_AUTOCONF_ROOT="$(bazel info workspace)"
-
-VERSIONS=(
- "$(cat "$RBE_AUTOCONF_ROOT/.bazelminversion")"
- "$(cat "$RBE_AUTOCONF_ROOT/.bazelversion")"
-)
-
-TARGETS=(
- "@rbe_default//..."
-)
-
-cp "$HERE/empty-versions.bzl" "$HERE/versions.bzl"
-rm -r "$HERE/default_toolchain_config_spec_name"
-export RBE_AUTOCONF_ROOT
-for version in "${VERSIONS[@]}"; do
- for target in "${TARGETS[@]}"; do
- USE_BAZEL_VERSION="$version" bazel --bazelrc=/dev/null query "$target"
- done
-done
+BAZEL_WORKSPACE="${BUILD_WORKSPACE_DIRECTORY?:Must be invoked via 'bazel run'}"
+
+exec "${RBE_GEN_CONFIG}" \
+ --output_src_root="${BAZEL_WORKSPACE}" \
+ --output_config_path="${OUTPUT_CONFIG_PATH?:Missing mandatory OUTPUT_CONFIG_PATH}" \
+ --bazel_version="$(cat "${BAZEL_WORKSPACE}/.bazelversion")" \
+ --toolchain_container=gcr.io/kythe-repo/kythe-builder:latest \
+ --exec_os=linux --target_os=linux
diff --git a/tools/platforms/configs/versions.bzl b/tools/platforms/configs/versions.bzl
deleted file mode 100644
index 15c77d458..000000000
--- a/tools/platforms/configs/versions.bzl
+++ /dev/null
@@ -1,16 +0,0 @@
-# Generated file, do not modify by hand
-# Generated by 'rbe_default' rbe_autoconfig rule
-"""Definitions to be used in rbe_repo attr of an rbe_autoconf rule """
-toolchain_config_spec0 = struct(config_repos = [], create_cc_configs = True, create_java_configs = True, env = {"ABI_LIBC_VERSION": "glibc_2.19", "ABI_VERSION": "clang", "BAZEL_COMPILER": "clang", "BAZEL_HOST_SYSTEM": "i686-unknown-linux-gnu", "BAZEL_TARGET_CPU": "k8", "BAZEL_TARGET_LIBC": "glibc_2.19", "BAZEL_TARGET_SYSTEM": "x86_64-unknown-linux-gnu", "CC": "clang", "CC_TOOLCHAIN_NAME": "linux_gnu_x86"}, java_home = "/usr/lib/jvm/11.29.3-ca-jdk11.0.2/reduced", java_version = "11", name = "default_toolchain_config_spec_name")
-_TOOLCHAIN_CONFIG_SPECS = [toolchain_config_spec0]
-_BAZEL_TO_CONFIG_SPEC_NAMES = {"4.0.0": ["default_toolchain_config_spec_name"], "4.1.0": ["default_toolchain_config_spec_name"], "4.2.0": ["default_toolchain_config_spec_name"]}
-LATEST = "sha256:49a7a2a52ac943571dbf7c49e888c74eebe1e56ac28badab746e49841fadd3a3"
-CONTAINER_TO_CONFIG_SPEC_NAMES = {"sha256:49a7a2a52ac943571dbf7c49e888c74eebe1e56ac28badab746e49841fadd3a3": ["default_toolchain_config_spec_name"]}
-_DEFAULT_TOOLCHAIN_CONFIG_SPEC = toolchain_config_spec0
-TOOLCHAIN_CONFIG_AUTOGEN_SPEC = struct(
- bazel_to_config_spec_names_map = _BAZEL_TO_CONFIG_SPEC_NAMES,
- container_to_config_spec_names_map = CONTAINER_TO_CONFIG_SPEC_NAMES,
- default_toolchain_config_spec = _DEFAULT_TOOLCHAIN_CONFIG_SPEC,
- latest_container = LATEST,
- toolchain_config_specs = _TOOLCHAIN_CONFIG_SPECS,
- ) \ No newline at end of file
diff --git a/tools/platforms/toolchain_config_suite_spec.bzl b/tools/platforms/toolchain_config_suite_spec.bzl
deleted file mode 100644
index 63e277177..000000000
--- a/tools/platforms/toolchain_config_suite_spec.bzl
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2020 The Kythe Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""RBE toolchain specification."""
-
-load("//tools/platforms/configs:versions.bzl", "TOOLCHAIN_CONFIG_AUTOGEN_SPEC")
-
-DEFAULT_TOOLCHAIN_CONFIG_SUITE_SPEC = {
- "repo_name": "io_kythe",
- "output_base": "tools/platforms/configs",
- "container_repo": "kythe-repo/kythe-builder",
- "container_registry": "gcr.io",
- "default_java_home": "/usr/lib/jvm/11.29.3-ca-jdk11.0.2/reduced",
- "toolchain_config_suite_autogen_spec": TOOLCHAIN_CONFIG_AUTOGEN_SPEC,
-}
diff --git a/tools/rust/extra_action/BUILD b/tools/rust/extra_action/BUILD
index 1500a0fd5..7f4407584 100644
--- a/tools/rust/extra_action/BUILD
+++ b/tools/rust/extra_action/BUILD
@@ -1,16 +1,16 @@
-load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_clippy")
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_clippy")
package(default_visibility = ["//visibility:public"])
rust_binary(
name = "extra_action",
srcs = glob(["src/**/*.rs"]),
- edition = "2018",
+ edition = "2021",
deps = [
- "//kythe/rust/cargo:anyhow",
- "//kythe/rust/cargo:clap",
"//third_party/bazel:extra_actions_base_rust_proto",
- "@rules_rust//proto/raze:protobuf",
+ "@crate_index//:anyhow",
+ "@crate_index//:clap",
+ "@crate_index//:protobuf",
],
)
diff --git a/tools/rust/extra_action/src/main.rs b/tools/rust/extra_action/src/main.rs
index ba5c77697..6c7c538be 100644
--- a/tools/rust/extra_action/src/main.rs
+++ b/tools/rust/extra_action/src/main.rs
@@ -21,7 +21,7 @@ use std::io::Write;
use std::path::Path;
fn main() -> Result<()> {
- let matches = App::new("Kythe Rust Extractor")
+ let matches = App::new("Rust Extra Action Generator")
.arg(
Arg::with_name("src_files")
.long("src_files")
@@ -64,6 +64,13 @@ fn main() -> Result<()> {
.takes_value(true)
.help("The linker path"),
)
+ .arg(
+ Arg::with_name("out_dir_env")
+ .long("out_dir_env")
+ .required(false)
+ .takes_value(true)
+ .help("The path that $OUT_DIR will be set to"),
+ )
.get_matches();
let mut extra_action = ExtraActionInfo::new();
@@ -97,6 +104,14 @@ fn main() -> Result<()> {
spawn_info.set_input_file(protobuf::RepeatedField::from_vec(source_files));
spawn_info.set_output_file(protobuf::RepeatedField::from_vec(vec![crate_name.to_string()]));
+ // If out_dir_env was set, set $OUT_DIR in the spawn info
+ if let Some(out_dir) = matches.value_of("out_dir_env") {
+ let mut env_var = EnvironmentVariable::new();
+ env_var.set_name("OUT_DIR".to_string());
+ env_var.set_value(out_dir.to_string());
+ spawn_info.set_variable(protobuf::RepeatedField::from_vec(vec![env_var]));
+ }
+
// Add SpawnInfo extension to the ExtraActionInfo
let action_unknown_fields = extra_action.mut_unknown_fields();
// SpawnInfo is extension field 1003 on ExtraActionInfo
diff --git a/tools/rust/runfiles/BUILD b/tools/rust/runfiles/BUILD
index 7bac0f75a..176a2dd7a 100644
--- a/tools/rust/runfiles/BUILD
+++ b/tools/rust/runfiles/BUILD
@@ -1,11 +1,11 @@
-load("@rules_rust//rust:rust.bzl", "rust_clippy", "rust_library", "rust_test")
+load("@rules_rust//rust:defs.bzl", "rust_clippy", "rust_library", "rust_test")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "runfiles",
srcs = ["lib.rs"],
- edition = "2018",
+ edition = "2021",
)
rust_clippy(
diff --git a/tools/rust/runfiles/lib.rs b/tools/rust/runfiles/lib.rs
index 167277e81..f34bc84aa 100644
--- a/tools/rust/runfiles/lib.rs
+++ b/tools/rust/runfiles/lib.rs
@@ -21,33 +21,10 @@ pub struct Runfiles {
impl Runfiles {
pub fn create() -> std::io::Result<Self> {
- let executable_path = std::env::current_exe()?.canonicalize()?;
- // Unwrap is okay because we know the executable path is a file path
- let executable_name_os_str = executable_path.file_name().unwrap();
- // OsStr -> Cow<'_, str> -> String
- let executable_name = executable_name_os_str.to_string_lossy().to_string();
-
- // See if there is an ${executable_path}.runfiles directory
- // If so, that's the runfiles directory
- let local_path = executable_path.with_file_name(format!("{}.runfiles/", executable_name));
- if local_path.exists() {
- return Ok(Self { runfiles_path: local_path });
- } else {
- // We are probably a test binary and the runfiles directory is one of the parent
- // folders
- let mut current_path = executable_path;
- while current_path.pop() {
- if let Some(dir_name_os) = current_path.file_name() {
- let dir_name = dir_name_os.to_string_lossy();
- if dir_name.ends_with(".runfiles") {
- return Ok(Self { runfiles_path: current_path });
- }
- } else {
- break;
- }
- }
+ match std::env::var("RUNFILES_DIR") {
+ Ok(p) => Ok(Self { runfiles_path: PathBuf::from(p) }),
+ Err(_) => Err(Error::new(ErrorKind::NotFound, "Failed to find runfiles directory")),
}
- Err(Error::new(ErrorKind::NotFound, "Failed to find runfiles directory"))
}
/// Returns the full path of a file inside the runfiles directory
diff --git a/tools/rust/rustfmt.toml b/tools/rust/rustfmt.toml
index fcd9f3bc5..3336d3817 100644
--- a/tools/rust/rustfmt.toml
+++ b/tools/rust/rustfmt.toml
@@ -12,8 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Based on Fuchsia's rustfmt.toml
-edition = "2018"
+edition = "2021"
+version = "Two"
use_small_heuristics = "Max"
newline_style = "Unix"
wrap_comments = true
diff --git a/version.bzl b/version.bzl
index 79688a543..25e3c3a1a 100644
--- a/version.bzl
+++ b/version.bzl
@@ -1,8 +1,8 @@
# Minimum supported Bazel version. Should match .bazelminversion file.
-MIN_VERSION = "4.0.0"
+MIN_VERSION = "5.0.0"
# Maximum supported Bazel version. Should match .bazelversion file.
-MAX_VERSION = "4.2.0"
+MAX_VERSION = "5.0.0"
def _tuplicate(value, delim):
rv = ()