[ 
https://issues.apache.org/jira/browse/THRIFT-4497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16363499#comment-16363499
 ] 

ASF GitHub Bot commented on THRIFT-4497:
----------------------------------------

GitHub user dhull opened a pull request:

    https://github.com/apache/thrift/pull/1495

    THRIFT-4497: Use map() field type for Erlang type for map struct fields

    The Thrift Erlang code generator previously generated fields with the `#{}` 
Erlang type for maps fields.  In the Erlang type specification languages, 
however, `#{}` specifically means an empty map.  This commit fixes the code to 
emit `map()` instead, which means the maps keys and values may be of any type.
    
    It would be possible to emit a field type such as `${keytype() => 
maptype()}`, but this commit does not do that.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dhull/thrift thrift-4497-erlang-maps

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/thrift/pull/1495.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1495
    
----
commit 67f7f6343f71da75b8f2257a8bb63d2ebd48dc82
Author: David Hull <david.hull@...>
Date:   2018-02-14T03:41:35Z

    THRIFT-4497: Use `map()` field type for Erlang type for map struct fields.
    
    The Thrift Erlang code generator previously generated fields with the
    `#{}` Erlang type for maps fields.  In the Erlang type specification
    languages, however, `#{}` specifically means an empty map.  This commit
    fixes the code to emit `map()` instead, which means the maps keys and
    values may be of any type.
    
    It would be possible to emit a field type such as
    `${keytype() => maptype()}`, but this commit does not do that.

----


> Erlang records should use map() for map type
> --------------------------------------------
>
>                 Key: THRIFT-4497
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4497
>             Project: Thrift
>          Issue Type: Bug
>          Components: Erlang - Compiler
>    Affects Versions: 0.11.0
>            Reporter: David Hull
>            Assignee: David Hull
>            Priority: Major
>
> When the Thrift Erlang code generator is given the "maps" option, it 
> generates records with #{} as the field type. However #{} is the type for an 
> empty map. The Erlang [Types and Function 
> Specifications|http://erlang.org/doc/reference_manual/typespec.html#id79546] 
> says:
> {quote}
> Notice that the syntactic representation of {{map()}} is {{#\{any() => 
> any()\}}} (or {{#\{_ => _\}}}), not #\{ \}. The notation #\{ \} specifies the 
> singleton type for the empty map.
> {quote}



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

Reply via email to