Skip to content
Permalink
main
Loading

Commits on Dec 4, 2021

  1. Merge pull request #4294 from sjrd/rename-master-slaves-to-controller…

    …-workers
    
    Rename master/slave to controller/worker in the testing infrastructure.
    sjrd committed Dec 4, 2021

Commits on Dec 3, 2021

  1. Merge pull request #4603 from sjrd/update-internal-docs-to-main-branch

    Adapt the internal documentation after the rename of the git branch.
    gzm0 committed Dec 3, 2021

Commits on Dec 1, 2021

  1. Rename master/slave to controller/worker in the testing infrastructure.

    This avoids the pair of words "master/slave", which should be
    avoided according to
    https://www.scala-lang.org/contribute/inclusive-language/
    
    The method `sbt.testing.Framework.slaveRunner` is not renamed,
    because doing so would break binary compatibility.
    
    In BinaryIncompatibilities, we merge `TestCommon` and
    `TestAdapter`. `TestCommon` used to be reused for the `test-bridge`
    artifact, but that one does not have any binary compatibility
    constraints anymore, so the distinction was artificial.
    sjrd committed Dec 1, 2021
  2. Set up MiMa checks for junit-runtime.

    We had somehow forgotten to set it up before.
    sjrd committed Dec 1, 2021
  3. Merge pull request #4602 from sjrd/fix-notype-deser-hack-for-scala-3.0.0

    Fix #4601: Patch the type of Labeled nodes in the 1.5 deser hack.
    sjrd committed Dec 1, 2021

Commits on Nov 30, 2021

  1. Fix #4601: Patch the type of Labeled nodes in the 1.5 deser hack.

    The deserialization hack introduced in
    3601272 sometimes created invalid
    IR from valid IR. This happened when a Labeled block in statement
    position was typed with something else than `NoType`, and contained
    an `If` or `Match` node of that same type. The deserialization hack
    would change the type of the `If` or `Match` to `NoType`, but not
    the type of the enclosing `Labeled` node. This pattern of IR is
    produced by Scala 3.0.x, which emits IR version 1.5.
    
    We fix this issue by adding `Labeled` to the list of nodes whose
    type is patched by the hack. As written in the elaborated comment,
    this is the last of the 4 nodes that are control structures whose
    type is explicitly specified. Only those need to be adapted,
    because:
    
    1. The other control structures directly get their type from their
       children, and are therefore valid by construction.
    2. Non-control structures do not transfer their "status" of being
       in expression position or in statement position.
    
    This is unfortunately not tested.We would have to either load IR
    generated by Scala 3.0.0, or write hand-coded IR v1.5 and load it
    back in the linker tests. We do not have the required
    infrastructure for either of these solutions.
    sjrd committed Nov 30, 2021
  2. Merge pull request #4594 from gzm0/elidable-module-accessor

    Fix #4593: Track askers of hasElidableModuleAccessor
    sjrd committed Nov 30, 2021

Commits on Nov 28, 2021

  1. Initialize IncOptimizer classes in constructor

    This does not force the caller to call an "init" method just after
    calling the constructor.
    gzm0 committed Nov 28, 2021
  2. Update fields in walkForChanges / setupAfterCreation

    This allows us to get rid of one of the matches on this in
    `updateWith`.
    gzm0 committed Nov 28, 2021

Commits on Nov 22, 2021

  1. Merge pull request #4597 from sjrd/allow-hashbang-in-js-header

    Fix #4596: Allow hashbang comments at the beginning of the jsHeader.
    sjrd committed Nov 22, 2021
  2. Fix #4596: Allow hashbang comments at the beginning of the jsHeader.

    There is a Stage 3 proposal for ECMAScript to officially allow
    hashbang comments at the very beginning of source files (scripts
    and modules):
    https://github.com/tc39/proposal-hashbang
    
    According to the proposal, they are to be true comments from the
    point of view of ECMAScript, so it makes sense to accept them in
    `jsHeader`. The current spec text specifies that, after the
    starting `#!`, they can contain the same characters as single-line
    comments starting with `//`.
    sjrd committed Nov 22, 2021

Commits on Nov 17, 2021

  1. Merge pull request #4595 from sjrd/redirect-jsenvs-to-system-out-err

    Fix #4560: Explicitly redirect JS envs outputs to System.{out,err}.
    sjrd committed Nov 17, 2021
  2. Fix #4560: Explicitly redirect JS envs outputs to System.{out,err}.

    When running in server mode, sbt installs alternative streams for
    `System.out` and `System.err`. However, those alternatives are not
    guaranteed to be used when launching JSEnvs with `inheritOut` and
    `inheritErr` set to `true`. In particular, a JSEnv that spawns
    separate processes with the inheritIO mode will bypass
    redirections set up with `System.set{Out,Err}`.
    
    We now explicitly redirect the outputs of JS envs to `System.out`
    and `System.err`, so that they always take the alternative streams
    set up by sbt into account.
    sjrd committed Nov 17, 2021

