|  | // 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 Skylark builtin symboles. | 
|  | // | 
|  | // 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 Skylark 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 Skylark 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 Skylark 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 Skylark expression (e.g. | 
|  | // "False", "True", "[]", "None") | 
|  | string default_value = 4; | 
|  | } |