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 Workeroption cc_enable_arenas = true; 21*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/expr/v1beta1;expr"; 22*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 23*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "SourceProto"; 24*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api.expr.v1beta1"; 25*d5c09012SAndroid Build Coastguard Worker 26*d5c09012SAndroid Build Coastguard Worker// Source information collected at parse time. 27*d5c09012SAndroid Build Coastguard Workermessage SourceInfo { 28*d5c09012SAndroid Build Coastguard Worker // The location name. All position information attached to an expression is 29*d5c09012SAndroid Build Coastguard Worker // relative to this location. 30*d5c09012SAndroid Build Coastguard Worker // 31*d5c09012SAndroid Build Coastguard Worker // The location could be a file, UI element, or similar. For example, 32*d5c09012SAndroid Build Coastguard Worker // `acme/app/AnvilPolicy.cel`. 33*d5c09012SAndroid Build Coastguard Worker string location = 2; 34*d5c09012SAndroid Build Coastguard Worker 35*d5c09012SAndroid Build Coastguard Worker // Monotonically increasing list of character offsets where newlines appear. 36*d5c09012SAndroid Build Coastguard Worker // 37*d5c09012SAndroid Build Coastguard Worker // The line number of a given position is the index `i` where for a given 38*d5c09012SAndroid Build Coastguard Worker // `id` the `line_offsets[i] < id_positions[id] < line_offsets[i+1]`. The 39*d5c09012SAndroid Build Coastguard Worker // column may be derivd from `id_positions[id] - line_offsets[i]`. 40*d5c09012SAndroid Build Coastguard Worker repeated int32 line_offsets = 3; 41*d5c09012SAndroid Build Coastguard Worker 42*d5c09012SAndroid Build Coastguard Worker // A map from the parse node id (e.g. `Expr.id`) to the character offset 43*d5c09012SAndroid Build Coastguard Worker // within source. 44*d5c09012SAndroid Build Coastguard Worker map<int32, int32> positions = 4; 45*d5c09012SAndroid Build Coastguard Worker} 46*d5c09012SAndroid Build Coastguard Worker 47*d5c09012SAndroid Build Coastguard Worker// A specific position in source. 48*d5c09012SAndroid Build Coastguard Workermessage SourcePosition { 49*d5c09012SAndroid Build Coastguard Worker // The soucre location name (e.g. file name). 50*d5c09012SAndroid Build Coastguard Worker string location = 1; 51*d5c09012SAndroid Build Coastguard Worker 52*d5c09012SAndroid Build Coastguard Worker // The character offset. 53*d5c09012SAndroid Build Coastguard Worker int32 offset = 2; 54*d5c09012SAndroid Build Coastguard Worker 55*d5c09012SAndroid Build Coastguard Worker // The 1-based index of the starting line in the source text 56*d5c09012SAndroid Build Coastguard Worker // where the issue occurs, or 0 if unknown. 57*d5c09012SAndroid Build Coastguard Worker int32 line = 3; 58*d5c09012SAndroid Build Coastguard Worker 59*d5c09012SAndroid Build Coastguard Worker // The 0-based index of the starting position within the line of source text 60*d5c09012SAndroid Build Coastguard Worker // where the issue occurs. Only meaningful if line is nonzer.. 61*d5c09012SAndroid Build Coastguard Worker int32 column = 4; 62*d5c09012SAndroid Build Coastguard Worker} 63