Skip to content

Update markdown files for preprocessing purposes #13350

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

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs/docs/reference/changed-features.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "Other Changed Features"
type: chapter
num: 51
previous-page: /scala3/reference/other-new-features/type-test
next-page: /scala3/reference/changed-features/numeric-literals
---

The following pages document the features that have changed in Scala 3, compared to Scala 2.
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/compiler-plugins.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Changes in Compiler Plugins"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/compiler-plugins.html
type: section
num: 67
previous-page: /scala3/reference/changed-features/eta-expansion
next-page: /scala3/reference/changed-features/lazy-vals-init
---

Compiler plugins are supported by Dotty (and Scala 3) since 0.9. There are two notable changes
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/reference/changed-features/eta-expansion-spec.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: doc-page
layout: singlepage-overview
scala3: true
title: "Automatic Eta Expansion - More Details"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/eta-expansion-spec.html
---

## Motivation
Expand Down
10 changes: 6 additions & 4 deletions docs/docs/reference/changed-features/eta-expansion.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Automatic Eta Expansion"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/eta-expansion.html
type: section
num: 66
previous-page: /scala3/reference/changed-features/pattern-matching
next-page: /scala3/reference/changed-features/compiler-plugins
---

The conversion of _methods_ into _functions_ has been improved and happens automatically for methods with one or more parameters.
Expand Down Expand Up @@ -36,7 +38,7 @@ rather than `next _`.
The reason for excluding nullary methods from automatic eta expansion
is that Scala implicitly inserts the `()` argument, which would
conflict with eta expansion. Automatic `()` insertion is
[limited](../dropped-features/auto-apply.md) in Scala 3, but the fundamental ambiguity
[limited](../dropped-features/auto-apply.html) in Scala 3, but the fundamental ambiguity
remains.

[More details](eta-expansion-spec.md)
[More details](eta-expansion-spec.html)
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: doc-page
layout: singlepage-overview
scala3: true
title: "Implicit Conversions - More Details"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/implicit-conversions-spec.html
---

## Implementation
Expand Down Expand Up @@ -82,7 +82,7 @@ implicit val myConverter: Int => String = _.toString
implicit val myConverter: Conversion[Int, String] = _.toString
```

Note that implicit conversions are also affected by the [changes to implicit resolution](implicit-resolution.md) between Scala 2 and Scala 3.
Note that implicit conversions are also affected by the [changes to implicit resolution](implicit-resolution.html) between Scala 2 and Scala 3.

## Motivation for the changes

Expand All @@ -109,9 +109,9 @@ will report a type error, because `Map` isn't an instance of
Implicit values that are used as views should see their type changed to `Conversion`.

For the migration of implicit conversions that are affected by the
changes to implicit resolution, refer to the [Changes in Implicit Resolution](implicit-resolution.md) for more information.
changes to implicit resolution, refer to the [Changes in Implicit Resolution](implicit-resolution.html) for more information.

## Reference

For more information about implicit resolution, see [Changes in Implicit Resolution](implicit-resolution.md).
For more information about implicit resolution, see [Changes in Implicit Resolution](implicit-resolution.html).
Other details are available in [PR #2065](https://github.com/lampepfl/dotty/pull/2065).
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/implicit-conversions.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Implicit Conversions"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/implicit-conversions.html
type: section
num: 60
previous-page: /scala3/reference/changed-features/implicit-resolution
next-page: /scala3/reference/changed-features/overload-resolution
---

An _implicit conversion_, also called _view_, is a conversion that
Expand Down Expand Up @@ -61,4 +63,4 @@ implicitly[Ordering[A]] // Ok, will use the implicit conversion from
// `A` to `Int` and the `Ordering` for `Int`.
```

[More details](implicit-conversions-spec.md)
[More details](implicit-conversions-spec.html)
7 changes: 5 additions & 2 deletions docs/docs/reference/changed-features/implicit-resolution.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
---
layout: doc-page
title: "Changes in Implicit Resolution"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/implicit-resolution.html
type: section
num: 59
previous-page: /scala3/reference/changed-features/type-inference
next-page: /scala3/reference/changed-features/implicit-conversions
---

This section describes changes to the implicit resolution that apply both to the new `given`s and to the old-style `implicit`s in Scala 3.
Implicit resolution uses a new algorithm which caches implicit results
more aggressively for performance. There are also some changes that
Expand Down
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/imports.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Imports"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/imports.html
type: section
num: 56
previous-page: /scala3/reference/changed-features/wildcards
next-page: /scala3/reference/changed-features/type-checking
---

The syntax of wildcard and renaming imports (and exports) has changed.
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/reference/changed-features/interpolation-escapes.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: doc-page
layout: singlepage-overview
scala3: true
title: "Escapes in interpolations"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/interpolation-escapes.html
---

