diff --git a/tools/protoc-plugin/README.md b/tools/protoc-plugin/README.md
index bc15f18b79..128b5a9cc3 100644
--- a/tools/protoc-plugin/README.md
+++ b/tools/protoc-plugin/README.md
@@ -51,7 +51,7 @@ message Hamster {
}
```
-If both `(is)` and `(every_is)` options are found, `(is)` value is taken.
+If both `(is)` and `(every_is)` options are found, both are applied.
Also, both `(is)` and `(every_is)` options support shorter syntax with no explicit package
declaration. In this case, the package of the current file (either `java_package` or Protobuf
diff --git a/tools/protoc-plugin/src/main/java/io/spine/tools/protoc/iface/InterfaceGenerator.java b/tools/protoc-plugin/src/main/java/io/spine/tools/protoc/iface/InterfaceGenerator.java
index 901c53c55b..a7d5828fbe 100644
--- a/tools/protoc-plugin/src/main/java/io/spine/tools/protoc/iface/InterfaceGenerator.java
+++ b/tools/protoc-plugin/src/main/java/io/spine/tools/protoc/iface/InterfaceGenerator.java
@@ -41,6 +41,9 @@
* The {@link CodeGenerator} implementation generating the specific interfaces implemented by
* some message types.
*
+ * This generator processes interfaces obtained from {@code (is)} and {@code (every_is)} options
+ * as well as interfaces defined for {@linkplain CodeGenerationTask file patterns}.
+ *
*
The generator produces two types of {@link File CodeGeneratorResponse.File} instances
* representing:
*
@@ -101,18 +104,13 @@ protected Collection generate(Type, ?> type) {
}
private ImmutableList processMessageType(MessageType type) {
- ImmutableList.Builder result = ImmutableList.builder();
-
ImmutableList matched = codeGenerationTasks.generateFor(type);
- result.addAll(matched);
-
Collection fromMsgOption = MessageAndInterface.scanMsgOption(type);
- result.addAll(fromMsgOption);
-
- if (fromMsgOption.isEmpty()) {
- Collection fromFileOption = MessageAndInterface.scanFileOption(type);
- result.addAll(fromFileOption);
- }
- return result.build();
+ Collection fromFileOption = MessageAndInterface.scanFileOption(type);
+ return ImmutableList.builder()
+ .addAll(matched)
+ .addAll(fromMsgOption)
+ .addAll(fromFileOption)
+ .build();
}
}
diff --git a/tools/smoke-tests/model-compiler-tests/src/test/java/io/spine/tools/protoc/ProtocPluginTest.java b/tools/smoke-tests/model-compiler-tests/src/test/java/io/spine/tools/protoc/ProtocPluginTest.java
index 19fae8cfb7..ba5785631f 100644
--- a/tools/smoke-tests/model-compiler-tests/src/test/java/io/spine/tools/protoc/ProtocPluginTest.java
+++ b/tools/smoke-tests/model-compiler-tests/src/test/java/io/spine/tools/protoc/ProtocPluginTest.java
@@ -93,12 +93,12 @@ void implementInterfaceInGeneratedMessagesWithIsOption() {
}
@Test
- @DisplayName("use `IS` in priority to `EVERY IS`")
+ @DisplayName("use `IS` and `EVERY IS` together")
void useIsInPriorityToEveryIs() {
assertThat(PIUserCreated.getDefaultInstance()).isInstanceOf(PIUserEvent.class);
assertThat(PIUserNameUpdated.getDefaultInstance()).isInstanceOf(PIUserEvent.class);
- assertThat(UserName.getDefaultInstance()).isNotInstanceOf(PIUserEvent.class);
+ assertThat(UserName.getDefaultInstance()).isInstanceOf(PIUserEvent.class);
assertThat(UserName.getDefaultInstance()).isInstanceOf(UserInfo.class);
}
diff --git a/version.gradle b/version.gradle
index 5b89cb4dd1..0d6aa31763 100644
--- a/version.gradle
+++ b/version.gradle
@@ -25,7 +25,7 @@
* as we want to manage the versions in a single source.
*/
-final def SPINE_VERSION = '1.5.10'
+final def SPINE_VERSION = '1.5.11'
ext {
spineVersion = SPINE_VERSION