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

Declaring an enum const before the enum skips the value #1476

Closed
matt2e opened this issue May 14, 2024 · 0 comments · Fixed by #1493
Closed

Declaring an enum const before the enum skips the value #1476

matt2e opened this issue May 14, 2024 · 0 comments · Fixed by #1493
Assignees

Comments

@matt2e
Copy link
Collaborator

matt2e commented May 14, 2024

Module code

const (
	Onboarded UserState = "onboarded"
)

//ftl:enum
type UserState string

const (
	Registered UserState = "registered"
	Active     UserState = "active"
	Inactive   UserState = "inactive"
)

Expected vs actual schema:

enum UserState: String {
  // 🛑 Not included: Onboarded = "onboarded"
  Registered = "registered"
  Active = "active"
  Inactive = "inactive"
}
@matt2e matt2e self-assigned this May 14, 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.

1 participant