You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Go to the issue for the initial context. What I did is a little bit hack-y, but it seemed like the simplest way to prevent this panic without making significant changes to how we monomorphize.
Format strings are the only comptime type which we lower into a different type (in this case a string literal). I changed the Value::FormatString case in into_hir_expression to return a HirLiteral::FmtStr in the format that the type is expected to be. This required creating a new placeholder expression. In this case I used a string with a single whitespace character as this required minimal changes and does not change the functionality of fmt strings which are entirely used for logging.
I added some global fmt strings to the debug_logs test:
These prints:
We do not currently allow nested format strings. Having this extra whitespace may cause some difficulty if we ever activate the ability to have nested format strings.
Documentation*
Check one:
No documentation needed.
Documentation included in this PR.
[For Experimental Features] Documentation to be submitted in a separate PR.
PR Checklist*
I have tested the changes locally.
I have formatted the changes with Prettier and/or cargo fmt on default settings.
Going to close this PR as the correct solution is to accurately monomorphize the functions based off of the new lowered type. This hack is insufficient anyway for the general use case.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Problem*
Resolves #6990
Summary*
Go to the issue for the initial context. What I did is a little bit hack-y, but it seemed like the simplest way to prevent this panic without making significant changes to how we monomorphize.
Format strings are the only comptime type which we lower into a different type (in this case a string literal). I changed the
Value::FormatString
case ininto_hir_expression
to return aHirLiteral::FmtStr
in the format that the type is expected to be. This required creating a new placeholder expression. In this case I used a string with a single whitespace character as this required minimal changes and does not change the functionality of fmt strings which are entirely used for logging.I added some global fmt strings to the
debug_logs
test:These prints:
Give this output:
Additional Context
We do not currently allow nested format strings. Having this extra whitespace may cause some difficulty if we ever activate the ability to have nested format strings.
Documentation*
Check one:
PR Checklist*
cargo fmt
on default settings.