In Scala 2 there is no straightforward way to represent a single quote character `"` in a single quoted interpolation. A `\` character can't be used for that because interpolators themselves decide how to handle escaping, so the parser doesn't know whether the `"` should be escaped or used as a terminator.
Expand Down
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/lazy-vals-init.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: Lazy Vals initialization
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/lazy-vals-init.html
title: Lazy Vals Initialization
type: section
num: 68
previous-page: /scala3/reference/changed-features/compiler-plugins
next-page: /scala3/reference/changed-features/main-functions
---

Scala 3 implements [Version 6](https://docs.scala-lang.org/sips/improved-lazy-val-initialization.html#version-6---no-synchronization-on-this-and-concurrent-initialization-of-fields)
Expand Down
10 changes: 6 additions & 4 deletions docs/docs/reference/changed-features/main-functions.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Main Methods"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/main-functions.html
type: section
num: 69
previous-page: /scala3/reference/changed-features/lazy-vals-init
next-page: /scala3/reference/dropped-features
---

Scala 3 offers a new way to define programs that can be invoked from the command line:
Expand Down Expand Up @@ -57,7 +59,7 @@ The Scala compiler generates a program from a `@main` method `f` as follows:
- The class has a static method `main` with the usual signature. It takes an `Array[String]`
as argument and returns `Unit`.
- The generated `main` method calls method `f` with arguments converted using
methods in the [`scala.util.CommandLineParser`](https://dotty.epfl.ch/api/scala/util/CommandLineParser$.html) object.
methods in the [`scala.util.CommandLineParser`](https://scala-lang.org/api/3.x/scala/util/CommandLineParser$.html) object.

For instance, the `happyBirthDay` method above would generate additional code equivalent to the following class:

Expand Down Expand Up @@ -85,5 +87,5 @@ object happyBirthday extends App:
...
```

The previous functionality of `App`, which relied on the "magic" [`DelayedInit`](../dropped-features/delayed-init.md) trait, is no longer available. [`App`](https://dotty.epfl.ch/api/scala/App.html) still exists in limited form for now, but it does not support command line arguments and will be deprecated in the future. If programs need to cross-build
The previous functionality of `App`, which relied on the "magic" [`DelayedInit`]({% link _scala3-reference/dropped-features/delayed-init.md %}) trait, is no longer available. [`App`](https://scala-lang.org/api/3.x/scala/App.html) still exists in limited form for now, but it does not support command line arguments and will be deprecated in the future. If programs need to cross-build
between Scala 2 and Scala 3, it is recommended to use an explicit `main` method with an `Array[String]` argument instead.
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/match-syntax.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Match Expressions"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/match-syntax.html
type: section
num: 62
previous-page: /scala3/reference/changed-features/overload-resolution
next-page: /scala3/reference/changed-features/vararg-splices
---

The syntactical precedence of match expressions has been changed.
Expand Down Expand Up @@ -47,7 +49,7 @@ The syntactical precedence of match expressions has been changed.

The new syntax of match expressions is as follows.

```ebnf
```
InfixExpr ::= ...
| InfixExpr MatchClause
SimpleExpr ::= ...
Expand Down
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/numeric-literals.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Numeric Literals"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/numeric-literals.html
type: section
num: 52
previous-page: /scala3/reference/changed-features
next-page: /scala3/reference/changed-features/structural-types
---

[Document was moved](../experimental/numeric-literals.md)
10 changes: 6 additions & 4 deletions docs/docs/reference/changed-features/operators.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
---
layout: doc-page
title: "Rules for Operators"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/operators.html
type: section
num: 54
previous-page: /scala3/reference/changed-features/structural-types
next-page: /scala3/reference/changed-features/wildcards
---

The rules for infix operators have changed in some parts:

First, an alphanumeric method can be used as an infix operator only if its definition carries an `infix` modifier. Second, it is recommended (but not enforced) to
augment definitions of symbolic operators with [`@targetName` annotations](../other-new-features/targetName.md). Finally,
augment definitions of symbolic operators with [`@targetName` annotations](../other-new-features/targetName.html). Finally,
a syntax change allows infix operators to be written on the left in a multi-line expression.

## The `infix` Modifier
Expand Down Expand Up @@ -97,7 +99,7 @@ or if the `-source future` option is given in Dotty/Scala 3.

## The `@targetName` Annotation

It is recommended that definitions of symbolic operators carry a [`@targetName` annotation](../other-new-features/targetName.md) that provides an encoding of the operator with an alphanumeric name. This has several benefits:
It is recommended that definitions of symbolic operators carry a [`@targetName` annotation](../other-new-features/targetName.html) that provides an encoding of the operator with an alphanumeric name. This has several benefits:

- It helps interoperability between Scala and other languages. One can call
a Scala-defined symbolic operator from another language using its target name,
Expand Down
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/overload-resolution.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Changes in Overload Resolution"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/overload-resolution.html
type: section
num: 61
previous-page: /scala3/reference/changed-features/implicit-conversions
next-page: /scala3/reference/changed-features/match-syntax
---

Overload resolution in Scala 3 improves on Scala 2 in two ways.
Expand Down Expand Up @@ -42,7 +44,7 @@ resolution yields several competing alternatives when `n >= 1` parameter lists a
into account, then resolution re-tried using `n + 1` argument lists.

This change is motivated by the new language feature
[extension methods](../contextual/extension-methods.md), where emerges the need to do
[extension methods](../contextual/extension-methods.html), where emerges the need to do
overload resolution based on additional argument blocks.

## Parameter Types of Function Values
Expand Down
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/pattern-bindings.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Pattern Bindings"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/pattern-bindings.html
type: section
num: 64
previous-page: /scala3/reference/changed-features/vararg-splices
next-page: /scala3/reference/changed-features/pattern-matching
---

In Scala 2, pattern bindings in `val` definitions and `for` expressions are
Expand Down
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/pattern-matching.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Option-less pattern matching"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/pattern-matching.html
type: section
num: 65
previous-page: /scala3/reference/changed-features/pattern-bindings
next-page: /scala3/reference/changed-features/eta-expansion
---

The implementation of pattern matching in Scala 3 was greatly simplified compared to Scala 2. From a user perspective, this means that Scala 3 generated patterns are a *lot* easier to debug, as variables all show up in debug modes and positions are correctly preserved.
Expand Down Expand Up @@ -241,4 +243,4 @@ Abstract type testing with `ClassTag` is replaced with `TypeTest` or the alias `
- pattern `_: X` for an abstract type requires a `TypeTest` in scope
- pattern `x @ X()` for an unapply that takes an abstract type requires a `TypeTest` in scope

[More details on `TypeTest`](../other-new-features/type-test.md)
[More details on `TypeTest`](../other-new-features/type-test.html)
6 changes: 3 additions & 3 deletions docs/docs/reference/changed-features/structural-types-spec.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: doc-page
layout: singlepage-overview
scala3: true
title: "Programmatic Structural Types - More Details"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/structural-types-spec.html
---

## Syntax
Expand Down Expand Up @@ -81,7 +81,7 @@ and `Rs` are structural refinement declarations, and given `v.a` of type `U`, we

Note that `v`'s static type does not necessarily have to conform to `Selectable`, nor does it need to have `selectDynamic` and `applyDynamic` as members. It suffices that there is an implicit
conversion that can turn `v` into a `Selectable`, and the selection methods could also be available as
[extension methods](../contextual/extension-methods.md).
[extension methods](../contextual/extension-methods.html).

## Limitations of Structural Types

Expand Down
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/structural-types.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Programmatic Structural Types"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/structural-types.html
type: section
num: 53
previous-page: /scala3/reference/changed-features/numeric-literals
next-page: /scala3/reference/changed-features/operators
---

## Motivation
Expand Down Expand Up @@ -189,4 +191,4 @@ differences.
`java.lang.Class` arguments indicating the method's formal parameter types.
`Dynamic` comes with `updateDynamic`.

[More details](structural-types-spec.md)
[More details](structural-types-spec.html)
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/type-checking.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Changes in Type Checking"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/type-checking.html
type: section
num: 57
previous-page: /scala3/reference/changed-features/imports
next-page: /scala3/reference/changed-features/type-inference
---

*** **TO BE FILLED IN** ***
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/type-inference.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Changes in Type Inference"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/type-inference.html
type: section
num: 58
previous-page: /scala3/reference/changed-features/type-checking
next-page: /scala3/reference/changed-features/implicit-resolution
---

For more information, see the two presentations
Expand Down
8 changes: 5 additions & 3 deletions docs/docs/reference/changed-features/vararg-splices.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: "Vararg Splices"
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/vararg-splices.html
type: section
num: 63
previous-page: /scala3/reference/changed-features/match-syntax
next-page: /scala3/reference/changed-features/pattern-bindings
---

The syntax of vararg splices in patterns and function arguments has changed. The new syntax uses a postfix `*`, analogously to how a vararg parameter is declared.
Expand All @@ -24,7 +26,7 @@ The old syntax for splice arguments will be phased out.

## Syntax

```ebnf
```
ArgumentPatterns ::= ‘(’ [Patterns] ‘)’
| ‘(’ [Patterns ‘,’] Pattern2 ‘*’ ‘)’

Expand Down
6 changes: 4 additions & 2 deletions docs/docs/reference/changed-features/wildcards.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
layout: doc-page
title: Wildcard Arguments in Types
movedTo: https://docs.scala-lang.org/scala3/reference/changed-features/wildcards.html
type: section
num: 55
previous-page: /scala3/reference/changed-features/operators
next-page: /scala3/reference/changed-features/imports
---

The syntax of wildcard arguments in types has changed from `_` to `?`. Example:
Expand Down
Loading