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

Replace immutable and mutable HashSet and HashMap with the legacy Scala 2.12 implementations #125

Open
wants to merge 15 commits into
base: 2.13.x
Choose a base branch
from

Conversation

retronym
Copy link
Owner

@retronym retronym commented Aug 9, 2024

Creating a stepping stone for a large 2.12 to 2.13 migration.

@retronym retronym force-pushed the legacy-hash-map-set branch from b501cfe to 3397160 Compare August 12, 2024 06:16
@retronym retronym changed the title Replace CHAMP HashSet and HashMap with the legacy Scala 2.12 implementations Replace immutable and mutable HashSet and HashMap with the legacy Scala 2.12 implementations Sep 10, 2024
retronym and others added 3 commits September 18, 2024 12:18
 - Special case result sizes of 0-4 and avoid mutable.HashMap allocation.
 - Fuse some lambdas into `object grouper`.

Forward port cdfcf96
In the example, `apply` is overloaded.

Overloading resolution uses `setSymbol` and `setType` once it has
selected a winner.

https://github.com/scala/scala/blob/v2.13.14/src/compiler/scala/tools/nsc/typechecker/Infer.scala#L1530

In the case of a `TypeApply` tree:
  - `setSymbol` delegates to the nested `Apply` tree
  - `setType` sets the type of the `TypeApply`

This means that the nested `Apply` tree keeps its OverloadedType.
This tripped up `fun.tpe.finalResultType.typeSymbol` in RefChecks (NoSymbol).

It's not obvious how to assign the right type to the `Apply` tree, so
I left it alone.
Emit the label def in a preceding statement to the user code, rather than wrapping it.

We can remove the workaround with `def canJump = !isAsync`,
which wasn't working for custom async implementations that
followed the patmat phase.
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.

2 participants