Prevent the semicolon handler from adding indexes to message options." This patch works around a bug in the protobuf grammar that causes the parser to misclassify message options as message fields if they contain syntax errors or unresolved symbols. Change-Id: Ieee07fe51e9120f8952be839acf8b2b8803630b8
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/semicolon/SmartSemicolonHandler.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/semicolon/SmartSemicolonHandler.java index 005cca6..f250c08 100644 --- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/semicolon/SmartSemicolonHandler.java +++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/semicolon/SmartSemicolonHandler.java
@@ -149,7 +149,16 @@ model = model.eContainer(); } - if (model instanceof MessageField || model instanceof Group || model instanceof Literal) { + if (model instanceof MessageField) { + // If a non-indexed MessageElement, such as an Option, contains syntax errors or + // unresolved symbols, the Protobuf Parser may mistakenly classify it as a MessageField. + // Invalid MessageFields can be filtered out by verifying the presence of the field "name". + if (((MessageField) model).getName() != null) { + return model; + } + } + + if (model instanceof Group || model instanceof Literal) { return model; } }