summaryrefslogtreecommitdiff
path: root/doc/reference/ImplementationStatus.tex
blob: f2c74b8695678dd58b4dc38e1734af39e7274ee5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
The present Scala compiler does not yet implement all of the Scala
specification. Its currently existing omissions and deviations are
listed below. We are working on a refined implementation that
addresses these issues.
\begin{enumerate}
\item
Unicode support is still limited. At present we only permit Unicode
encodings \verb@\uXXXX@ in strings and backquote-enclosed identifiers.
To define or access a Unicode identifier, you need to put it in
backquotes and use the \verb@\uXXXX@ encoding.
\item 
The unicode operator ``$\Rightarrow$''
(\sref{sec:idents}) is not yet recognized; you need to use the two
character ASCII equivalent ``\code{=>}'' instead.
\item
The current implementation does not yet support run-time types.
All types are erased (\sref{sec:erasure}) during compilation. This means that
the following operations give potentially wrong results.
\begin{itemize}
\item
Type tests and type casts to parameterized types. Here it is only tested
that a value is an instance of the given top-level type constructor.
\item
Type tests and type casts to type parameters and abstract types.  Here
it is only tested that a value is an instance of the type parameter's upper bound.  
\item
Polymorphic array creation. If \code{t} is a type variable or abstract type, then
\code{new Array[t]} will yield an array of the upper bound of \code{t}.
\end{itemize}
\item
Return expressions are not yet permitted inside an anonymous function
or inside a call-by-name argument (i.e.\ a function argument corresponding to a 
\code{def} parameter).
\item
Members of the empty package (\sref{sec:packagings}) cannot yet be
accessed from other source files.  Hence, all library classes and
objects have to be in some package.
\item
At present, auxiliary constructors (\sref{sec:constr-defs}) are only permitted
for monomorphic classes.
\item
The \code{Array} class supports as yet only a restricted set of
operations as given in \sref{cls:array}. It is planned to extend that
interface. In particular, arrays will implement the \code{scala.Seq}
trait as well as the methods needed to support for-comprehensions.
\item
At present, all classes used as mixins must be accessible to the Scala
compiler in source form.
\end{enumerate}