Skip to content

fix: escape $unknown in generated enum toJson error message#455

Merged
Carapacik merged 1 commit into
Carapacik:mainfrom
JoshStrobl:fix/enum-tojson-unknown-interpolation
Apr 21, 2026
Merged

fix: escape $unknown in generated enum toJson error message#455
Carapacik merged 1 commit into
Carapacik:mainfrom
JoshStrobl:fix/enum-tojson-unknown-interpolation

Conversation

@JoshStrobl
Copy link
Copy Markdown

The generated toJson() method for enums produced a string literal '...for $unknown or @jsonvalue(null)...' inside a non-raw Dart string. Dart then interpreted $unknown as variable interpolation of unknown, which does not exist in scope, breaking compilation of every generated enum file when enums_to_json: true.

Escape the dollar sign in the template so the generated file contains $unknown (a literal dollar followed by "unknown"), compiling correctly regardless of the unknown_enum_value setting.

Fixes #454

The generated toJson() method for enums produced a string literal
'...for $unknown or @jsonvalue(null)...' inside a non-raw Dart string.
Dart then interpreted $unknown as variable interpolation of `unknown`,
which does not exist in scope, breaking compilation of every generated
enum file when enums_to_json: true.

Escape the dollar sign in the template so the generated file contains
\$unknown (a literal dollar followed by "unknown"), compiling correctly
regardless of the unknown_enum_value setting.

Fixes Carapacik#454
Copilot AI review requested due to automatic review settings April 20, 2026 13:21
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes Dart enum codegen when enums_to_json: true by ensuring the generated toJson() error message contains a literal $unknown (instead of triggering Dart string interpolation that breaks compilation). This addresses issue #454.

Changes:

  • Escape the dollar sign in the enum toJson() template so generated Dart code contains \$unknown.
  • Update generator golden expectations to match the new escaped output for multiple enum scenarios.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
swagger_parser/lib/src/generator/templates/dart_enum_dto_template.dart Updates enum toJson() template to emit \$unknown safely in generated Dart string literals.
swagger_parser/test/generator/data_classes_test.dart Adjusts expected generated enum output to assert the escaped \$unknown text in toJson() error messages.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Carapacik Carapacik merged commit 3b027d9 into Carapacik:main Apr 21, 2026
5 of 6 checks passed
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 this pull request may close these issues.

Generated toJson() fails to compile when unknown_enum_value: false and enums_to_json: true

3 participants