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

Sync with the stable documentation branch #19828

Open
wants to merge 426 commits into
base: main
Choose a base branch
from

Conversation

github-actions[bot]
Copy link
Contributor

This pull request is syncing the main with changes from language-reference-stable.

It was created automatically after 1eac8fb by @Kordyjan

Kordyjan and others added 30 commits August 22, 2023 13:21
Previously, we rejected the case where a symbol of a self type selection
was private if was not of the enclosing class. But that symbol could shadow
a non-private symbol in a base class, so have to treat that case as well.

Fixes #18631
Reverts #16849 on the LTS line.

Introducing new experimental overload with fewer arguments is breaking
source compatibility.

Fixes #18414
Also fix typos in older changelogs
`-source future` is still required as of 3.3 LTS.
Package objects are not deprecated in Scala 3.3.1 yet.
Package objects are not deprecated in Scala 3.3.1 yet.
The documentation gives incorrect Scala versions for the transitions.
Mainly fixed indentation
Mainly fixed indentation
The documentation gives incorrect Scala versions for the transitions.
bishabosha and others added 30 commits July 17, 2024 12:24
…ive" in 3.5.0 (#21266)

Reverts #19761 in 3.5.0-RC6 as discussed in #21258 and accepted by the
core compiler team.
Before the changes, if
`isAsGoodValueType` was called with an extension and a given conversion,
it would prefer the conversion over the extension,
because only the former yielded true in `isGiven`.

Which contradicted the logic from searchImplicit which
preferred extension over conversions for member selection.
We now use a left-biased scheme, as follows.

From 3.6 on:

 - A given x: X is better than a given or implicit y: Y if y can be instantiated/widened to X.
 - An implicit x: X is better than a given or implicit y: Y if y can be instantiated to a supertype of X.
 - Use owner score for givens as a tie breaker if after all other tests we still have an ambiguity.

This is not transitive, so we need a separate scheme to work around that.

Other change:

 - Drop special handling of NotGiven in prioritization. The previous logic pretended to do so,
   but was ineffective.
We only have transitivity between givens or between implicits. To cope with that

 - We tank first all implicits, giving a best implicit search result.
 - Then we rank all givens startign with the implicit result. If there is
   a given that is better than the best implicit, the best given will be chosen.
   Otherwise we will stick with the best implicit.
Warnings from 3.6, change in 3.7. This is one version later than
originally planned.
Make the wording of a priority change warning message stable under different orders of eligibles.
We now always report the previously chosen alternative first and the new one second.

Note: We can still get ambiguities by fallging different pairs of alternatives depending on initial order.
On the final result, compared with all the ambiguous candidates we are trying
to recover from. We should still use `disambiguate = false` when filtering the
`pending` candidates for the purpose of warnings, as in the other cases.

Before the changes, it was possible for an ambiguous SearchFailure
to be healed by a candidate which was considered better (possibly only) under
a prioritization scheme different from the current one.

As an optimization, we can avoid redoing compareAlternatives in versions which
could have only used the new prioritization scheme to begin with.

Also restores behaviour avoiding false positive warnings.
Specifically, in cases where we could report a change in prioritization,
despite having not yet done `tryImplicit` on the alternative,
i.e. it was only compared as part of an early filtering

See #21045 for related changes
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.