thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James E. King III (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (THRIFT-4899) Generated TypeScript declarations incorrectly references types when there is more than 1 include
Date Mon, 01 Jul 2019 18:10:00 GMT

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

James E. King III updated THRIFT-4899:
--------------------------------------
    Component/s:     (was: JavaScript - Compiler)
                 Java - Compiler

> Generated TypeScript declarations incorrectly references types when there is more than
1 include
> ------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-4899
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4899
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Compiler
>    Affects Versions: 0.13.0
>            Reporter: Phil Price
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When a service or type definition has multiple includes that are referenced in method
parameters or responses the TypeScript generator will generated code that will fail to compile
with tsc. This is due to "external" types not being referenced from their import; an assumption
is made that they are defined the the default ttypes for the service. 
> ----
> With the following input
> {code:java}
> import "Other.thrift"
> struct MyStruct {
>      1:Other.OtherType field;
> }
> service MyService {
>      Other.OtherResponse magic(1:Other.OtherRequest arg)
> }{code}
> The following generated TypeScript declaration is generated with 0.13.0 which will fail
to compile with an invocation of "tsc *.d.ts" 
> {code:java}
> // foo_types.d.ts
> import other_types = require("./other"); 
> declare class MyStruct {
>      public field: OtherType; // !!! Compile failure, unknown type OtherType
> }
> // foo_service.d.ts
> import other_types = require("./other"); 
> class MyService {
>      public magic(request: OtherRequest) : Promise<OtherResponse> // !!! Compile
failure, unknown type OtherRequest, OtherResponse
> }
> {code}
> The expected output *should* be:
> {code:java}
> // foo_types.d.ts
> import other_types = require("./other"); 
> declare class MyStruct {
>      public field: other_types.OtherType; 
> }
> // foo_service.d.ts
> import other_types = require("./other"); 
> class MyService {
>      public magic(request: other_types.OtherRequest) : Promise<other_types.OtherResponse>

> }
> {code}
> I have a fix for this with the following PR [https://github.com/apache/thrift/pull/1820]
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message