From 56a6c4f6838de0d67f44d097090282c20612ffe6 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 4 Mar 2019 00:15:56 +0100 Subject: [PATCH 1/2] Reclassify "@infix and @alpha" --- docs/docs/reference/features-classification.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/reference/features-classification.md b/docs/docs/reference/features-classification.md index 0228bd9ed0c8..9fb04c0c4434 100644 --- a/docs/docs/reference/features-classification.md +++ b/docs/docs/reference/features-classification.md @@ -46,8 +46,6 @@ These features replace existing constructs with the aim of making the language s - [Vararg patterns](https://dotty.epfl.ch/docs/reference/changed-features/vararg-patterns.html) now use the form `: _*` instead of `@ _*`, mirroring vararg expressions, - [Synthesized creation methods](https://contributors.scala-lang.org/t/expunging-new-from-scala-3/2868/81) replace `new` expressions (under discussion, not implemented), - - [@infix and @alpha](https://github.com/lampepfl/dotty/pull/5975) - replace unrestricted infix operations and symbolic names (proposed, not implemented). With the exception of early initializers and old-style vararg patterns, all superseded features continue to be available in Scala 3.0. The plan is to deprecate and phase them out later. @@ -72,6 +70,8 @@ These features are restricted to make the language safer. - [Implied Imports](https://dotty.epfl.ch/docs/reference/contextual/import-implied.html): implicits now require a special form of import, to make the import clearly visible. - [Type Projection](https://dotty.epfl.ch/docs/reference/dropped-features/type-projection.html): only classes can be used as prefix `C` of a type projection `C#A`. Type projection on abstract types is no longer supported since it is unsound. - [Multiversal Equality](https://dotty.epfl.ch/docs/reference/contextual/multiversal-equality.html) implements an "opt-in" scheme to rule out nonsensical comparisons with `==` and `!=`. + - [@infix and @alpha](https://github.com/lampepfl/dotty/pull/5975) + make method application syntax uniform across code bases and require alphanumeric aliases for all symbolic names (proposed, not implemented). Unrestricted implicit conversions continue to be available in Scala 3.0, but will be deprecated and removed later. Unrestricted versions of the other features in the list above are available only under `-language:Scala2`. @@ -127,7 +127,7 @@ These features have undergone changes in Scala 3 to make them more regular and u - [Structural Types](https://dotty.epfl.ch/docs/reference/changed-features/structural-types.html): They now allow pluggable implementations, which greatly increases their usefulness. Some usage patterns are restricted compared to the status quo. - [Name-based pattern matching](https://dotty.epfl.ch/docs/reference/changed-features/pattern-matching.html): The existing undocumented Scala 2 implementation has been codified in a slightly simplified form. - [Eta expansion](https://dotty.epfl.ch/docs/reference/changed-features/eta-expansion.html) is now performed universally also in the absence of an expected type. The postfix `_` operator is thus made redundant. It will be deprecated and dropped after Scala 3.0. -- [Implicit Resolution](https://dotty.epfl.ch/docs/reference/changed-features/implicit-resolution.html): The implicit resolution rules have been cleaned up to make them more useful and less surprising. Implicit scope is restricted to no longer include package prefixes. + - [Implicit Resolution](https://dotty.epfl.ch/docs/reference/changed-features/implicit-resolution.html): The implicit resolution rules have been cleaned up to make them more useful and less surprising. Implicit scope is restricted to no longer include package prefixes. Most aspects of old-style implicit resolution are still available under `-language:Scala2`. The other changes in this list are applied unconditionally. From f990980d2dd921e4f2e17f9297567d2dca9c6b7b Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 4 Mar 2019 00:25:38 +0100 Subject: [PATCH 2/2] Fix # of groups --- docs/docs/reference/features-classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/reference/features-classification.md b/docs/docs/reference/features-classification.md index 9fb04c0c4434..5ff226cb0065 100644 --- a/docs/docs/reference/features-classification.md +++ b/docs/docs/reference/features-classification.md @@ -5,7 +5,7 @@ date: February 28, 2019 author: Martin Odersky --- -This document provides an overview of the features proposed for Scala 3 with the aim to facilitate the discussion what to include and when to include it. It classifies features into seven groups: Essential foundations, simplifications, restrictions, dropped features, changed features, new features, and features oriented towards meta-programming with the aim to replace existing macros. +This document provides an overview of the features proposed for Scala 3 with the aim to facilitate the discussion what to include and when to include it. It classifies features into eight groups: (1) essential foundations, (2) simplifications, (3) restrictions, (4) dropped features, (5) changed features, (6) new features, (7) features oriented towards meta-programming with the aim to replace existing macros, and (8) changes to type checking and inference. Each feature group contains sections classifying the status (i.e. relative importance to be a part of Scala 3, and relative urgency when to decide this) and the migration cost of the features in it.