Skip to content

Clarify that .match selectors are not declarations #750

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

Merged
merged 2 commits into from
Mar 25, 2024

Conversation

eemeli
Copy link
Collaborator

@eemeli eemeli commented Mar 25, 2024

Closes #748

Adds a clarifying note about .match not acting as a declaration and updates misleading examples.

@eemeli eemeli added fast-track Editorial change permitted to use fast-track merge rules formatting Issue pertains to the formatting section of the spec labels Mar 25, 2024
@eemeli eemeli added this to the Technical Preview (CLDR v45) milestone Mar 25, 2024
@aphillips aphillips added the LDML45 LDML45 Release (Tech Preview) label Mar 25, 2024
Co-authored-by: Addison Phillips <[email protected]>
@eemeli eemeli requested a review from aphillips March 25, 2024 20:41
Copy link
Collaborator

@catamorphism catamorphism left a comment

Choose a reason for hiding this comment

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

Feel free to use all or any part of my suggested text, or ignore it -- up to your discretion.

Comment on lines +492 to +497
> [!NOTE]
> A _selector_ is not a _declaration_.
> Even when the same _function_ can be used for both formatting and selection
> of a given _operand_
> the _annotation_ that appears in a _selector_ has no effect on subsequent
> _selectors_ nor on the formatting used in _placeholders_.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
> [!NOTE]
> A _selector_ is not a _declaration_.
> Even when the same _function_ can be used for both formatting and selection
> of a given _operand_
> the _annotation_ that appears in a _selector_ has no effect on subsequent
> _selectors_ nor on the formatting used in _placeholders_.
> [!NOTE]
> _Expressions_, including _expressions_ that appear as _selectors_,
> have no side effects and are not _declarations_.
> That is, they do not introduce or override _variable_ names.
> This means that the _annotation_ of a _variable_ in a _selector_
> does not change what is bound to the _variable_,
> even if the same _function_ can be used for both formatting and selection
> of a given _operand_.
> The meaning of a _variable_ reference that occurs within a _variant_
> depends only on the explicit or implicit _declaration_ of that _variable_.

Just a suggestion. I think this text is difficult to understand outside the context of the discussions we've been having, and without an example. The same might be true of my suggested text. I guess if it's confusing, people will ask about it during the tech preview feedback period.

Copy link
Member

Choose a reason for hiding this comment

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

The right hand size of a .local is an expression, so your suggestion might be confusing from that respect?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Doesn't seem like it to me. An expression is not a declaration; it can appear in a declaration, but not every term that an expression can appear in is a declaration. ("Term" = "subtree of the data model".)

Alternately, the text could begin with something like "Only a .local or an .input declaration can change the meaning of a variable." Though this isn't quite true, as free variables introduce what we call "implicit declarations" someplace. A .match can't contain declarations (not even implicit declarations, since the only place where an "implicit declaration" makes sense is in a context where further names can be introduced) so it's clear from that that nothing within a .match changes the meaning of any variable name.

Every phrasing I can think of is made more complicated by implicit declarations, though.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I find this suggested text harder to parse than the current succinct text.

We already have the whole surrounding formatting.md which effectively says that same thing that the note does; this is intended to clarify the situation wrt. selectors specifically, and going into details and explanations here doesn't really help with that.

Copy link
Member

Choose a reason for hiding this comment

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

@catamorphism Would you object to my merging the text as is? We're definitely coming back to the whole "resolved value" space later 😄

Copy link
Collaborator

Choose a reason for hiding this comment

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

@aphillips I don't object!

Copy link
Member

Choose a reason for hiding this comment

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

Thanks. Merging now... the end of the 45 train is coming 🚄

@aphillips aphillips merged commit 09a8116 into main Mar 25, 2024
@aphillips aphillips deleted the match-does-not-declare branch March 25, 2024 23:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fast-track Editorial change permitted to use fast-track merge rules formatting Issue pertains to the formatting section of the spec LDML45 LDML45 Release (Tech Preview)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Make .match explictly a non-declaration
3 participants