Revert "Fixed parsing of negative hex literals using X instead of x" This reverts commit 15e26fbc17fa92176c3b2a0f1ddd8df5cf603153.
diff --git a/com.google.eclipse.protobuf.feature/feature.xml b/com.google.eclipse.protobuf.feature/feature.xml index 60eb4ac..01cb397 100644 --- a/com.google.eclipse.protobuf.feature/feature.xml +++ b/com.google.eclipse.protobuf.feature/feature.xml
@@ -2,7 +2,7 @@ <feature id="com.google.eclipse.protobuf" label="%featureName" - version="1.3.5.qualifier" + version="1.3.3.qualifier" provider-name="%providerName"> <description url="https://code.google.com/p/protobuf-dt/">
diff --git a/com.google.eclipse.protobuf.ui.integration.test/.gitignore b/com.google.eclipse.protobuf.ui.integration.test/.gitignore deleted file mode 100644 index 5e56e04..0000000 --- a/com.google.eclipse.protobuf.ui.integration.test/.gitignore +++ /dev/null
@@ -1 +0,0 @@ -/bin
diff --git a/com.google.eclipse.protobuf.ui.test/.gitignore b/com.google.eclipse.protobuf.ui.test/.gitignore deleted file mode 100644 index 5e56e04..0000000 --- a/com.google.eclipse.protobuf.ui.test/.gitignore +++ /dev/null
@@ -1 +0,0 @@ -/bin
diff --git a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF index 3afef04..b509576 100644 --- a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF +++ b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-Vendor: %Bundle-Vendor -Bundle-Version: 1.3.5.qualifier +Bundle-Version: 1.3.3.qualifier Bundle-SymbolicName: com.google.eclipse.protobuf.ui; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: com.google.eclipse.protobuf;visibility:=reexport, @@ -29,6 +29,5 @@ com.google.eclipse.protobuf.ui.plugin, com.google.eclipse.protobuf.ui.preferences, com.google.eclipse.protobuf.ui.preferences.compiler, - com.google.eclipse.protobuf.ui.util, - com.google.eclipse.protobuf.ui.quickfix + com.google.eclipse.protobuf.ui.util Bundle-Activator: com.google.eclipse.protobuf.ui.internal.ProtobufActivator
diff --git a/com.google.eclipse.protobuf/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf/META-INF/MANIFEST.MF index ff18266..b714cf1 100644 --- a/com.google.eclipse.protobuf/META-INF/MANIFEST.MF +++ b/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Eclipse-ExtensibleAPI: true Bundle-Name: %Bundle-Name Bundle-Vendor: %Bundle-Vendor -Bundle-Version: 1.3.5.qualifier +Bundle-Version: 1.3.3.qualifier Bundle-SymbolicName: com.google.eclipse.protobuf; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.xtext;bundle-version="2.3.0",
diff --git a/com.google.eclipse.protobuf/descriptor.proto b/com.google.eclipse.protobuf/descriptor.proto index a2b9b4d..d959ce1 100644 --- a/com.google.eclipse.protobuf/descriptor.proto +++ b/com.google.eclipse.protobuf/descriptor.proto
@@ -1,266 +1,446 @@ -// Copyright 2013 Google Inc. All rights reserved. +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). syntax = "proto2"; -package proto2; +package google.protobuf; option java_package = "com.google.protobuf"; option java_outer_classname = "DescriptorProtos"; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. option optimize_for = SPEED; +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. message FileDescriptorSet { repeated FileDescriptorProto file = 1; } +// Describes a complete .proto file. message FileDescriptorProto { - optional string name = 1; - optional string package = 2; + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. repeated string dependency = 3; - repeated int32 public_dependency = 10; - repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. repeated DescriptorProto message_type = 4; repeated EnumDescriptorProto enum_type = 5; repeated ServiceDescriptorProto service = 6; repeated FieldDescriptorProto extension = 7; + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field whithout harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. optional SourceCodeInfo source_code_info = 9; } +// Describes a message type. message DescriptorProto { optional string name = 1; + repeated FieldDescriptorProto field = 2; repeated FieldDescriptorProto extension = 6; + repeated DescriptorProto nested_type = 3; repeated EnumDescriptorProto enum_type = 4; + message ExtensionRange { optional int32 start = 1; optional int32 end = 2; } repeated ExtensionRange extension_range = 5; + optional MessageOptions options = 7; } +// Describes a field within a message. message FieldDescriptorProto { enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. TYPE_DOUBLE = 1; TYPE_FLOAT = 2; - TYPE_INT64 = 3; + TYPE_INT64 = 3; // Not ZigZag encoded. Negative numbers + // take 10 bytes. Use TYPE_SINT64 if negative + // values are likely. TYPE_UINT64 = 4; - TYPE_INT32 = 5; + TYPE_INT32 = 5; // Not ZigZag encoded. Negative numbers + // take 10 bytes. Use TYPE_SINT32 if negative + // values are likely. TYPE_FIXED64 = 6; TYPE_FIXED32 = 7; TYPE_BOOL = 8; TYPE_STRING = 9; - TYPE_GROUP = 10; - TYPE_MESSAGE = 11; + TYPE_GROUP = 10; // Tag-delimited aggregate. + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. TYPE_BYTES = 12; TYPE_UINT32 = 13; TYPE_ENUM = 14; TYPE_SFIXED32 = 15; TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; - TYPE_SINT64 = 18; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. }; + enum Label { + // 0 is reserved for errors LABEL_OPTIONAL = 1; LABEL_REQUIRED = 2; LABEL_REPEATED = 3; + // TODO(sanjay): Should we add LABEL_MAP? }; + optional string name = 1; optional int32 number = 3; optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be either TYPE_ENUM or TYPE_MESSAGE. optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? optional string default_value = 7; + optional FieldOptions options = 8; } +// Describes an enum type. message EnumDescriptorProto { optional string name = 1; + repeated EnumValueDescriptorProto value = 2; + optional EnumOptions options = 3; } +// Describes a value within an enum. message EnumValueDescriptorProto { optional string name = 1; optional int32 number = 2; + optional EnumValueOptions options = 3; } +// Describes a service. message ServiceDescriptorProto { optional string name = 1; repeated MethodDescriptorProto method = 2; - repeated StreamDescriptorProto stream = 4; + optional ServiceOptions options = 3; } +// Describes a method of a service. message MethodDescriptorProto { optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. optional string input_type = 2; optional string output_type = 3; + optional MethodOptions options = 4; } -message StreamDescriptorProto { - optional string name = 1; - optional string client_message_type = 2; - optional string server_message_type = 3; - optional StreamOptions options = 4; -} +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Object-C plugin) and your porject website (if available) -- there's no need +// to explain how you intend to use them. Usually you only need one extension +// number. You can declare multiple options with only one extension number by +// putting them in a sub-message. See the Custom Options section of the docs +// for examples: +// http://code.google.com/apis/protocolbuffers/docs/proto.html#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + message FileOptions { - optional int32 cc_api_version = 2 [default=2]; - enum CompatibilityLevel { - NO_COMPATIBILITY = 0; - PROTO1_COMPATIBLE = 100; - DEPRECATED_PROTO1_COMPATIBLE = 50; - } - optional CompatibilityLevel cc_api_compatibility = 15 [default=NO_COMPATIBILITY]; - optional bool cc_proto_array_compatible = 22 [default=true]; - optional bool cc_utf8_verification = 24 [default=true]; - optional bool cc_proto1_text_format = 25 [default=false]; + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. optional string java_package = 1; - optional int32 py_api_version = 4 [default=2]; - optional int32 java_api_version = 5 [default=2]; - optional bool java_use_javaproto2 = 6 [default=true]; - optional bool java_java5_enums = 7 [default=true]; - optional bool java_generate_rpc_baseimpl = 13 [default=false]; - optional bool java_use_javastrings = 21 [default=false]; - optional string java_alt_api_package = 19; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. optional bool java_multiple_files = 10 [default=false]; + + // If set true, then the Java code generator will generate equals() and + // hashCode() methods for all messages defined in the .proto file. This is + // purely a speed optimization, as the AbstractMessage base class includes + // reflection-based implementations of these methods. optional bool java_generate_equals_and_hash = 20 [default=false]; + + // Generated classes can be optimized for speed or code size. enum OptimizeMode { - SPEED = 1; - CODE_SIZE = 2; - LITE_RUNTIME = 3; + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. } optional OptimizeMode optimize_for = 9 [default=SPEED]; - optional string go_package = 11; - optional string javascript_package = 12; - optional int32 szl_api_version = 14 [default=1]; + + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of proto2. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default=false]; optional bool java_generic_services = 17 [default=false]; optional bool py_generic_services = 18 [default=false]; - optional bool deprecated = 23 [default=false]; + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. optional bool message_set_wire_format = 1 [default=false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". optional bool no_standard_descriptor_accessor = 2 [default=false]; - optional bool deprecated = 3 [default=false]; + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! optional CType ctype = 1 [default = STRING]; enum CType { + // Default mode. STRING = 0; + CORD = 1; + STRING_PIECE = 2; } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. optional bool packed = 2; - optional JType jtype = 4 [default = NORMAL]; - enum JType { - NORMAL = 0; - BYTES = 1; - } - optional JSType jstype = 6 [default = JS_NORMAL]; - enum JSType { - JS_NORMAL = 0; - JS_STRING = 1; - JS_NUMBER = 2; - } - optional bool lazy = 5 [default=false]; + + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. optional bool deprecated = 3 [default=false]; + + // EXPERIMENTAL. DO NOT USE. + // For "map" fields, the name of the field in the enclosed type that + // is the key for this map. For example, suppose we have: + // message Item { + // required string name = 1; + // required string value = 2; + // } + // message Config { + // repeated Item items = 1 [experimental_map_key="name"]; + // } + // In this situation, the map key for Item will be set to "name". + // TODO: Fully-implement this, then remove the "experimental_" prefix. optional string experimental_map_key = 9; - optional bool weak = 10 [default=false]; - message UpgradedOption { - optional string name = 1; - optional string value = 2; - }; - repeated UpgradedOption upgraded_option = 11; + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } message EnumOptions { - optional string proto1_name = 1; - optional bool allow_alias = 2; - optional bool deprecated = 3 [default=false]; + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } message EnumValueOptions { - optional bool deprecated = 1 [default=false]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } message ServiceOptions { - optional bool multicast_stub = 20 [default=false]; - optional double failure_detection_delay = 16 [default=-1.0]; - optional bool deprecated = 33 [default=false]; + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } message MethodOptions { - enum Protocol { - TCP = 0; - UDP = 1; - } - enum SecurityLevel { - NONE = 0; - INTEGRITY = 1; - PRIVACY_AND_INTEGRITY = 2; - STRONG_PRIVACY_AND_INTEGRITY = 3; - } - enum Format { - UNCOMPRESSED = 0; - ZIPPY_COMPRESSED = 1; - } - optional double deadline = 8 [default=-1.0]; - optional bool duplicate_suppression = 9 [default=false]; - optional bool fail_fast = 10 [default=false]; - optional sint32 client_logging = 11 [default=256]; - optional sint32 server_logging = 12 [default=256]; - optional SecurityLevel security_level = 13 [default=NONE]; - optional Format response_format = 15 [default=UNCOMPRESSED]; - optional Format request_format = 17 [default=UNCOMPRESSED]; - optional string stream_type = 18; - optional bool deprecated = 33 [default=false]; + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; } -message StreamOptions { - enum TokenUnit { - MESSAGE = 0; - BYTE = 1; - } - optional int64 client_initial_tokens = 1 [default=-1]; - optional int64 server_initial_tokens = 2 [default=-1]; - optional TokenUnit token_unit = 3 [default=MESSAGE]; - optional MethodOptions.SecurityLevel security_level = 4 [default=NONE]; - optional string security_label = 5; - optional int32 client_logging = 6 [default=256]; - optional int32 server_logging = 7 [default=256]; - optional bool deprecated = 33 [default=false]; - repeated UninterpretedOption uninterpreted_option = 999; - extensions 1000 to max; -} - +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". message NamePart { required string name_part = 1; required bool is_extension = 2; } repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. optional string identifier_value = 3; optional uint64 positive_int_value = 4; optional int64 negative_int_value = 5; @@ -269,12 +449,90 @@ optional string aggregate_value = 8; } +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendent. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. repeated Location location = 1; message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). repeated int32 path = 1 [packed=true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. repeated int32 span = 2 [packed=true]; - optional string leading_comments = 3; - optional string trailing_comments = 4; + + // TODO(kenton): Record comments appearing before and after the + // declaration. } }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext index a4eff95..a2e91e7 100644 --- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext +++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
@@ -207,7 +207,7 @@ NormalFieldName | ExtensionFieldName; NormalFieldName: - target=[MessageField|Name]; + target=[MessageField]; ExtensionFieldName: '[' target=[MessageField|QualifiedName] ']';
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java index adb6208..e553950 100644 --- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java +++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java
@@ -22,7 +22,7 @@ * @author alruiz@google.com (Alex Ruiz) */ public class HEXValueConverter extends AbstractLexerBasedConverter<Long> { - private static final String[] VALID_PREFIXES = { "0x", "-0x", "0X", "-0X" }; + private static final String[] VALID_PREFIXES = { "0x", "-0x", "0X", "-0x" }; /** * Creates an {@code int} from the given input, if the given input represents an hexadecimal number.
diff --git a/update-site/.gitignore b/update-site/.gitignore deleted file mode 100644 index d076332..0000000 --- a/update-site/.gitignore +++ /dev/null
@@ -1,4 +0,0 @@ -/content.jar -/features -/plugins -/artifacts.jar
diff --git a/update-site/artifacts.jar b/update-site/artifacts.jar index 738f943..f960e3d 100644 --- a/update-site/artifacts.jar +++ b/update-site/artifacts.jar Binary files differ
diff --git a/update-site/content.jar b/update-site/content.jar index 545a42f..866e780 100644 --- a/update-site/content.jar +++ b/update-site/content.jar Binary files differ
diff --git a/update-site/features/com.google.eclipse.protobuf_1.3.3.201210291557.jar b/update-site/features/com.google.eclipse.protobuf_1.3.3.201210291557.jar new file mode 100644 index 0000000..31a417a --- /dev/null +++ b/update-site/features/com.google.eclipse.protobuf_1.3.3.201210291557.jar Binary files differ
diff --git a/update-site/plugins/com.google.eclipse.protobuf.ui_1.3.3.201210291557.jar b/update-site/plugins/com.google.eclipse.protobuf.ui_1.3.3.201210291557.jar new file mode 100644 index 0000000..3920965 --- /dev/null +++ b/update-site/plugins/com.google.eclipse.protobuf.ui_1.3.3.201210291557.jar Binary files differ
diff --git a/update-site/plugins/com.google.eclipse.protobuf_1.3.3.201210291557.jar b/update-site/plugins/com.google.eclipse.protobuf_1.3.3.201210291557.jar new file mode 100644 index 0000000..6e94e84 --- /dev/null +++ b/update-site/plugins/com.google.eclipse.protobuf_1.3.3.201210291557.jar Binary files differ
diff --git a/update-site/site.xml b/update-site/site.xml index 76fead0..b1d0890 100644 --- a/update-site/site.xml +++ b/update-site/site.xml
@@ -3,7 +3,7 @@ <description name="protobuf-dt" url="http://protobuf-dt.googlecode.com/git/update-site"> Update site for protobuf-dt, an Eclipse-based Development Environment for Protocol Buffers. </description> - <feature url="features/com.google.eclipse.protobuf_1.3.5.201305301034.jar" id="com.google.eclipse.protobuf" version="1.3.5.201305301034"> + <feature url="features/com.google.eclipse.protobuf_1.3.3.201210291557.jar" id="com.google.eclipse.protobuf" version="1.3.3.201210291557"> <category name="google"/> </feature> <category-def name="google" label="Google Inc."/>