[ 
https://issues.apache.org/jira/browse/THRIFT-3413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jens Geyer updated THRIFT-3413:
-------------------------------
    Description: 
Given the following 2 thrift simple thrift files

{code:title=base.thrift}

namespace go base

/** Common context for a request containing information about the requester. */
struct RequestContext {
    /** ID */
    1:required i64 ID
}

exception WError {
    /** Identifying code for the error */
    1:i64 code,

    /** Descriptive error message */
    2:string message,
}

service BaseService {
    /** A simple ping to see if the service is alive */
    void ping() throws (1:WError err)
}
{code}



{code:title=extended.thrift}

namespace go extended

include "base.thrift"

struct Extended {
    1:required i64 ID
}

service ExtendedService extends base.BaseService{
    /**
    Creates the requested Translation. Returns the representation of the
    created Translation with a generated ID and the userId attached.
    */
    Extended createExtended(1:base.RequestContext rc, 2:Extended ex) throws 
(1:base.WError err)
}

{code}

This is a very simple service extending another service.  When using thrift 
(0.9.3, 1.0.0-dev both tested), there is an generation problem that requires 
fixing by hand.


Running this for generation
{code}
thrift -r -gen go:package_prefix=github.com/myrepo/gen-go/ extended.thrift
{code}

if I then change directories and run a go build, I get the following error. 
{code}
$> cd gen-go/extended/extended_service-remote
$> go build
# github.com/myrepo/gen-go/extended/extended_service-remote
./extended_service-remote.go:134: undefined: extended.NewRequestContext
{code}

This is easily reproducible with these steps. 



  was:
Given the following 2 thrift simple thrift files

----------------begin base.thrift --------------------

namespace go base

/** Common context for a request containing information about the requester. */
struct RequestContext {
    /** ID */
    1:required i64 ID
}

exception WError {
    /** Identifying code for the error */
    1:i64 code,

    /** Descriptive error message */
    2:string message,
}

service BaseService {
    /** A simple ping to see if the service is alive */
    void ping() throws (1:WError err)
}
---------------end base.thrift---------------------



---------------begin extended.thrift--------------------

namespace go extended

include "base.thrift"

struct Extended {
    1:required i64 ID
}

service ExtendedService extends base.BaseService{
    /**
    Creates the requested Translation. Returns the representation of the
    created Translation with a generated ID and the userId attached.
    */
    Extended createExtended(1:base.RequestContext rc, 2:Extended ex) throws 
(1:base.WError err)
}
---------------end extended.thrift--------------------

This is a very simple service extending another service.  When using thrift 
(0.9.3, 1.0.0-dev both tested), there is an generation problem that requires 
fixing by hand.


Running this for generation
thrift -r -gen go:package_prefix=github.com/myrepo/gen-go/ extended.thrift

if I then change directories and run a go build, I get the following error. 

$> cd gen-go/extended/extended_service-remote
$> go build
# github.com/myrepo/gen-go/extended/extended_service-remote
./extended_service-remote.go:134: undefined: extended.NewRequestContext

This is easily reproducible with these steps. 




> Thrift code generation bug in Go when extending service
> -------------------------------------------------------
>
>                 Key: THRIFT-3413
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3413
>             Project: Thrift
>          Issue Type: Bug
>            Reporter: Ryan Seltzer
>
> Given the following 2 thrift simple thrift files
> {code:title=base.thrift}
> namespace go base
> /** Common context for a request containing information about the requester. 
> */
> struct RequestContext {
>     /** ID */
>     1:required i64 ID
> }
> exception WError {
>     /** Identifying code for the error */
>     1:i64 code,
>     /** Descriptive error message */
>     2:string message,
> }
> service BaseService {
>     /** A simple ping to see if the service is alive */
>     void ping() throws (1:WError err)
> }
> {code}
> {code:title=extended.thrift}
> namespace go extended
> include "base.thrift"
> struct Extended {
>     1:required i64 ID
> }
> service ExtendedService extends base.BaseService{
>     /**
>     Creates the requested Translation. Returns the representation of the
>     created Translation with a generated ID and the userId attached.
>     */
>     Extended createExtended(1:base.RequestContext rc, 2:Extended ex) throws 
> (1:base.WError err)
> }
> {code}
> This is a very simple service extending another service.  When using thrift 
> (0.9.3, 1.0.0-dev both tested), there is an generation problem that requires 
> fixing by hand.
> Running this for generation
> {code}
> thrift -r -gen go:package_prefix=github.com/myrepo/gen-go/ extended.thrift
> {code}
> if I then change directories and run a go build, I get the following error. 
> {code}
> $> cd gen-go/extended/extended_service-remote
> $> go build
> # github.com/myrepo/gen-go/extended/extended_service-remote
> ./extended_service-remote.go:134: undefined: extended.NewRequestContext
> {code}
> This is easily reproducible with these steps. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to