experimental

scala.language.experimental
object experimental

The experimental object contains features that are known to have unstable API or behavior that may change in future releases.

Experimental features may undergo API changes in future releases, so production code should not rely on them.

Programmers are encouraged to try out experimental features and report any bugs or API inconsistencies they encounter so they can be improved in future releases.

Attributes

Source
language.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Type members

Classlikes

Enhance match type extractors to follow aliases and singletons.

Enhance match type extractors to follow aliases and singletons.

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Experimental support for capture checking; implies support for pureFunctions

Experimental support for capture checking; implies support for pureFunctions

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Adds support for clause interleaving: Methods can now have as many type clauses as they like, this allows to have type bounds depend on terms: def f(x: Int)[A <: x.type]: A

Adds support for clause interleaving: Methods can now have as many type clauses as they like, this allows to have type bounds depend on terms: def f(x: Int)[A <: x.type]: A

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Experimental support for erased modifier

Experimental support for erased modifier

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Experimental support for generic number literals.

Experimental support for generic number literals.

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type
object into

Experimental support for automatic conversions of arguments, without requiring a language import import scala.language.implicitConversions.

Experimental support for automatic conversions of arguments, without requiring a language import import scala.language.implicitConversions.

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type
into.type
object modularity

Experimental support for new features for better modularity, including

Experimental support for new features for better modularity, including

  • better tracking of dependencies through classes
  • better usability of context bounds
  • better syntax and conventions for type classes
  • ability to merge exported types in intersections

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type
modularity.type
object namedTuples

Experimental support for named tuples.

Experimental support for named tuples.

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Experimental support for named type arguments.

Experimental support for named type arguments.

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type
object pureFunctions

Experimental support for pure function type syntax

Experimental support for pure function type syntax

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Experimental support for typechecked exception capabilities

Experimental support for typechecked exception capabilities

Attributes

See also
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Deprecated classlikes

object fewerBraces

Experimental support for using indentation for arguments

Experimental support for using indentation for arguments

Attributes

Deprecated
[Since version 3.3]
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Was needed to add support for relaxed imports of extension methods. The language import is no longer needed as this is now a standard feature since SIP was accepted.

Was needed to add support for relaxed imports of extension methods. The language import is no longer needed as this is now a standard feature since SIP was accepted.

Attributes

See also
Deprecated
[Since version 3.4]
Source
language.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Implicits

Implicits

implicit lazy val macros: macros

Only where this feature is enabled, are macro definitions allowed.

Only where this feature is enabled, are macro definitions allowed. If macros is not enabled, macro definitions are rejected by the compiler.

Macro implementations and macro applications are not governed by this language feature; they can be used anywhere.

Why introduce the feature? Macros promise to make the language more regular, replacing ad-hoc language constructs with a general powerful abstraction capability that can express them. Macros are also a more disciplined and powerful replacement for compiler plugins.

Why control it? For their very power, macros can lead to code that is hard to debug and understand.

Attributes

Source
language.scala