Commits on Nov 13, 2021

  1. Merge pull request #4592 from sjrd/add-scala-steward-release-step

    Add a release step to unleash Scala Steward after announcing.
    gzm0 committed Nov 13, 2021

Commits on Nov 7, 2021

  1. Merge pull request #4586 from sjrd/jsimport-default-name

    Fix #4069: Make `@JSImport`'s second arg default to the annotatee's name.
    gzm0 committed Nov 7, 2021

Commits on Nov 3, 2021

  1. Allow @JSGlobal without explicit names inside Scala objects.

    Previously, only `@js.native @JSGlobal` classes and objects at the
    top-level could have `@JSGlobal` without explicit name. Those
    inside Scala objects, as well as `val`s and `def`s (necessarily
    in Scala objects in Scala 2) required an explicit name.
    
    With this commit, we allow them to have `@JSGlobal` without an
    explicit name. The name of the global variable is inferred from
    the simple name of the annotatee.
    sjrd committed Nov 3, 2021
  2. Require an explicit name in @JSGlobal for 'apply' and setter names.

    This is a backward source breaking change.
    sjrd committed Nov 3, 2021
  3. Bring the documentation of @JSImport up to date.

    - Do not mention `jsDependencies` anymore.
    - Use "declaration" instead of "class or object", as `@JSImport`
      can be used to annotate `val`s and `def`s now.
    sjrd committed Nov 3, 2021
  4. Merge pull request #4590 from sjrd/upgrade-scalajs-js-envs

    Upgrade to scalajs-js-envs/scalajs-env-nodejs v1.2.1.
    sjrd committed Nov 3, 2021
  5. Upgrade to scalajs-js-envs/scalajs-env-nodejs v1.2.1.

    To make Scala.js works on Node.js 17 out of the box.
    sjrd committed Nov 3, 2021

Commits on Oct 23, 2021

  1. Merge pull request #4587 from sjrd/new-target-for-classes

    Fix most of #2638: Access new.target in JS class constructors.
    gzm0 committed Oct 23, 2021
  2. Merge pull request #4562 from gzm0/optimizer-cleanup

    Various cleanups in the Inc Optimizer
    gzm0 committed Oct 23, 2021

Commits on Oct 22, 2021

  1. Use ask pattern where applicable

    - Makes it harder to read data without registration
    - Same pattern as in Emitter / KnowledgeGuardian
    - Get's rid of public myInterface
    gzm0 committed Oct 22, 2021
  2. Force static call targets to exist

    If they do not, it should have been caught in the analysis phase.
    gzm0 committed Oct 22, 2021
  3. Merge staticLikes into interfaces

    - Properly cleans up unused interfaces in incremental runs.
    - Removes a top-level map.
    - Makes data structure less complicated.
    gzm0 committed Oct 22, 2021
  4. Do not lazily create interfaces in the IncOptimizer

    Since d0f2a46, where we retain
    abstract methods in the analyzer, this is not necessary anymore.
    gzm0 committed Oct 22, 2021
  5. Fix most of #2638: Access new.target in JS class constructors.

    This commit introduces a new primitive method `js.new.target`,
    which is the direct equivalent of JavaScript's `new.target`
    meta-property when used in a class constructor.
    
    It is only legal when used directly in the constructor of a
    non-native JS class (or object), including:
    
    * in a statement,
    * in the right-hand-side of a `val` or `var`,
    * in a parameter to the super constructor,
    * or in a secondary constructor.
    
    It is never legal anywhere else, in particular:
    
    * outside the constructor of a non-native JS class,
    * in the right-hand-side of a `lazy val` or a `def`, nor
    * in a lambda or by-name parameter.
    
    In JavaScript, `new.target` can also be meaningfully used in a
    non-arrow `function`. That use case is not addressed by this
    commit at the Scala.js language level. The IR is however already
    capable of dealing with the `JSNewTarget()` node in the body of
    a non-arrow `Closure`.
    
    When trying to link a `new.target` when targeting ES 5.1 results
    in a linking error, as there is no reliable translation of
    `new.target` to ES 5.1.
    sjrd committed Oct 22, 2021

Commits on Oct 18, 2021

  1. Merge pull request #4585 from sjrd/fix-default-param-anyval-overloaded

    Fix #4583: Ignore default params that are AnyVal `$extension` methods.
    sjrd committed Oct 18, 2021
Older