Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for type aliases #1238

Closed
alecthomas opened this issue Apr 12, 2024 · 0 comments · Fixed by #1493
Closed

Add support for type aliases #1238

alecthomas opened this issue Apr 12, 2024 · 0 comments · Fixed by #1493
Assignees

Comments

@alecthomas
Copy link
Collaborator

alecthomas commented Apr 12, 2024

For type safety it's often convenient to be able to have distinct types that alias an existing type such as strings or ints.

eg.

type UserID int

I don't know how/if these are representable in Kotlin?

@github-actions github-actions bot added the triage Issue needs triaging label Apr 12, 2024
@deniseli deniseli removed the triage Issue needs triaging label Apr 12, 2024
@alecthomas alecthomas added the next Work that will be be picked up next label May 13, 2024
@matt2e matt2e self-assigned this May 13, 2024
@github-actions github-actions bot removed the next Work that will be be picked up next label May 13, 2024
@matt2e matt2e linked a pull request May 15, 2024 that will close this issue
matt2e added a commit that referenced this issue May 16, 2024
#1238
Adds the ability to declare type aliases in modules
```
//ftl:typealias
type UserId string
```

There is a lot of overlap between typealiases and enums. They both
redefine an existing type as a new type, and therefore need to make sure
our schema parsing does not skip this defined type by looking at the
underlying type.
There were also issues if implicit exports, enum cases (and more?) were
encountered in the ast tree before we found the typealias or enum
definition.
This PR solves that by doing an initial pass just to find all typealias
and enum declarations for the module and then doing the normal pass.

Previously typealiases were allowed without any declaration but they
would just fall back to the underlying type.
This PR makes this an error as we do not know if this type should be an
enum or a type alias. We may want to discuss this more.

fixes #1475
#1476
#1477
#1492
#1449
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants