Skip to content

Commit 3cb1e3c

Browse files
committed
[Java] sinceVersion should be the min of field and type sinceVersion in IR.
1 parent e1c470c commit 3cb1e3c

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/xml/IrGenerator.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ private void addMessageSignal(final Message msg, final Signal signal)
117117
tokenList.add(token);
118118
}
119119

120-
private void addFieldSignal(final Field field, final Signal signal)
120+
private void addFieldSignal(final Field field, final Signal signal, final int typeSinceVersion)
121121
{
122122
final Encoding.Builder encodingBuilder = new Encoding.Builder()
123123
.epoch(field.epoch())
@@ -142,7 +142,7 @@ private void addFieldSignal(final Field field, final Signal signal)
142142
.description(field.description())
143143
.id(field.id())
144144
.offset(field.computedOffset())
145-
.version(field.sinceVersion())
145+
.version(Math.max(field.sinceVersion(), typeSinceVersion))
146146
.deprecated(field.deprecated())
147147
.encoding(encodingBuilder.build())
148148
.build();
@@ -158,20 +158,22 @@ private void addAllFields(final List<Field> fieldList)
158158

159159
if (null == type)
160160
{
161-
addFieldSignal(field, Signal.BEGIN_GROUP);
161+
addFieldSignal(field, Signal.BEGIN_GROUP, 0);
162162
add(field.dimensionType(), 0, field);
163163
addAllFields(field.groupFields());
164-
addFieldSignal(field, Signal.END_GROUP);
164+
addFieldSignal(field, Signal.END_GROUP, 0);
165165
}
166166
else if (type instanceof CompositeType && field.isVariableLength())
167167
{
168-
addFieldSignal(field, Signal.BEGIN_VAR_DATA);
168+
addFieldSignal(field, Signal.BEGIN_VAR_DATA, 0);
169169
add((CompositeType)type, field.computedOffset(), field);
170-
addFieldSignal(field, Signal.END_VAR_DATA);
170+
addFieldSignal(field, Signal.END_VAR_DATA, 0);
171171
}
172172
else
173173
{
174-
addFieldSignal(field, Signal.BEGIN_FIELD);
174+
final int typeSinceVersion = type.sinceVersion();
175+
176+
addFieldSignal(field, Signal.BEGIN_FIELD, typeSinceVersion);
175177

176178
if (type instanceof EncodedDataType)
177179
{
@@ -194,7 +196,7 @@ else if (type instanceof SetType)
194196
throw new IllegalStateException("Unknown type: " + type);
195197
}
196198

197-
addFieldSignal(field, Signal.END_FIELD);
199+
addFieldSignal(field, Signal.END_FIELD, typeSinceVersion);
198200
}
199201
}
200202
}

0 commit comments

Comments
 (0)