You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jens Geyer (Jira)" <ji...@apache.org> on 2023/02/21 22:00:00 UTC
[jira] [Resolved] (THRIFT-5685) Compiler generates wrong go code for forward defined types in optional fields
[ https://issues.apache.org/jira/browse/THRIFT-5685?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jens Geyer resolved THRIFT-5685.
--------------------------------
Resolution: Fixed
> Compiler generates wrong go code for forward defined types in optional fields
> -----------------------------------------------------------------------------
>
> Key: THRIFT-5685
> URL: https://issues.apache.org/jira/browse/THRIFT-5685
> Project: Thrift
> Issue Type: Bug
> Components: Go - Compiler
> Affects Versions: 0.18.0
> Reporter: Yuxuan Wang
> Assignee: Yuxuan Wang
> Priority: Major
> Fix For: 0.18.1
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> This is a bug introduced by the fix of THRIFT-5601.
> Given this thrift file:
> {code:java}
> struct Bar {
> 1: optional Foo bar
> }
> struct Foo {
> 1: optional i64 foo
> }
> {code}
> 0.18.0 with b39370ec3bc96d2 reverted will generate the following go code (expected):
> {code:go}
> ...
> var Bar_Bar_DEFAULT *Foo
> func (p *Bar) GetBar() *Foo {
> if !p.IsSetBar() {
> return Bar_Bar_DEFAULT
> }
> return p.Bar
> }
> ...
> {code}
> while 0.18.0 generates:
> {code:go}
> ...
> var Bar_Bar_DEFAULT Foo
> func (p *Bar) GetBar() Foo {
> if !p.IsSetBar() {
> return Bar_Bar_DEFAULT
> }
> return *p.Bar
> }
> ...
> {code}
> This makes usages like bar.GetBar().GetFoo() no longer compiles because GetBar now returns non-pointer type.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)