Call object's constructor in <clinit> and ignore the result, but in the first
line of <init> save the current "this" to INSTANCE$
#KT-4516 Fixed
#KT-4543 Fixed
#KT-5291 Fixed
#KT-5523 Fixed
#KT-5582 Fixed
#KT-5402 Fixed
#KT-4838 Fixed
Resolve type of object inside local object as special, not supertype('Any').
Changed visibility of constructor of anonymous object to 'internal' to be able to resolve the following:
fun box(): String {
var foo = object {
val bar = object {
val baz = "ok"
}
}
return foo.bar.baz
}
The containing declaration of property initializers is constructor, so 'baz' was invisible inside private constructor.
x is a byte, x += 2 translated to x = x+2, but type of (x+2) currently
is Int, so it's not compiled because Int can't be stored in Byte.
Maybe we need to think about what should be a result of sum of to
Bytes, but currently it's still Int
- Cloneable is a trait with a single protected member 'clone', which is mapped
to java.lang.Cloneable on JVM
- 'clone' is non-abstract to be able to call 'super.clone()' in the
implementations. Also if you need your class to be Cloneable, most of the
time inheriting from Cloneable and calling 'super.clone()' will work
- hack 'super.clone()' in JVM intrinsics and TImpl delegation generation
- make arrays Cloneable, handle 'clone()' calls in the intrinsic
#KT-4890 Fixed
If a class inherits from another class which captures something (outer class
instance, receiver parameter, local variables, etc.), the constructor of the
former class should contain all the parameters of the super constructor as its
own parameters, so that it could make a proper super call. All such parameters
are now replicated in the derived constructor with kind = SUPER_CALL_PARAM,
except an instance of the outer class (kind = OUTER), which can be taken from
the derived's own OUTER when it has one, to prevent multiple passing of the
same argument.
Previously it worked only when inheriting from inner classes via a special hack
(ConstructorFrameMap).
Also reuse recently introduced ArgumentGenerator to automatically take care of
default and vararg arguments of super constructor
#KT-3581 Fixed
#KT-5342 Fixed
#KT-5343 Fixed