1*d5c09012SAndroid Build Coastguard Worker// Copyright 2019 Google LLC. 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker// 15*d5c09012SAndroid Build Coastguard Worker 16*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 17*d5c09012SAndroid Build Coastguard Worker 18*d5c09012SAndroid Build Coastguard Workerpackage google.api.expr.v1beta1; 19*d5c09012SAndroid Build Coastguard Worker 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/expr/v1beta1/expr.proto"; 21*d5c09012SAndroid Build Coastguard Worker 22*d5c09012SAndroid Build Coastguard Workeroption cc_enable_arenas = true; 23*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/expr/v1beta1;expr"; 24*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 25*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "DeclProto"; 26*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api.expr.v1beta1"; 27*d5c09012SAndroid Build Coastguard Worker 28*d5c09012SAndroid Build Coastguard Worker// A declaration. 29*d5c09012SAndroid Build Coastguard Workermessage Decl { 30*d5c09012SAndroid Build Coastguard Worker // The id of the declaration. 31*d5c09012SAndroid Build Coastguard Worker int32 id = 1; 32*d5c09012SAndroid Build Coastguard Worker 33*d5c09012SAndroid Build Coastguard Worker // The name of the declaration. 34*d5c09012SAndroid Build Coastguard Worker string name = 2; 35*d5c09012SAndroid Build Coastguard Worker 36*d5c09012SAndroid Build Coastguard Worker // The documentation string for the declaration. 37*d5c09012SAndroid Build Coastguard Worker string doc = 3; 38*d5c09012SAndroid Build Coastguard Worker 39*d5c09012SAndroid Build Coastguard Worker // The kind of declaration. 40*d5c09012SAndroid Build Coastguard Worker oneof kind { 41*d5c09012SAndroid Build Coastguard Worker // An identifier declaration. 42*d5c09012SAndroid Build Coastguard Worker IdentDecl ident = 4; 43*d5c09012SAndroid Build Coastguard Worker 44*d5c09012SAndroid Build Coastguard Worker // A function declaration. 45*d5c09012SAndroid Build Coastguard Worker FunctionDecl function = 5; 46*d5c09012SAndroid Build Coastguard Worker } 47*d5c09012SAndroid Build Coastguard Worker} 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker// The declared type of a variable. 50*d5c09012SAndroid Build Coastguard Worker// 51*d5c09012SAndroid Build Coastguard Worker// Extends runtime type values with extra information used for type checking 52*d5c09012SAndroid Build Coastguard Worker// and dispatching. 53*d5c09012SAndroid Build Coastguard Workermessage DeclType { 54*d5c09012SAndroid Build Coastguard Worker // The expression id of the declared type, if applicable. 55*d5c09012SAndroid Build Coastguard Worker int32 id = 1; 56*d5c09012SAndroid Build Coastguard Worker 57*d5c09012SAndroid Build Coastguard Worker // The type name, e.g. 'int', 'my.type.Type' or 'T' 58*d5c09012SAndroid Build Coastguard Worker string type = 2; 59*d5c09012SAndroid Build Coastguard Worker 60*d5c09012SAndroid Build Coastguard Worker // An ordered list of type parameters, e.g. `<string, int>`. 61*d5c09012SAndroid Build Coastguard Worker // Only applies to a subset of types, e.g. `map`, `list`. 62*d5c09012SAndroid Build Coastguard Worker repeated DeclType type_params = 4; 63*d5c09012SAndroid Build Coastguard Worker} 64*d5c09012SAndroid Build Coastguard Worker 65*d5c09012SAndroid Build Coastguard Worker// An identifier declaration. 66*d5c09012SAndroid Build Coastguard Workermessage IdentDecl { 67*d5c09012SAndroid Build Coastguard Worker // Optional type of the identifier. 68*d5c09012SAndroid Build Coastguard Worker DeclType type = 3; 69*d5c09012SAndroid Build Coastguard Worker 70*d5c09012SAndroid Build Coastguard Worker // Optional value of the identifier. 71*d5c09012SAndroid Build Coastguard Worker Expr value = 4; 72*d5c09012SAndroid Build Coastguard Worker} 73*d5c09012SAndroid Build Coastguard Worker 74*d5c09012SAndroid Build Coastguard Worker// A function declaration. 75*d5c09012SAndroid Build Coastguard Workermessage FunctionDecl { 76*d5c09012SAndroid Build Coastguard Worker // The function arguments. 77*d5c09012SAndroid Build Coastguard Worker repeated IdentDecl args = 1; 78*d5c09012SAndroid Build Coastguard Worker 79*d5c09012SAndroid Build Coastguard Worker // Optional declared return type. 80*d5c09012SAndroid Build Coastguard Worker DeclType return_type = 2; 81*d5c09012SAndroid Build Coastguard Worker 82*d5c09012SAndroid Build Coastguard Worker // If the first argument of the function is the receiver. 83*d5c09012SAndroid Build Coastguard Worker bool receiver_function = 3; 84*d5c09012SAndroid Build Coastguard Worker} 85