Skip to content

Commit 1525313

Browse files
authored
[Go] Fix tokens passed to generateComposite (#849) (#850)
* [Go] Fix tokens passed to generateComposite (#849) Too many tokens were passed to `generateComposite` causing weird errors like(#844 and #849). * [Go] Fix Group decoder style warning The `Decode` generator for groups would produce the following code: ``` for i, _ := range o.GroupName { ``` The `gofmt` tools suggest [simplify range expression](https://github.com/golang/tools/blob/master/internal/lsp/analysis/simplifyrange/simplifyrange.go#L23): ``` A range of the form: for x, _ = range v {...} will be simplified to: for x = range v {...} ``` This patch fixes that.
1 parent c8c280b commit 1525313

File tree

5 files changed

+57
-4
lines changed

5 files changed

+57
-4
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@ task generateGolangCodecsWithXSD(type: JavaExec) {
621621
'sbe-tool/src/test/resources/issue661.xml',
622622
'sbe-tool/src/test/resources/issue847.xml',
623623
'sbe-tool/src/test/resources/issue848.xml',
624+
'sbe-tool/src/test/resources/issue849.xml',
624625
'sbe-tool/src/test/resources/since-deprecated-test-schema.xml',
625626
'sbe-tool/src/test/resources/example-bigendian-test-schema.xml',
626627
'gocode/resources/example-composite.xml',

gocode/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ test: $(DEP)
7272
go install \
7373
;done))
7474
(export GOPATH=$(GOPATH) && \
75-
(for t in baseline-bigendian mktdata group_with_data group_with_data_extension composite_elements composite since-deprecated simple issue435 issue472 issue483 issue488 issue560 issue847 issue848; do \
75+
(for t in baseline-bigendian mktdata group_with_data group_with_data_extension composite_elements composite since-deprecated simple issue435 issue472 issue483 issue488 issue560 issue847 issue848 issue849; do \
7676
cd $(GOPATH)/src/$$t && \
7777
go build && \
7878
go fmt && \

gocode/src/issue849/issue849_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package issue849
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestNothing(t *testing.T) {
8+
// placeholder, really just looking for clean builds
9+
}

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/golang/GolangGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1305,7 +1305,7 @@ private int generateGroupEncodeDecode(
13051305
"\t\t\t%1$s.%2$s = make([]%3$s%2$s, %2$sNumInGroup)\n" +
13061306
"\t\t}\n" +
13071307
"\t\t%1$c.%2$s = %1$c.%2$s[:%2$sNumInGroup]\n" +
1308-
"\t\tfor i, _ := range %1$s.%2$s {\n" +
1308+
"\t\tfor i := range %1$s.%2$s {\n" +
13091309
"\t\t\tif err := %1$s.%2$s[i].Decode(_m, _r, actingVersion, uint(%4$sBlockLength)); err != nil {\n" +
13101310
"\t\t\t\treturn err\n" +
13111311
"\t\t\t}\n" +
@@ -2045,8 +2045,8 @@ private void generateTypeBodyComposite(
20452045

20462046
case BEGIN_COMPOSITE:
20472047
// recurse
2048-
generateComposite(tokens.subList(i, tokens.size()), typeName);
2049-
i += token.componentTokenCount() - 2;
2048+
generateComposite(tokens.subList(i, i + token.componentTokenCount()), typeName);
2049+
i += token.componentTokenCount() - 1;
20502050

20512051
sb.append("\t").append(propertyName)
20522052
.append(generateWhitespace(longest - propertyName.length() + 1))
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<sbe:messageSchema xmlns:sbe="http://fixprotocol.io/2016/sbe"
3+
package="issue849"
4+
id="1"
5+
version="0"
6+
semanticVersion="1.0"
7+
description="test case 849 20210512"
8+
byteOrder="littleEndian">
9+
<types>
10+
<composite name="Comp1" description="Comp1">
11+
<type name="abc" primitiveType="uint32"/>
12+
<type name="wxyz" primitiveType="uint32"/>
13+
</composite>
14+
<composite name="Comp2" description="Comp2">
15+
<type name="eenie" primitiveType="uint32"/>
16+
<ref name="c1" type="Comp1"/>
17+
<type name="meanie" primitiveType="uint32"/>
18+
</composite>
19+
<composite name="Comp3" description="Comp3">
20+
<type name="moe" primitiveType="uint32"/>
21+
<ref name="c2" type="Comp2"/>
22+
<type name="roe" primitiveType="uint32"/>
23+
</composite>
24+
<composite name="Comp4" description="Comp4">
25+
<type name="roe" primitiveType="uint32"/>
26+
</composite>
27+
<composite name="messageHeader" description="MH">
28+
<type name="blockLength" primitiveType="uint16"/>
29+
<type name="templateId" primitiveType="uint16"/>
30+
<type name="schemaId" primitiveType="uint16"/>
31+
<type name="version" primitiveType="uint16"/>
32+
<ref name="c1" type="Comp1"/>
33+
<type name="lmn" primitiveType="uint32"/>
34+
<ref name="c2" type="Comp2"/>
35+
<type name="opq" primitiveType="uint32"/>
36+
</composite>
37+
</types>
38+
<sbe:message name="barmsg" id="4">
39+
<field name="header" id="1" type="messageHeader"/>
40+
<field name="c3" id="2" type="Comp3"/>
41+
<field name="c4" id="3" type="Comp4"/>
42+
</sbe:message>
43+
</sbe:messageSchema>

0 commit comments

Comments
 (0)