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

use the resolved value of const arguments in propagated annotation arguments #940

Merged
merged 1 commit into from
Mar 28, 2024

Commits on Mar 28, 2024

  1. use the resolved value of const arguments in propagated annotation …

    …arguments
    
    We have a good deal of logic around parsing out the primitive values of `const`
    parameters, but that logic is not recursive.
    So, if a `const` references another `const` in its initializer, we wound up
    just copying the text of that initializer into the generated annotations,
    as though it's just a String.
    This problem was isolated to the PSI side of parsing,
    since the Descriptor APIs are able to parse out the final, primitive value.
    Our type resolution logic always defaults to the PSI models.
    
    Now, when we need to parse out the primitive values from a `PropertyReference`,
    we first try to resolve the Descriptor version with a `PropertyDescriptor`.
    That isn't possible if the annotation is referencing a `const`
    property that was generated in the same round of compilation.
    In that event, the parsing will fall back to the PSI models.
    Anvil doesn't actually generate a `const`
    and then use it in an annotation, so this seems like a reasonable compromise.
    
    fixes #938
    RBusarow committed Mar 28, 2024
    Configuration menu
    Copy the full SHA
    1741c56 View commit details
    Browse the repository at this point in the history