Add warning for initializers with obsolete syntax
Expected 'init' keyword before class initializer
This commit is contained in:
@@ -159,6 +159,7 @@ public interface Errors {
|
|||||||
DiagnosticFactory0<JetSecondaryConstructor> SECONDARY_CONSTRUCTOR_IN_OBJECT = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<JetSecondaryConstructor> SECONDARY_CONSTRUCTOR_IN_OBJECT = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<JetDelegatorToSuperCall> SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<JetDelegatorToSuperCall> SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<JetConstructorDelegationCall> PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<JetConstructorDelegationCall> PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED = DiagnosticFactory0.create(ERROR);
|
||||||
|
DiagnosticFactory0<PsiElement> INIT_KEYWORD_BEFORE_CLASS_INITIALIZER_EXPECTED = DiagnosticFactory0.create(WARNING);
|
||||||
|
|
||||||
// Trait-specific
|
// Trait-specific
|
||||||
|
|
||||||
|
|||||||
+2
@@ -418,6 +418,8 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR, "Supertype initialization is impossible without primary constructor");
|
MAP.put(SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR, "Supertype initialization is impossible without primary constructor");
|
||||||
MAP.put(PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED, "Primary constructor call expected");
|
MAP.put(PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED, "Primary constructor call expected");
|
||||||
|
|
||||||
|
MAP.put(INIT_KEYWORD_BEFORE_CLASS_INITIALIZER_EXPECTED, "Expecting 'init' keyword before class initializer");
|
||||||
|
|
||||||
MAP.put(ILLEGAL_SELECTOR, "Expression ''{0}'' cannot be a selector (occur after a dot)", STRING);
|
MAP.put(ILLEGAL_SELECTOR, "Expression ''{0}'' cannot be a selector (occur after a dot)", STRING);
|
||||||
|
|
||||||
MAP.put(NO_TAIL_CALLS_FOUND, "A function is marked as tail-recursive but no tail calls are found");
|
MAP.put(NO_TAIL_CALLS_FOUND, "A function is marked as tail-recursive but no tail calls are found");
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.intellij.lang.ASTNode;
|
|||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.kotlin.lexer.JetTokens;
|
||||||
import org.jetbrains.kotlin.psi.stubs.KotlinPlaceHolderStub;
|
import org.jetbrains.kotlin.psi.stubs.KotlinPlaceHolderStub;
|
||||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes;
|
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes;
|
||||||
|
|
||||||
@@ -49,4 +50,14 @@ public class JetClassInitializer extends JetDeclarationStub<KotlinPlaceHolderStu
|
|||||||
JetExpression body = getBody();
|
JetExpression body = getBody();
|
||||||
return (body instanceof JetBlockExpression) ? ((JetBlockExpression) body).getLBrace() : null;
|
return (body instanceof JetBlockExpression) ? ((JetBlockExpression) body).getLBrace() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public PsiElement getOpenBraceNodeOrSelf() {
|
||||||
|
PsiElement result = getOpenBraceNode();
|
||||||
|
return result != null ? result : this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasInitKeyword() {
|
||||||
|
return findChildByType(JetTokens.INIT_KEYWORD) != null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -451,6 +451,10 @@ public class BodyResolver {
|
|||||||
@NotNull JetClassInitializer anonymousInitializer,
|
@NotNull JetClassInitializer anonymousInitializer,
|
||||||
@NotNull ClassDescriptorWithResolutionScopes classDescriptor
|
@NotNull ClassDescriptorWithResolutionScopes classDescriptor
|
||||||
) {
|
) {
|
||||||
|
if (!anonymousInitializer.hasInitKeyword()) {
|
||||||
|
trace.report(INIT_KEYWORD_BEFORE_CLASS_INITIALIZER_EXPECTED.on(anonymousInitializer.getOpenBraceNodeOrSelf()));
|
||||||
|
}
|
||||||
|
|
||||||
JetScope scopeForInitializers = classDescriptor.getScopeForInitializerResolution();
|
JetScope scopeForInitializers = classDescriptor.getScopeForInitializerResolution();
|
||||||
if (!classDescriptor.getConstructors().isEmpty()) {
|
if (!classDescriptor.getConstructors().isEmpty()) {
|
||||||
expressionTypingServices.getType(scopeForInitializers, anonymousInitializer.getBody(), NO_EXPECTED_TYPE, c.getOuterDataFlowInfo(), trace);
|
expressionTypingServices.getType(scopeForInitializers, anonymousInitializer.getBody(), NO_EXPECTED_TYPE, c.getOuterDataFlowInfo(), trace);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ fun box(): String {
|
|||||||
var accessedFromConstructor: Class<*>? = null
|
var accessedFromConstructor: Class<*>? = null
|
||||||
|
|
||||||
class MyClass() {
|
class MyClass() {
|
||||||
{
|
init {
|
||||||
accessedFromConstructor = javaClass<MyClass>()
|
accessedFromConstructor = javaClass<MyClass>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
class A(w: Int) {
|
class A(w: Int) {
|
||||||
var c = w
|
var c = w
|
||||||
|
|
||||||
{
|
init {
|
||||||
c = 81
|
c = 81
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
trait NoC {
|
trait NoC {
|
||||||
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>{
|
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>init {
|
||||||
|
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
val a : Int get() = 1
|
val a : Int get() = 1
|
||||||
|
|
||||||
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>{
|
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>init {
|
||||||
|
|
||||||
}<!>
|
}<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
class WithC() {
|
class WithC() {
|
||||||
val x : Int
|
val x : Int
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
<!UNRESOLVED_REFERENCE!>$y<!> = 2
|
<!UNRESOLVED_REFERENCE!>$y<!> = 2
|
||||||
val <!UNUSED_VARIABLE!>b<!> = x
|
val <!UNUSED_VARIABLE!>b<!> = x
|
||||||
@@ -21,7 +21,7 @@ class WithC() {
|
|||||||
|
|
||||||
val a : Int get() = 1
|
val a : Int get() = 1
|
||||||
|
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>z<!> = <!UNRESOLVED_REFERENCE!>b<!>
|
val <!UNUSED_VARIABLE!>z<!> = <!UNRESOLVED_REFERENCE!>b<!>
|
||||||
val <!UNUSED_VARIABLE!>zz<!> = x
|
val <!UNUSED_VARIABLE!>zz<!> = x
|
||||||
val <!UNUSED_VARIABLE!>zzz<!> = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$a<!>
|
val <!UNUSED_VARIABLE!>zzz<!> = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$a<!>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ open class `$`() {
|
|||||||
}
|
}
|
||||||
open class `$$`(`$$$$` : `$$$$$`?) : `$`() {
|
open class `$$`(`$$$$` : `$$$$$`?) : `$`() {
|
||||||
val `$$$` : `$$$$$`?
|
val `$$$` : `$$$$$`?
|
||||||
{
|
init {
|
||||||
$`$$$` = `$$$$`
|
$`$$$` = `$$$$`
|
||||||
}
|
}
|
||||||
open public fun `$$$$$$`() : `$$$$$`? {
|
open public fun `$$$$$$`() : `$$$$$`? {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class Test() {
|
|||||||
var a : Int = 111
|
var a : Int = 111
|
||||||
var b : Int get() = $a; set(x) {a = x; $a = x}
|
var b : Int get() = $a; set(x) {a = x; $a = x}
|
||||||
|
|
||||||
{
|
init {
|
||||||
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!> = $a
|
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!> = $a
|
||||||
$a = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
|
$a = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
|
||||||
a = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
|
a = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
class C(a: Int, b: Int, c: Int, d: Int, <!UNUSED_PARAMETER!>e<!>: Int = d, val f: String) {
|
class C(a: Int, b: Int, c: Int, d: Int, <!UNUSED_PARAMETER!>e<!>: Int = d, val f: String) {
|
||||||
{
|
init {
|
||||||
a + a
|
a + a
|
||||||
}
|
}
|
||||||
|
|
||||||
val g = b
|
val g = b
|
||||||
|
|
||||||
{
|
init {
|
||||||
c + c
|
c + c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class MyTest() {
|
|||||||
$a = v
|
$a = v
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
init {
|
||||||
a = "rr"
|
a = "rr"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ fun testObject() : Trait {
|
|||||||
fun testBackingFieldsNotMarked() {
|
fun testBackingFieldsNotMarked() {
|
||||||
val <!UNUSED_VARIABLE!>a<!> = object {
|
val <!UNUSED_VARIABLE!>a<!> = object {
|
||||||
val x : Int
|
val x : Int
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ annotation class Annotation5() <!ANNOTATION_CLASS_WITH_BODY!>{
|
|||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
annotation class Annotation6() <!ANNOTATION_CLASS_WITH_BODY!>{
|
annotation class Annotation6() <!ANNOTATION_CLASS_WITH_BODY!>{
|
||||||
{}
|
init {}
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
annotation class Annotation1() <!ANNOTATION_CLASS_WITH_BODY!>{}<!>
|
annotation class Annotation1() <!ANNOTATION_CLASS_WITH_BODY!>{}<!>
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
class A {
|
class A {
|
||||||
ann {}
|
ann init {}
|
||||||
[ann] {}
|
[ann] init {}
|
||||||
<!UNRESOLVED_REFERENCE!>aaa<!> {}
|
<!UNRESOLVED_REFERENCE!>aaa<!> init {}
|
||||||
[<!UNRESOLVED_REFERENCE!>aaa<!>] {}
|
[<!UNRESOLVED_REFERENCE!>aaa<!>] init {}
|
||||||
}
|
}
|
||||||
|
|
||||||
trait T {
|
trait T {
|
||||||
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>ann {}<!>
|
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>ann init {}<!>
|
||||||
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>[ann] {}<!>
|
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>[ann] init {}<!>
|
||||||
<!ANONYMOUS_INITIALIZER_IN_TRAIT!><!UNRESOLVED_REFERENCE!>aaa<!> {}<!>
|
<!ANONYMOUS_INITIALIZER_IN_TRAIT!><!UNRESOLVED_REFERENCE!>aaa<!> init {}<!>
|
||||||
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>[<!UNRESOLVED_REFERENCE!>aaa<!>] {}<!>
|
<!ANONYMOUS_INITIALIZER_IN_TRAIT!>[<!UNRESOLVED_REFERENCE!>aaa<!>] init {}<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
annotation class ann
|
annotation class ann
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
class ReadForward() {
|
class ReadForward() {
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x<!> = <!UNINITIALIZED_VARIABLE!>$a<!>
|
val <!UNUSED_VARIABLE!>x<!> = <!UNINITIALIZED_VARIABLE!>$a<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
class ReadByAnotherPropertyInitializer() {
|
class ReadByAnotherPropertyInitializer() {
|
||||||
val a = 1
|
val a = 1
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x<!> = $a
|
val <!UNUSED_VARIABLE!>x<!> = $a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
abstract class ReadNonexistent() {
|
abstract class ReadNonexistent() {
|
||||||
abstract val aa: Int
|
abstract val aa: Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x<!> = <!NO_BACKING_FIELD_ABSTRACT_PROPERTY!>$aa<!>
|
val <!UNUSED_VARIABLE!>x<!> = <!NO_BACKING_FIELD_ABSTRACT_PROPERTY!>$aa<!>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ class ReadNonexistent() {
|
|||||||
val a: Int
|
val a: Int
|
||||||
get() = 1
|
get() = 1
|
||||||
|
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x<!> = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$a<!>
|
val <!UNUSED_VARIABLE!>x<!> = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$a<!>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
class Cl() {
|
class Cl() {
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x<!> = <!UNRESOLVED_REFERENCE!>$a<!>
|
val <!UNUSED_VARIABLE!>x<!> = <!UNRESOLVED_REFERENCE!>$a<!>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
val y = 1
|
val y = 1
|
||||||
|
|
||||||
class A() {
|
class A() {
|
||||||
{
|
init {
|
||||||
<!INACCESSIBLE_BACKING_FIELD!>$y<!> = 1
|
<!INACCESSIBLE_BACKING_FIELD!>$y<!> = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,23 +5,23 @@ package kt462
|
|||||||
|
|
||||||
abstract class TestInitializationWithoutBackingField() {
|
abstract class TestInitializationWithoutBackingField() {
|
||||||
val valWithBackingField : Int
|
val valWithBackingField : Int
|
||||||
{
|
init {
|
||||||
valWithBackingField = 2
|
valWithBackingField = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
val valWithoutBackingField : Int
|
val valWithoutBackingField : Int
|
||||||
get() = 42
|
get() = 42
|
||||||
{
|
init {
|
||||||
<!VAL_REASSIGNMENT!>valWithoutBackingField<!> = 45
|
<!VAL_REASSIGNMENT!>valWithoutBackingField<!> = 45
|
||||||
}
|
}
|
||||||
|
|
||||||
var finalDefaultVar : Int
|
var finalDefaultVar : Int
|
||||||
{
|
init {
|
||||||
finalDefaultVar = 3
|
finalDefaultVar = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
open var openVar : Int
|
open var openVar : Int
|
||||||
{
|
init {
|
||||||
<!INITIALIZATION_USING_BACKING_FIELD_OPEN_SETTER!>openVar<!> = 4
|
<!INITIALIZATION_USING_BACKING_FIELD_OPEN_SETTER!>openVar<!> = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,42 +29,42 @@ abstract class TestInitializationWithoutBackingField() {
|
|||||||
set(v: Int) {
|
set(v: Int) {
|
||||||
$varWithCustomSetter = v
|
$varWithCustomSetter = v
|
||||||
}
|
}
|
||||||
{
|
init {
|
||||||
<!INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER!>varWithCustomSetter<!> = 3
|
<!INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER!>varWithCustomSetter<!> = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
var varWithoutBackingField : Int
|
var varWithoutBackingField : Int
|
||||||
get() = 3
|
get() = 3
|
||||||
set(v: Int) {}
|
set(v: Int) {}
|
||||||
{
|
init {
|
||||||
varWithoutBackingField = 4
|
varWithoutBackingField = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract var abstractVar : Int
|
abstract var abstractVar : Int
|
||||||
{
|
init {
|
||||||
abstractVar = 34
|
abstractVar = 34
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class TestInitializationThroughBackingField() {
|
abstract class TestInitializationThroughBackingField() {
|
||||||
val valWithBackingField : Int
|
val valWithBackingField : Int
|
||||||
{
|
init {
|
||||||
$valWithBackingField = 2
|
$valWithBackingField = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
val valWithoutBackingField : Int
|
val valWithoutBackingField : Int
|
||||||
get() = 42
|
get() = 42
|
||||||
{
|
init {
|
||||||
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$valWithoutBackingField<!> = 45
|
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$valWithoutBackingField<!> = 45
|
||||||
}
|
}
|
||||||
|
|
||||||
var finalDefaultVar : Int
|
var finalDefaultVar : Int
|
||||||
{
|
init {
|
||||||
$finalDefaultVar = 3
|
$finalDefaultVar = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
open var openVar : Int
|
open var openVar : Int
|
||||||
{
|
init {
|
||||||
$openVar = 4
|
$openVar = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,26 +72,26 @@ abstract class TestInitializationThroughBackingField() {
|
|||||||
set(v: Int) {
|
set(v: Int) {
|
||||||
$varWithCustomSetter = v
|
$varWithCustomSetter = v
|
||||||
}
|
}
|
||||||
{
|
init {
|
||||||
$varWithCustomSetter = 3
|
$varWithCustomSetter = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
var varWithoutBackingField : Int
|
var varWithoutBackingField : Int
|
||||||
get() = 3
|
get() = 3
|
||||||
set(v: Int) {}
|
set(v: Int) {}
|
||||||
{
|
init {
|
||||||
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$varWithoutBackingField<!> = 4
|
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$varWithoutBackingField<!> = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract var abstractVar : Int
|
abstract var abstractVar : Int
|
||||||
{
|
init {
|
||||||
<!NO_BACKING_FIELD_ABSTRACT_PROPERTY!>$abstractVar<!> = 34
|
<!NO_BACKING_FIELD_ABSTRACT_PROPERTY!>$abstractVar<!> = 34
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TestBackingFieldsVisibility() {
|
class TestBackingFieldsVisibility() {
|
||||||
var a : Int = 712
|
var a : Int = 712
|
||||||
{
|
init {
|
||||||
$a = 37
|
$a = 37
|
||||||
this.$a = 357
|
this.$a = 357
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ val topLevelVar = 11
|
|||||||
class T() {
|
class T() {
|
||||||
val z : Int get() = 42
|
val z : Int get() = 42
|
||||||
|
|
||||||
{
|
init {
|
||||||
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>this.$z<!> = 34
|
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>this.$z<!> = 34
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,7 +132,7 @@ class T() {
|
|||||||
|
|
||||||
val a = object {
|
val a = object {
|
||||||
val x = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$z<!>
|
val x = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$z<!>
|
||||||
{
|
init {
|
||||||
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$z<!> = 23
|
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$z<!> = 23
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -140,7 +140,7 @@ class T() {
|
|||||||
var x: Int = 2
|
var x: Int = 2
|
||||||
get() {
|
get() {
|
||||||
val <!UNUSED_VARIABLE!>o<!> = object {
|
val <!UNUSED_VARIABLE!>o<!> = object {
|
||||||
{
|
init {
|
||||||
$x = 34
|
$x = 34
|
||||||
}
|
}
|
||||||
fun foo() {
|
fun foo() {
|
||||||
@@ -164,7 +164,7 @@ class T() {
|
|||||||
$x = 34
|
$x = 34
|
||||||
val <!UNUSED_VARIABLE!>o<!> = object {
|
val <!UNUSED_VARIABLE!>o<!> = object {
|
||||||
val y = $x
|
val y = $x
|
||||||
{
|
init {
|
||||||
$x = 422
|
$x = 422
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-19
@@ -112,7 +112,7 @@ val y = 10
|
|||||||
val z = 10
|
val z = 10
|
||||||
|
|
||||||
class AnonymousInitializers(var a: String, val b: String) {
|
class AnonymousInitializers(var a: String, val b: String) {
|
||||||
{
|
init {
|
||||||
$a = "30"
|
$a = "30"
|
||||||
a = "s"
|
a = "s"
|
||||||
|
|
||||||
@@ -121,11 +121,11 @@ class AnonymousInitializers(var a: String, val b: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val i: Int
|
val i: Int
|
||||||
{
|
init {
|
||||||
$i = 121
|
$i = 121
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
init {
|
||||||
x = 11
|
x = 11
|
||||||
<!VAL_REASSIGNMENT!>z<!> = 10
|
<!VAL_REASSIGNMENT!>z<!> = 10
|
||||||
}
|
}
|
||||||
@@ -133,14 +133,14 @@ class AnonymousInitializers(var a: String, val b: String) {
|
|||||||
val j: Int
|
val j: Int
|
||||||
get() = 20
|
get() = 20
|
||||||
|
|
||||||
{
|
init {
|
||||||
<!VAL_REASSIGNMENT!>$i<!> = 13
|
<!VAL_REASSIGNMENT!>$i<!> = 13
|
||||||
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$j<!> = 30
|
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$j<!> = 30
|
||||||
<!VAL_REASSIGNMENT!>j<!> = 34
|
<!VAL_REASSIGNMENT!>j<!> = 34
|
||||||
}
|
}
|
||||||
|
|
||||||
val k: String
|
val k: String
|
||||||
{
|
init {
|
||||||
if (1 < 3) {
|
if (1 < 3) {
|
||||||
k = "a"
|
k = "a"
|
||||||
}
|
}
|
||||||
@@ -150,7 +150,7 @@ class AnonymousInitializers(var a: String, val b: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val l: String
|
val l: String
|
||||||
{
|
init {
|
||||||
if (1 < 3) {
|
if (1 < 3) {
|
||||||
$l = "a"
|
$l = "a"
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ class AnonymousInitializers(var a: String, val b: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val o: String<!>
|
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val o: String<!>
|
||||||
{
|
init {
|
||||||
if (1 < 3) {
|
if (1 < 3) {
|
||||||
$o = "a"
|
$o = "a"
|
||||||
}
|
}
|
||||||
@@ -168,13 +168,13 @@ class AnonymousInitializers(var a: String, val b: String) {
|
|||||||
|
|
||||||
var m: Int = 30
|
var m: Int = 30
|
||||||
|
|
||||||
{
|
init {
|
||||||
$m = 400
|
$m = 400
|
||||||
}
|
}
|
||||||
|
|
||||||
val n: Int
|
val n: Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
while (<!UNINITIALIZED_VARIABLE!>n<!> == 0) {
|
while (<!UNINITIALIZED_VARIABLE!>n<!> == 0) {
|
||||||
}
|
}
|
||||||
$n = 10
|
$n = 10
|
||||||
@@ -183,7 +183,7 @@ class AnonymousInitializers(var a: String, val b: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var p = 1
|
var p = 1
|
||||||
{
|
init {
|
||||||
p++
|
p++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,7 +197,7 @@ open class Open(<!UNUSED_PARAMETER!>a<!>: Int, <!UNUSED_PARAMETER!>w<!>: Int) {}
|
|||||||
class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) {
|
class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) {
|
||||||
val x : Int
|
val x : Int
|
||||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
val <!UNUSED_VARIABLE!>b<!> = x
|
val <!UNUSED_VARIABLE!>b<!> = x
|
||||||
}
|
}
|
||||||
@@ -212,7 +212,7 @@ class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) {
|
|||||||
}
|
}
|
||||||
var xx = w
|
var xx = w
|
||||||
var yy : Int
|
var yy : Int
|
||||||
{
|
init {
|
||||||
<!VAL_REASSIGNMENT!>w<!> += 1
|
<!VAL_REASSIGNMENT!>w<!> += 1
|
||||||
$yy = w
|
$yy = w
|
||||||
}
|
}
|
||||||
@@ -222,13 +222,13 @@ class Outer() {
|
|||||||
val a : Int
|
val a : Int
|
||||||
var b : Int
|
var b : Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
$a = 1
|
$a = 1
|
||||||
$b = 1
|
$b = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class Inner() {
|
inner class Inner() {
|
||||||
{
|
init {
|
||||||
<!VAL_REASSIGNMENT!>a<!>++
|
<!VAL_REASSIGNMENT!>a<!>++
|
||||||
b++
|
b++
|
||||||
}
|
}
|
||||||
@@ -250,7 +250,7 @@ class ClassObject() {
|
|||||||
default object {
|
default object {
|
||||||
val x : Int
|
val x : Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ fun foo() {
|
|||||||
val x : Int
|
val x : Int
|
||||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
||||||
val z : Int
|
val z : Int
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
$z = 3
|
$z = 3
|
||||||
}
|
}
|
||||||
@@ -284,7 +284,7 @@ class TestObjectExpression() {
|
|||||||
val <!UNUSED_VARIABLE!>a<!> = object {
|
val <!UNUSED_VARIABLE!>a<!> = object {
|
||||||
val x : Int
|
val x : Int
|
||||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
||||||
{
|
init {
|
||||||
if (true)
|
if (true)
|
||||||
x = 12
|
x = 12
|
||||||
else
|
else
|
||||||
@@ -307,7 +307,7 @@ class TestObjectExpression() {
|
|||||||
object TestObjectDeclaration {
|
object TestObjectDeclaration {
|
||||||
val x : Int
|
val x : Int
|
||||||
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,7 +325,7 @@ fun func() {
|
|||||||
val b = 1
|
val b = 1
|
||||||
val <!UNUSED_VARIABLE!>a<!> = object {
|
val <!UNUSED_VARIABLE!>a<!> = object {
|
||||||
val x = b
|
val x = b
|
||||||
{
|
init {
|
||||||
<!VAL_REASSIGNMENT!>b<!> = 4
|
<!VAL_REASSIGNMENT!>b<!> = 4
|
||||||
<!UNRESOLVED_REFERENCE!>$b<!> = 3
|
<!UNRESOLVED_REFERENCE!>$b<!> = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class P {
|
|||||||
|
|
||||||
val other = P();
|
val other = P();
|
||||||
|
|
||||||
{
|
init {
|
||||||
x = 23
|
x = 23
|
||||||
other.x = 4
|
other.x = 4
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ fun foo() {
|
|||||||
|
|
||||||
class R {
|
class R {
|
||||||
val p = P();
|
val p = P();
|
||||||
{
|
init {
|
||||||
<!INVISIBLE_SETTER!>p.x<!> = 42
|
<!INVISIBLE_SETTER!>p.x<!> = 42
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ val closure = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class A {
|
class A {
|
||||||
{
|
init {
|
||||||
fun foo(): Int {
|
fun foo(): Int {
|
||||||
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ package kt510
|
|||||||
|
|
||||||
public open class Identifier1() {
|
public open class Identifier1() {
|
||||||
var field : Boolean
|
var field : Boolean
|
||||||
{
|
init {
|
||||||
field = false; // error
|
field = false; // error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ public open class Identifier1() {
|
|||||||
|
|
||||||
public open class Identifier2() {
|
public open class Identifier2() {
|
||||||
var field : Boolean
|
var field : Boolean
|
||||||
{
|
init {
|
||||||
this.field = false;
|
this.field = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,17 +3,17 @@
|
|||||||
package kt897
|
package kt897
|
||||||
|
|
||||||
class A() {
|
class A() {
|
||||||
{
|
init {
|
||||||
<!INITIALIZATION_BEFORE_DECLARATION!>i<!> = 11
|
<!INITIALIZATION_BEFORE_DECLARATION!>i<!> = 11
|
||||||
}
|
}
|
||||||
val i : Int? = null // must be an error
|
val i : Int? = null // must be an error
|
||||||
|
|
||||||
{
|
init {
|
||||||
<!INITIALIZATION_BEFORE_DECLARATION!>j<!> = 1
|
<!INITIALIZATION_BEFORE_DECLARATION!>j<!> = 1
|
||||||
}
|
}
|
||||||
var j : Int = 2
|
var j : Int = 2
|
||||||
|
|
||||||
{
|
init {
|
||||||
<!INITIALIZATION_BEFORE_DECLARATION!>k<!> = 3
|
<!INITIALIZATION_BEFORE_DECLARATION!>k<!> = 3
|
||||||
}
|
}
|
||||||
val k : Int
|
val k : Int
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package f
|
|||||||
|
|
||||||
fun f() {
|
fun f() {
|
||||||
class LocalClass() {
|
class LocalClass() {
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x1<!> = "" // ok: unused
|
val <!UNUSED_VARIABLE!>x1<!> = "" // ok: unused
|
||||||
|
|
||||||
fun loc1(): Int {
|
fun loc1(): Int {
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ open class A(val a: A)
|
|||||||
|
|
||||||
class TestObjectLiteral {
|
class TestObjectLiteral {
|
||||||
val obj: A = object: A(<!UNINITIALIZED_VARIABLE!>obj<!>) {
|
val obj: A = object: A(<!UNINITIALIZED_VARIABLE!>obj<!>) {
|
||||||
{
|
init {
|
||||||
val x = <!UNINITIALIZED_VARIABLE!>obj<!>
|
val x = <!UNINITIALIZED_VARIABLE!>obj<!>
|
||||||
}
|
}
|
||||||
fun foo() {
|
fun foo() {
|
||||||
@@ -20,7 +20,7 @@ class TestObjectLiteral {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
val obj1: A = @l ( object: A(<!UNINITIALIZED_VARIABLE!>obj1<!>) {
|
val obj1: A = @l ( object: A(<!UNINITIALIZED_VARIABLE!>obj1<!>) {
|
||||||
{
|
init {
|
||||||
val x = <!UNINITIALIZED_VARIABLE!>obj1<!>
|
val x = <!UNINITIALIZED_VARIABLE!>obj1<!>
|
||||||
}
|
}
|
||||||
fun foo() = obj1
|
fun foo() = obj1
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
class AnonymousInitializers(var a: String) {
|
class AnonymousInitializers(var a: String) {
|
||||||
{
|
init {
|
||||||
a = "s"
|
a = "s"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -5,7 +5,7 @@ fun test(x: Any) {
|
|||||||
fun foo(y: Any) {
|
fun foo(y: Any) {
|
||||||
if (y !is String) return
|
if (y !is String) return
|
||||||
class Local {
|
class Local {
|
||||||
{
|
init {
|
||||||
<!DEBUG_INFO_SMARTCAST!>x<!>.length()
|
<!DEBUG_INFO_SMARTCAST!>x<!>.length()
|
||||||
<!DEBUG_INFO_SMARTCAST!>y<!>.length()
|
<!DEBUG_INFO_SMARTCAST!>y<!>.length()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
fun f(a: Any?) {
|
fun f(a: Any?) {
|
||||||
if (a is B) {
|
if (a is B) {
|
||||||
class C : X(<!DEBUG_INFO_SMARTCAST!>a<!>) {
|
class C : X(<!DEBUG_INFO_SMARTCAST!>a<!>) {
|
||||||
{
|
init {
|
||||||
<!DEBUG_INFO_SMARTCAST!>a<!>.foo()
|
<!DEBUG_INFO_SMARTCAST!>a<!>.foo()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ fun test(x: Any) {
|
|||||||
|
|
||||||
class LocalOuter {
|
class LocalOuter {
|
||||||
inner class Local {
|
inner class Local {
|
||||||
{
|
init {
|
||||||
<!DEBUG_INFO_SMARTCAST!>x<!>.length()
|
<!DEBUG_INFO_SMARTCAST!>x<!>.length()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -11,7 +11,7 @@ class Foo {
|
|||||||
|
|
||||||
private val privateProperty = object : MyClass(), MyTrait {}
|
private val privateProperty = object : MyClass(), MyTrait {}
|
||||||
|
|
||||||
{
|
init {
|
||||||
privateProperty.f1()
|
privateProperty.f1()
|
||||||
privateProperty.f2()
|
privateProperty.f2()
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@ class Foo {
|
|||||||
|
|
||||||
private fun privateFunction() = object : MyClass(), MyTrait {}
|
private fun privateFunction() = object : MyClass(), MyTrait {}
|
||||||
|
|
||||||
{
|
init {
|
||||||
privateFunction().f1()
|
privateFunction().f1()
|
||||||
privateFunction().f2()
|
privateFunction().f2()
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@ class Foo {
|
|||||||
class FooInner {
|
class FooInner {
|
||||||
private val privatePropertyInner = object : MyClass(), MyTrait {}
|
private val privatePropertyInner = object : MyClass(), MyTrait {}
|
||||||
|
|
||||||
{
|
init {
|
||||||
privatePropertyInner.f1()
|
privatePropertyInner.f1()
|
||||||
privatePropertyInner.f2()
|
privatePropertyInner.f2()
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ class Foo {
|
|||||||
|
|
||||||
private fun privateFunctionInner() = object : MyClass(), MyTrait {}
|
private fun privateFunctionInner() = object : MyClass(), MyTrait {}
|
||||||
|
|
||||||
{
|
init {
|
||||||
privateFunctionInner().f1()
|
privateFunctionInner().f1()
|
||||||
privateFunctionInner().f2()
|
privateFunctionInner().f2()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
class Foo() {
|
class Foo() {
|
||||||
private val builder = StringBuilder("sdfsd");
|
private val builder = StringBuilder("sdfsd")
|
||||||
|
|
||||||
{
|
init {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class TestPCParameters(w : Int, <!UNUSED_PARAMETER!>x<!> : Int, val y : Int, var
|
|||||||
|
|
||||||
val xx = w
|
val xx = w
|
||||||
|
|
||||||
{
|
init {
|
||||||
w + 1
|
w + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -6,7 +6,7 @@ inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
|||||||
|
|
||||||
val z = p();
|
val z = p();
|
||||||
|
|
||||||
{
|
init {
|
||||||
doCall {
|
doCall {
|
||||||
p()
|
p()
|
||||||
}
|
}
|
||||||
@@ -25,9 +25,9 @@ inline fun <R> inlineFunOnlyLocal(inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
|||||||
inline fun <R> inlineFun(p: () -> R) {
|
inline fun <R> inlineFun(p: () -> R) {
|
||||||
val s = object {
|
val s = object {
|
||||||
|
|
||||||
val z = <!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>();
|
val z = <!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
||||||
|
|
||||||
{
|
init {
|
||||||
doCall {
|
doCall {
|
||||||
<!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
<!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
fun f() {
|
fun f() {
|
||||||
class MyClass() {
|
class MyClass() {
|
||||||
{
|
init {
|
||||||
val x: MyClass = MyClass()
|
val x: MyClass = MyClass()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ fun f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object MyObject<!> {
|
<!LOCAL_OBJECT_NOT_ALLOWED!>object MyObject<!> {
|
||||||
{
|
init {
|
||||||
val obj: MyObject = MyObject
|
val obj: MyObject = MyObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,7 +23,7 @@ fun f() {
|
|||||||
|
|
||||||
val closure = {
|
val closure = {
|
||||||
class MyClass {
|
class MyClass {
|
||||||
{
|
init {
|
||||||
val x: MyClass = MyClass()
|
val x: MyClass = MyClass()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,15 +69,15 @@ abstract class IllegalModifiers5() {
|
|||||||
|
|
||||||
//Check illegal modifiers on anonymous initializers
|
//Check illegal modifiers on anonymous initializers
|
||||||
abstract class IllegalModifiers6() {
|
abstract class IllegalModifiers6() {
|
||||||
<!ILLEGAL_MODIFIER!>public<!> {}
|
<!ILLEGAL_MODIFIER!>public<!> init {}
|
||||||
<!ILLEGAL_MODIFIER!>private<!> {}
|
<!ILLEGAL_MODIFIER!>private<!> init {}
|
||||||
<!ILLEGAL_MODIFIER!>protected<!> {}
|
<!ILLEGAL_MODIFIER!>protected<!> init {}
|
||||||
<!ILLEGAL_MODIFIER!>vararg<!> {}
|
<!ILLEGAL_MODIFIER!>vararg<!> init {}
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> {}
|
<!ILLEGAL_MODIFIER!>abstract<!> init {}
|
||||||
<!ILLEGAL_MODIFIER!>open<!> {}
|
<!ILLEGAL_MODIFIER!>open<!> init {}
|
||||||
<!ILLEGAL_MODIFIER!>final<!> {}
|
<!ILLEGAL_MODIFIER!>final<!> init {}
|
||||||
|
|
||||||
<!ILLEGAL_MODIFIER!>public<!> annotated {}
|
<!ILLEGAL_MODIFIER!>public<!> annotated init {}
|
||||||
|
|
||||||
<!ILLEGAL_MODIFIER!>private<!> <!NOT_AN_ANNOTATION_CLASS!>IllegalModifiers6()<!> {}
|
<!ILLEGAL_MODIFIER!>private<!> <!NOT_AN_ANNOTATION_CLASS!>IllegalModifiers6()<!> init {}
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,7 @@ fun f(s: String?) {
|
|||||||
// more tests
|
// more tests
|
||||||
class A(a: String?) {
|
class A(a: String?) {
|
||||||
val b = if (a != null) <!DEBUG_INFO_SMARTCAST!>a<!>.length() else 1
|
val b = if (a != null) <!DEBUG_INFO_SMARTCAST!>a<!>.length() else 1
|
||||||
{
|
init {
|
||||||
if (a != null) {
|
if (a != null) {
|
||||||
val <!UNUSED_VARIABLE!>c<!> = <!DEBUG_INFO_SMARTCAST!>a<!>.length()
|
val <!UNUSED_VARIABLE!>c<!> = <!DEBUG_INFO_SMARTCAST!>a<!>.length()
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@ class A(a: String?) {
|
|||||||
|
|
||||||
val i : Int
|
val i : Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
if (a is String) {
|
if (a is String) {
|
||||||
i = <!DEBUG_INFO_SMARTCAST!>a<!>.length()
|
i = <!DEBUG_INFO_SMARTCAST!>a<!>.length()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ package toplevelObjectDeclarations
|
|||||||
val x = A.foo()
|
val x = A.foo()
|
||||||
|
|
||||||
val y = object : Foo(x) {
|
val y = object : Foo(x) {
|
||||||
{
|
init {
|
||||||
x + 12
|
x + 12
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ object A {
|
|||||||
|
|
||||||
class Test2 {
|
class Test2 {
|
||||||
private val a = object {
|
private val a = object {
|
||||||
{
|
init {
|
||||||
<!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1
|
<!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1
|
||||||
}
|
}
|
||||||
val x = <!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!>
|
val x = <!UNINITIALIZED_VARIABLE, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package test
|
|||||||
import javax.swing.JFrame
|
import javax.swing.JFrame
|
||||||
|
|
||||||
class KFrame() : JFrame() {
|
class KFrame() : JFrame() {
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>x<!> = this.rootPaneCheckingEnabled // make sure field is visible
|
val <!UNUSED_VARIABLE!>x<!> = this.rootPaneCheckingEnabled // make sure field is visible
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class A {
|
|||||||
|
|
||||||
class B {
|
class B {
|
||||||
class D {
|
class D {
|
||||||
{
|
init {
|
||||||
A().bar {
|
A().bar {
|
||||||
this.foo()
|
this.foo()
|
||||||
foo()
|
foo()
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class Creature() {
|
|||||||
object A {
|
object A {
|
||||||
var bbb : Int
|
var bbb : Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
$bbb = 1
|
$bbb = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,12 +19,12 @@ class Creature() {
|
|||||||
class C() {
|
class C() {
|
||||||
var ccc : Int
|
var ccc : Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
$ccc = 2
|
$ccc = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
init {
|
||||||
Creature.numCreated++ // Error
|
Creature.numCreated++ // Error
|
||||||
A.bbb++
|
A.bbb++
|
||||||
C().ccc++
|
C().ccc++
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class A {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class B() {
|
class B() {
|
||||||
{
|
init {
|
||||||
A().<!INVISIBLE_MEMBER!>a<!> = "Hello"
|
A().<!INVISIBLE_MEMBER!>a<!> = "Hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@ package kt37
|
|||||||
class C() {
|
class C() {
|
||||||
private var f: Int
|
private var f: Int
|
||||||
|
|
||||||
{
|
init {
|
||||||
f = 610
|
f = 610
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
class A {
|
||||||
|
val x: Int
|
||||||
|
val y: Int
|
||||||
|
<!INIT_KEYWORD_BEFORE_CLASS_INITIALIZER_EXPECTED!>{<!>
|
||||||
|
x = 1
|
||||||
|
}
|
||||||
|
init {
|
||||||
|
y = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
internal final class A {
|
||||||
|
public constructor A()
|
||||||
|
internal final val x: kotlin.Int
|
||||||
|
internal final val y: kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
class Test {
|
class Test {
|
||||||
private var x = object {};
|
private var x = object {};
|
||||||
{
|
init {
|
||||||
x = <!TYPE_MISMATCH!>object<!> {}
|
x = <!TYPE_MISMATCH!>object<!> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
class A(vararg t : Int) {
|
class A(vararg t : Int) {
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>t1<!> : IntArray = t
|
val <!UNUSED_VARIABLE!>t1<!> : IntArray = t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
class A(vararg val t : Int) {
|
class A(vararg val t : Int) {
|
||||||
{
|
init {
|
||||||
val <!UNUSED_VARIABLE!>t1<!> : IntArray = t
|
val <!UNUSED_VARIABLE!>t1<!> : IntArray = t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class Test<in I> {
|
|||||||
|
|
||||||
fun apply(<!UNUSED_PARAMETER!>i<!>: I) {}
|
fun apply(<!UNUSED_PARAMETER!>i<!>: I) {}
|
||||||
|
|
||||||
{
|
init {
|
||||||
foo()
|
foo()
|
||||||
this.foo()
|
this.foo()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f()
|
|||||||
class Test<in I, out O> {
|
class Test<in I, out O> {
|
||||||
private val i: I = getT()
|
private val i: I = getT()
|
||||||
|
|
||||||
;{
|
init {
|
||||||
apply(i)
|
apply(i)
|
||||||
apply(this.i)
|
apply(this.i)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ class Test<in I, out O> {
|
|||||||
private var i: I = getT()
|
private var i: I = getT()
|
||||||
private val j: I
|
private val j: I
|
||||||
|
|
||||||
;{
|
init {
|
||||||
j = getT()
|
j = getT()
|
||||||
i = getT()
|
i = getT()
|
||||||
this.i = getT()
|
this.i = getT()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ fun <T> getT(): T = null!!
|
|||||||
class A<in I>(init: I) {
|
class A<in I>(init: I) {
|
||||||
private val i: I
|
private val i: I
|
||||||
|
|
||||||
{
|
init {
|
||||||
i = getT()
|
i = getT()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ class A<in I>(init: I) {
|
|||||||
|
|
||||||
private var i4 = getT<I>()
|
private var i4 = getT<I>()
|
||||||
|
|
||||||
;{
|
init {
|
||||||
i2 = getT()
|
i2 = getT()
|
||||||
i3 = init
|
i3 = init
|
||||||
i4 = i3
|
i4 = i3
|
||||||
|
|||||||
@@ -10469,6 +10469,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("expectedInitKeywordOnInitializer.kt")
|
||||||
|
public void testExpectedInitKeywordOnInitializer() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/expectedInitKeywordOnInitializer.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("expectedPrimaryConstructorCall.kt")
|
@TestMetadata("expectedPrimaryConstructorCall.kt")
|
||||||
public void testExpectedPrimaryConstructorCall() throws Exception {
|
public void testExpectedPrimaryConstructorCall() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/expectedPrimaryConstructorCall.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/expectedPrimaryConstructorCall.kt");
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
trait NoC {
|
trait NoC {
|
||||||
<error>{
|
<error>init {
|
||||||
|
|
||||||
}</error>
|
}</error>
|
||||||
|
|
||||||
val a : Int get() = 1
|
val a : Int get() = 1
|
||||||
|
|
||||||
<error>{
|
<error>init {
|
||||||
|
|
||||||
}</error>
|
}</error>
|
||||||
}
|
}
|
||||||
|
|
||||||
class WithC() {
|
class WithC() {
|
||||||
val x : Int
|
val x : Int
|
||||||
{
|
init {
|
||||||
$x = 1
|
$x = 1
|
||||||
<error>$y</error> = 2
|
<error>$y</error> = 2
|
||||||
val <warning>b</warning> = x
|
val <warning>b</warning> = x
|
||||||
@@ -21,7 +21,7 @@ class WithC() {
|
|||||||
|
|
||||||
val a : Int get() = 1
|
val a : Int get() = 1
|
||||||
|
|
||||||
{
|
init {
|
||||||
val <warning>z</warning> = <error>b</error>
|
val <warning>z</warning> = <error>b</error>
|
||||||
val <warning>zz</warning> = x
|
val <warning>zz</warning> = x
|
||||||
val <warning>zzz</warning> = <error>$a</error>
|
val <warning>zzz</warning> = <error>$a</error>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ package toplevelObjectDeclarations
|
|||||||
val x = A.foo()
|
val x = A.foo()
|
||||||
|
|
||||||
val y = object : Foo(x) {
|
val y = object : Foo(x) {
|
||||||
{
|
init {
|
||||||
x + 12
|
x + 12
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class Test() {
|
|||||||
var a : Int = 111
|
var a : Int = 111
|
||||||
var b : Int get() = $a; set(x) {a = x; $a = x}
|
var b : Int get() = $a; set(x) {a = x; $a = x}
|
||||||
|
|
||||||
{
|
init {
|
||||||
<error>$b</error> = $a
|
<error>$b</error> = $a
|
||||||
$a = <error>$b</error>
|
$a = <error>$b</error>
|
||||||
a = <error>$b</error>
|
a = <error>$b</error>
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class TestPCParameters(w : Int, <warning>x</warning> : Int, val <info>y</info> :
|
|||||||
|
|
||||||
val <info>xx</info> = w
|
val <info>xx</info> = w
|
||||||
|
|
||||||
{
|
<info>init</info> {
|
||||||
w + 1
|
w + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
class Foo(var bar : Int, var barr : Int, var barrr : Int) {
|
class Foo(var bar : Int, var barr : Int, var barrr : Int) {
|
||||||
{
|
init {
|
||||||
bar = 1
|
bar = 1
|
||||||
barr = 1
|
barr = 1
|
||||||
barrr = 1
|
barrr = 1
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
this : Foo
|
this : Foo
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
init {
|
||||||
bar = 1
|
bar = 1
|
||||||
this.bar
|
this.bar
|
||||||
1 : Int
|
1 : Int
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
class A {
|
class A {
|
||||||
default object {
|
default object {
|
||||||
{
|
init {
|
||||||
val t: Int = <caret>foo
|
val t: Int = <caret>foo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user