| // Copyright 2018 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. | 
 | // | 
 | // Proto that exposes all BUILD and Starlark builtin symbols. | 
 | // | 
 | // The API exporter is used for code completion in Cider. | 
 |  | 
 | syntax = "proto3"; | 
 | package builtin; | 
 |  | 
 | // option java_api_version = 2; | 
 | option java_package = "com.google.devtools.build.docgen.builtin"; | 
 | option java_outer_classname = "BuiltinProtos"; | 
 |  | 
 | // Top-level object for all BUILD and Starlark builtin modules. | 
 | // Globals contains a list of all builtin variables, functions and packages | 
 | // (e.g. "java_common" and "native" will be included, same as "None" and | 
 | // "dict"). | 
 | // Types contains a list of all builtin packages (e.g. "java_common" | 
 | // and "native"). All types should be uniquely named. | 
 | message Builtins { | 
 |   repeated Type type = 1; | 
 |  | 
 |   repeated Value global = 2; | 
 | } | 
 |  | 
 | // Representation for Starlark builtin packages. It contains all the symbols | 
 | // (variables and functions) exposed by the package. | 
 | // E.g. "list" is a Type that exposes a list of fields containing: "insert", | 
 | // "index", "remove" etc. | 
 | message Type { | 
 |   string name = 1; | 
 |  | 
 |   // List of fields and methods of this type. All such entities are listed as | 
 |   // fields, and methods are fields which are callable. | 
 |   repeated Value field = 2; | 
 |  | 
 |   // Module documentation. | 
 |   string doc = 3; | 
 | } | 
 |  | 
 | // ApiContext specifies the context(s) in which a symbol is available. For | 
 | // example, a symbol may be available as a builtin only in .bzl files, but | 
 | // not in BUILD files. | 
 | enum ApiContext { | 
 |   ALL = 0; | 
 |   BZL = 1; | 
 |   BUILD = 2; | 
 | } | 
 |  | 
 | // Generic representation for a Starlark object. If the object is callable | 
 | // (can act as a function), then callable will be set. | 
 | message Value { | 
 |   string name = 1; | 
 |  | 
 |   // Name of the type. | 
 |   string type = 2; | 
 |  | 
 |   // Set when the object is a function. | 
 |   Callable callable = 3; | 
 |  | 
 |   // Value documentation. | 
 |   string doc = 4; | 
 |  | 
 |   // The context(s) in which the symbol is recognized. | 
 |   ApiContext api_context = 5; | 
 | } | 
 |  | 
 | message Callable { | 
 |   repeated Param param = 1; | 
 |  | 
 |   // Name of the return type. | 
 |   string return_type = 2; | 
 | } | 
 |  | 
 | message Param { | 
 |   string name = 1; | 
 |  | 
 |   // Parameter type represented as a name. | 
 |   string type = 2; | 
 |  | 
 |   // Parameter documentation. | 
 |   string doc = 3; | 
 |  | 
 |   // Default value for the parameter, written as Starlark expression (e.g. | 
 |   // "False", "True", "[]", "None") | 
 |   string default_value = 4; | 
 |  | 
 |   // Whether the param is mandatory or optional. | 
 |   bool is_mandatory = 5; | 
 |  | 
 |   // Whether the param is a star argument. | 
 |   bool is_star_arg = 6; | 
 |  | 
 |   // Whether the param is a star-star argument. | 
 |   bool is_star_star_arg = 7; | 
 | } |