diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassKind.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassKind.java index 344a7db0646..f881896c275 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassKind.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassKind.java @@ -7,6 +7,7 @@ public enum ClassKind { CLASS, TRAIT, ENUM_CLASS, + ENUM_ENTRY, ANNOTATION_CLASS, OBJECT } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index 6663491aff8..6be2b0227d3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -116,7 +116,6 @@ public interface Errors { SimplePsiElementOnlyDiagnosticFactory MUST_BE_INITIALIZED_OR_BE_ABSTRACT = SimplePsiElementOnlyDiagnosticFactory.create(ERROR, "Property must be initialized or be abstract"); DiagnosticWithParameterFactory PROPERTY_INITIALIZER_IN_TRAIT = DiagnosticWithParameterFactory.create(ERROR, "Property initializers are not allowed in traits", DiagnosticParameters.TYPE); SimpleDiagnosticFactory PROPERTY_INITIALIZER_NO_BACKING_FIELD = SimpleDiagnosticFactory.create(ERROR, "Initializer is not allowed here because this property has no backing field"); - DiagnosticWithParameterFactory PROPERTY_INITIALIZER_NO_PRIMARY_CONSTRUCTOR = DiagnosticWithParameterFactory.create(ERROR, "Property initializers are not allowed when no primary constructor is present", DiagnosticParameters.CLASS); PsiElementOnlyDiagnosticFactory3 ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS = new PsiElementOnlyDiagnosticFactory3(ERROR, "Abstract property {0} in non-abstract class {1}") { @NotNull protected DiagnosticWithPsiElement on(@NotNull JetModifierListOwner elementToBlame, @NotNull TextRange textRangeToMark, @NotNull String s, @NotNull ClassDescriptor classDescriptor, @NotNull JetClass aClass) { @@ -141,19 +140,13 @@ public interface Errors { SimpleDiagnosticFactory PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT = SimpleDiagnosticFactory.create(ERROR, "Projections are not allowed on type arguments of functions and properties"); // TODO : better positioning SimpleDiagnosticFactory SUPERTYPE_NOT_INITIALIZED = SimpleDiagnosticFactory.create(ERROR, "This type has a constructor, and thus must be initialized here"); + SimpleDiagnosticFactory SUPERTYPE_NOT_INITIALIZED_DEFAULT = SimpleDiagnosticFactory.create(ERROR, "Constructor invocation should be explicitly specified"); SimpleDiagnosticFactory SECONDARY_CONSTRUCTOR_BUT_NO_PRIMARY = SimpleDiagnosticFactory.create(ERROR, "A secondary constructor may appear only in a class that has a primary constructor"); SimpleDiagnosticFactory SECONDARY_CONSTRUCTOR_NO_INITIALIZER_LIST = SimpleDiagnosticFactory.create(ERROR, "Secondary constructors must have an initializer list"); SimpleDiagnosticFactory BY_IN_SECONDARY_CONSTRUCTOR = SimpleDiagnosticFactory.create(ERROR, "'by'-clause is only supported for primary constructors"); SimpleDiagnosticFactory INITIALIZER_WITH_NO_ARGUMENTS = SimpleDiagnosticFactory.create(ERROR, "Constructor arguments required"); SimpleDiagnosticFactory MANY_CALLS_TO_THIS = SimpleDiagnosticFactory.create(ERROR, "Only one call to 'this(...)' is allowed"); PsiElementOnlyDiagnosticFactory1 NOTHING_TO_OVERRIDE = PsiElementOnlyDiagnosticFactory1.create(ERROR, "{0} overrides nothing", DescriptorRenderer.TEXT); - PsiElementOnlyDiagnosticFactory1 PRIMARY_CONSTRUCTOR_MISSING_STATEFUL_PROPERTY = PsiElementOnlyDiagnosticFactory1.create(ERROR, "This class must have a primary constructor, because property {0} has a backing field"); - ParameterizedDiagnosticFactory1 PRIMARY_CONSTRUCTOR_MISSING_SUPER_CONSTRUCTOR_CALL = new ParameterizedDiagnosticFactory1(ERROR, "Class {0} must have a constructor in order to be able to initialize supertypes") { - @Override - protected String makeMessageFor(@NotNull JetClassOrObject argument) { - return JetPsiUtil.safeName(argument.getName()); - } - }; PsiElementOnlyDiagnosticFactory3 VIRTUAL_MEMBER_HIDDEN = PsiElementOnlyDiagnosticFactory3.create(ERROR, "''{0}'' hides ''{1}'' in class {2} and needs 'override' modifier", DescriptorRenderer.TEXT); PsiElementOnlyDiagnosticFactory1 UNINITIALIZED_VARIABLE = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Variable ''{0}'' must be initialized", NAME); @@ -217,7 +210,7 @@ public interface Errors { SimpleDiagnosticFactory CAST_NEVER_SUCCEEDS = SimpleDiagnosticFactory.create(WARNING, "This cast can never succeed"); DiagnosticWithParameterFactory WRONG_SETTER_PARAMETER_TYPE = DiagnosticWithParameterFactory.create(ERROR, "Setter parameter type must be equal to the type of the property, i.e. {0}", DiagnosticParameters.TYPE); DiagnosticWithParameterFactory WRONG_GETTER_RETURN_TYPE = DiagnosticWithParameterFactory.create(ERROR, "Getter return type must be equal to the type of the property, i.e. {0}", DiagnosticParameters.TYPE); - ParameterizedDiagnosticFactory1 NO_CLASS_OBJECT = ParameterizedDiagnosticFactory1.create(ERROR, "Classifier {0} does not have a class object", NAME); + ParameterizedDiagnosticFactory1 NO_CLASS_OBJECT = ParameterizedDiagnosticFactory1.create(ERROR, "Please specify constructor invocation; classifier {0} does not have a class object", NAME); SimpleDiagnosticFactory NO_GENERICS_IN_SUPERTYPE_SPECIFIER = SimpleDiagnosticFactory.create(ERROR, "Generic arguments of the base type must be specified"); SimpleDiagnosticFactory HAS_NEXT_PROPERTY_AND_FUNCTION_AMBIGUITY = SimpleDiagnosticFactory.create(ERROR, "An ambiguity between 'iterator().hasNext()' function and 'iterator().hasNext' property"); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/FunctionSignatureDiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/FunctionSignatureDiagnosticFactory.java index 64d650393a5..8810bdc50a8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/FunctionSignatureDiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/FunctionSignatureDiagnosticFactory.java @@ -27,15 +27,17 @@ public class FunctionSignatureDiagnosticFactory extends DiagnosticFactoryWithMes // primary constructor JetClass klass = (JetClass) jetDeclaration; PsiElement nameAsDeclaration = klass.getNameIdentifier(); - PsiElement primaryConstructorParameterList = klass.getPrimaryConstructorParameterList(); - if (nameAsDeclaration == null || primaryConstructorParameterList == null) { + if (nameAsDeclaration == null){ return klass.getTextRange(); - } else { - return new TextRange( - nameAsDeclaration.getTextRange().getStartOffset(), - primaryConstructorParameterList.getTextRange().getEndOffset() - ); } + PsiElement primaryConstructorParameterList = klass.getPrimaryConstructorParameterList(); + if (primaryConstructorParameterList == null) { + return nameAsDeclaration.getTextRange(); + } + return new TextRange( + nameAsDeclaration.getTextRange().getStartOffset(), + primaryConstructorParameterList.getTextRange().getEndOffset() + ); } else { // safe way return jetDeclaration.getTextRange(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java index a0c94512896..17efe9e1075 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java @@ -120,32 +120,26 @@ public class BodyResolver { context.getTrace().report(SUPERTYPE_INITIALIZED_IN_TRAIT.on(node)); } JetTypeReference typeReference = call.getTypeReference(); - if (typeReference != null) { - if (descriptor.getUnsubstitutedPrimaryConstructor() != null) { - OverloadResolutionResults results = new CallResolver(context.getSemanticServices(), DataFlowInfo.EMPTY).resolveCall( - context.getTrace(), scopeForConstructor, - CallMaker.makeCall(ReceiverDescriptor.NO_RECEIVER, null, call), NO_EXPECTED_TYPE); - if (results.isSuccess()) { - JetType supertype = results.getResultingDescriptor().getReturnType(); - recordSupertype(typeReference, supertype); - ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(supertype); - if (classDescriptor != null) { - if (classDescriptor.getKind() == ClassKind.TRAIT) { - context.getTrace().report(CONSTRUCTOR_IN_TRAIT.on(node)); - } - } - } - else { - recordSupertype(typeReference, context.getTrace().getBindingContext().get(BindingContext.TYPE, typeReference)); + if (typeReference == null) return; + if (descriptor.getUnsubstitutedPrimaryConstructor() == null) { + assert descriptor.getKind() == ClassKind.TRAIT; + return; + } + OverloadResolutionResults results = new CallResolver(context.getSemanticServices(), DataFlowInfo.EMPTY).resolveCall( + context.getTrace(), scopeForConstructor, + CallMaker.makeCall(ReceiverDescriptor.NO_RECEIVER, null, call), NO_EXPECTED_TYPE); + if (results.isSuccess()) { + JetType supertype = results.getResultingDescriptor().getReturnType(); + recordSupertype(typeReference, supertype); + ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(supertype); + if (classDescriptor != null) { + if (classDescriptor.getKind() == ClassKind.TRAIT) { + context.getTrace().report(CONSTRUCTOR_IN_TRAIT.on(node)); } } - else if (descriptor.getKind() != ClassKind.TRAIT) { - JetType supertype = context.getTrace().getBindingContext().get(BindingContext.TYPE, typeReference); - recordSupertype(typeReference, supertype); - - assert valueArgumentList != null; - context.getTrace().report(PRIMARY_CONSTRUCTOR_MISSING_SUPER_CONSTRUCTOR_CALL.on(valueArgumentList, jetClass)); - } + } + else { + recordSupertype(typeReference, context.getTrace().getBindingContext().get(BindingContext.TYPE, typeReference)); } } @@ -159,7 +153,18 @@ public class BodyResolver { if (classDescriptor != null) { if (descriptor.getKind() != ClassKind.TRAIT) { if (classDescriptor.hasConstructors() && !ErrorUtils.isError(classDescriptor.getTypeConstructor()) && classDescriptor.getKind() != ClassKind.TRAIT) { - context.getTrace().report(SUPERTYPE_NOT_INITIALIZED.on(specifier)); + boolean hasConstructorWithoutParams = false; + for (ConstructorDescriptor constructor : classDescriptor.getConstructors()) { + if (constructor.getValueParameters().isEmpty()) { + hasConstructorWithoutParams = true; + } + } + if (!hasConstructorWithoutParams) { + context.getTrace().report(SUPERTYPE_NOT_INITIALIZED.on(specifier)); + } + else { + context.getTrace().report(SUPERTYPE_NOT_INITIALIZED_DEFAULT.on(specifier)); + } } } } @@ -287,9 +292,7 @@ public class BodyResolver { final CallResolver callResolver = new CallResolver(context.getSemanticServices(), DataFlowInfo.EMPTY); // TODO: dataFlowInfo - JetClass containingClass = PsiTreeUtil.getParentOfType(declaration, JetClass.class); - assert containingClass != null : "This must be guaranteed by the parser"; - if (!containingClass.hasPrimaryConstructor()) { + if (classDescriptor.getUnsubstitutedPrimaryConstructor() == null) { context.getTrace().report(SECONDARY_CONSTRUCTOR_BUT_NO_PRIMARY.on(declaration.getNameNode())); } else { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index 9cb35b42de3..ddaa26a1902 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -143,11 +143,12 @@ public class DeclarationResolver { } private void processPrimaryConstructor(MutableClassDescriptor classDescriptor, JetClass klass) { - if (!klass.hasPrimaryConstructor()) return; - if (classDescriptor.getKind() == ClassKind.TRAIT) { -// context.getTrace().getErrorHandler().genericError(klass.getPrimaryConstructorParameterList().getNode(), "A trait may not have a constructor"); - context.getTrace().report(CONSTRUCTOR_IN_TRAIT.on(klass.getPrimaryConstructorParameterList())); + JetParameterList primaryConstructorParameterList = klass.getPrimaryConstructorParameterList(); + if (primaryConstructorParameterList != null) { + context.getTrace().report(CONSTRUCTOR_IN_TRAIT.on(primaryConstructorParameterList)); + } + if (!klass.hasPrimaryConstructor()) return; } // TODO : not all the parameters are real properties diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java index a96b6c41d82..ecd6e1058cb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -34,8 +34,6 @@ public class DeclarationsChecker { } public void process() { - checkIfPrimaryConstructorIsNecessary(); - Map classes = context.getClasses(); for (Map.Entry entry : classes.entrySet()) { JetClass aClass = entry.getKey(); @@ -77,25 +75,6 @@ public class DeclarationsChecker { } - private void checkIfPrimaryConstructorIsNecessary() { - for (Map.Entry entry : context.getClasses().entrySet()) { - MutableClassDescriptor classDescriptor = entry.getValue(); - JetClass jetClass = entry.getKey(); - if (!context.completeAnalysisNeeded(jetClass)) return; - if (classDescriptor.getUnsubstitutedPrimaryConstructor() == null && !(classDescriptor.getKind() == ClassKind.TRAIT)) { - for (PropertyDescriptor propertyDescriptor : classDescriptor.getProperties()) { - if (context.getTrace().getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { - PsiElement nameIdentifier = jetClass.getNameIdentifier(); - if (nameIdentifier != null) { - context.getTrace().report(PRIMARY_CONSTRUCTOR_MISSING_STATEFUL_PROPERTY.on(jetClass, nameIdentifier, propertyDescriptor)); - } - break; - } - } - } - } - } - private void checkClass(JetClass aClass, MutableClassDescriptor classDescriptor) { checkOpenMembers(aClass, classDescriptor); checkTraitModifiers(aClass); @@ -246,12 +225,6 @@ public class DeclarationsChecker { else if (!backingFieldRequired) { context.getTrace().report(PROPERTY_INITIALIZER_NO_BACKING_FIELD.on(initializer)); } - else if (classDescriptor != null && classDescriptor.getUnsubstitutedPrimaryConstructor() == null) { - PsiElement classElement = context.getTrace().get(BindingContext.DESCRIPTOR_TO_DECLARATION, classDescriptor); - assert classElement instanceof JetClass; - - context.getTrace().report(PROPERTY_INITIALIZER_NO_PRIMARY_CONSTRUCTOR.on(property, initializer, (JetClass) classElement)); - } } protected void checkFunction(JetNamedFunction function, NamedFunctionDescriptor functionDescriptor) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index 856281c2e96..d5278801f5b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -788,7 +788,7 @@ public class DescriptorResolver { @Nullable public ConstructorDescriptorImpl resolvePrimaryConstructorDescriptor(@NotNull JetScope scope, @NotNull ClassDescriptor classDescriptor, @NotNull JetClass classElement) { - if (!classElement.hasPrimaryConstructor()) return null; + if (classDescriptor.getKind() == ClassKind.ENUM_ENTRY && !classElement.hasPrimaryConstructor()) return null; return createConstructorDescriptor( scope, classDescriptor, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index d6f870638a7..d28a08311ad 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -105,7 +105,7 @@ public class TypeHierarchyResolver { @Override public void visitObjectDeclaration(JetObjectDeclaration declaration) { - final MutableClassDescriptor objectDescriptor = createClassDescriptorForObject(declaration, owner, outerScope); + final MutableClassDescriptor objectDescriptor = createClassDescriptorForObject(declaration, owner, outerScope, ClassKind.OBJECT); context.getTrace().record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getFQName(declaration), objectDescriptor); } @@ -114,32 +114,27 @@ public class TypeHierarchyResolver { MutableClassDescriptor classObjectDescriptor = ((MutableClassDescriptor) owner).getClassObjectDescriptor(); assert classObjectDescriptor != null : enumEntry.getParent().getText(); if (enumEntry.getPrimaryConstructorParameterList() == null) { - MutableClassDescriptor classDescriptor = createClassDescriptorForObject(enumEntry, classObjectDescriptor, outerScopeForStatic); - context.getObjects().remove(enumEntry); - context.getClasses().put(enumEntry, classDescriptor); - } - else { - // TODO : Special kind for enum entry classes? - MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), classObjectDescriptor, outerScope, ClassKind.CLASS); - visitClassOrObject( - enumEntry, - (Map) context.getClasses(), - mutableClassDescriptor - ); - classObjectDescriptor.addClassifierDescriptor(mutableClassDescriptor); + createClassDescriptorForObject(enumEntry, classObjectDescriptor, outerScopeForStatic, ClassKind.ENUM_ENTRY); + return; } + MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), classObjectDescriptor, outerScope, ClassKind.ENUM_ENTRY); + visitClassOrObject( + enumEntry, + (Map) context.getClasses(), + mutableClassDescriptor + ); + classObjectDescriptor.addClassifierDescriptor(mutableClassDescriptor); } - private MutableClassDescriptor createClassDescriptorForObject(@NotNull JetClassOrObject declaration, - @NotNull NamespaceLike owner, JetScope scope) { - MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), owner, scope, ClassKind.OBJECT) { + private MutableClassDescriptor createClassDescriptorForObject(@NotNull JetClassOrObject declaration, @NotNull NamespaceLike owner, JetScope scope, ClassKind classKind) { + MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), owner, scope, classKind) { @Override public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) { return ClassObjectStatus.NOT_ALLOWED; } }; - - visitClassOrObject(declaration, (Map) context.getObjects(), mutableClassDescriptor); + Map map = classKind == ClassKind.OBJECT ? (Map) context.getObjects() : (Map) context.getClasses(); + visitClassOrObject(declaration, map, mutableClassDescriptor); createPrimaryConstructorForObject((JetDeclaration) declaration, mutableClassDescriptor); owner.addObjectDescriptor(mutableClassDescriptor); context.getTrace().record(BindingContext.CLASS, declaration, mutableClassDescriptor); @@ -176,7 +171,7 @@ public class TypeHierarchyResolver { public void visitClassObject(JetClassObject classObject) { JetObjectDeclaration objectDeclaration = classObject.getObjectDeclaration(); if (objectDeclaration != null) { - NamespaceLike.ClassObjectStatus status = owner.setClassObjectDescriptor(createClassDescriptorForObject(objectDeclaration, owner, outerScopeForStatic)); + NamespaceLike.ClassObjectStatus status = owner.setClassObjectDescriptor(createClassDescriptorForObject(objectDeclaration, owner, outerScopeForStatic, ClassKind.OBJECT)); switch (status) { case DUPLICATE: context.getTrace().report(MANY_CLASS_OBJECTS.on(classObject)); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index 4dd22c37d49..1bb016f799e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -80,7 +80,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { if (classifier != null) { context.trace.report(NO_CLASS_OBJECT.on(expression, classifier)); context.trace.record(REFERENCE_TARGET, expression, classifier); - return ErrorUtils.createErrorType("No class object in " + expression.getReferencedName()); + return classifier.getDefaultType(); } temporaryTrace.commit(); return result[0]; diff --git a/compiler/testData/codegen/bridge.jet b/compiler/testData/codegen/bridge.jet index 4efc72ba09e..0aa86e3aa2a 100644 --- a/compiler/testData/codegen/bridge.jet +++ b/compiler/testData/codegen/bridge.jet @@ -4,7 +4,7 @@ open class C { open fun f(): Any = "C f" } -class D() : C { +class D() : C() { override fun f(): String = "D f" } diff --git a/compiler/testData/codegen/classes/classObjectMethod.jet b/compiler/testData/codegen/classes/classObjectMethod.jet index d7d70a86d96..19aa6482a5b 100644 --- a/compiler/testData/codegen/classes/classObjectMethod.jet +++ b/compiler/testData/codegen/classes/classObjectMethod.jet @@ -3,7 +3,7 @@ abstract open class Default { } class MyInt() { - class object : Default { + class object : Default() { override fun defaultValue(): Int = 610 } } diff --git a/compiler/testData/codegen/classes/inheritedMethod.jet b/compiler/testData/codegen/classes/inheritedMethod.jet index 597910dc7b4..fb9c3bfe080 100644 --- a/compiler/testData/codegen/classes/inheritedMethod.jet +++ b/compiler/testData/codegen/classes/inheritedMethod.jet @@ -2,7 +2,7 @@ open class Foo { fun xyzzy(): String = "xyzzy" } -class Bar(): Foo { +class Bar(): Foo() { fun test(): String = xyzzy() } diff --git a/compiler/testData/codegen/traits/withRequired.jet b/compiler/testData/codegen/traits/withRequired.jet index 64e4df814ee..bb5f05817b9 100644 --- a/compiler/testData/codegen/traits/withRequired.jet +++ b/compiler/testData/codegen/traits/withRequired.jet @@ -6,7 +6,7 @@ trait ALE : AL { fun getOrValue(index: Int, value : T) : T = get(index) ?: value } -class SmartArrayList() : ALE, AL { +class SmartArrayList() : ALE, AL() { } fun box() : String { diff --git a/compiler/testData/diagnostics/tests/Bounds.jet b/compiler/testData/diagnostics/tests/Bounds.jet index cbb0c25b0da..8b39d32364d 100644 --- a/compiler/testData/diagnostics/tests/Bounds.jet +++ b/compiler/testData/diagnostics/tests/Bounds.jet @@ -3,7 +3,7 @@ package boundsWithSubstitutors open class A class B>() - class C : A + class C : A() val a = B() val a1 = B<Int>() diff --git a/compiler/testData/diagnostics/tests/Constructors.jet b/compiler/testData/diagnostics/tests/Constructors.jet index e6ce2e54a41..be8aa235f58 100644 --- a/compiler/testData/diagnostics/tests/Constructors.jet +++ b/compiler/testData/diagnostics/tests/Constructors.jet @@ -1,14 +1,14 @@ open class NoC -class NoC1 : NoC +class NoC1 : NoC -class WithC0() : NoC() -open class WithC1() : NoC -class NoC2 : WithC1 -class NoC3 : WithC1() -class WithC2() : WithC1 +class WithC0() : NoC() +open class WithC1() : NoC +class NoC2 : WithC1 +class NoC3 : WithC1() +class WithC2() : WithC1 -class NoPC { - this() {} +class NoPC { + this() {} } class WithPC0() { @@ -28,7 +28,7 @@ class WithPC1(a : Int) { } -class Foo() : WithPC0, this() { +class Foo() : WithPC0, this() { } @@ -42,9 +42,9 @@ class WithCPI(x : Int) { val xy : Int = x } -class NoCPI { - val a = 1 +class NoCPI { + val a = 1 var ab = 1 get() = 1 set(v) {} -} +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/NamespaceQualified.jet b/compiler/testData/diagnostics/tests/NamespaceQualified.jet index ea27a3d81f6..ab5f51b7834 100644 --- a/compiler/testData/diagnostics/tests/NamespaceQualified.jet +++ b/compiler/testData/diagnostics/tests/NamespaceQualified.jet @@ -40,14 +40,14 @@ abstract class Iteratee { abstract fun done() : O } -class StrangeIterateeImpl(val obj: O) : Iteratee { +class StrangeIterateeImpl(val obj: O) : Iteratee() { override fun process(item: I): Iteratee = StrangeIterateeImpl(obj) override val isDone = true override val result = obj override fun done() = obj } -abstract class Sum() : Iteratee { +abstract class Sum() : Iteratee() { override fun process(item : Int) : Iteratee { return foobar.done(item); } diff --git a/compiler/testData/diagnostics/tests/Objects.jet b/compiler/testData/diagnostics/tests/Objects.jet index b1ca0a11d32..6940f35cab2 100644 --- a/compiler/testData/diagnostics/tests/Objects.jet +++ b/compiler/testData/diagnostics/tests/Objects.jet @@ -71,7 +71,7 @@ package localObjects fun test() { A.x - val b = object : Foo { + val b = object : Foo() { } b.foo() diff --git a/compiler/testData/diagnostics/tests/Override.jet b/compiler/testData/diagnostics/tests/Override.jet index 2cd478b431e..d7d6997e0cd 100644 --- a/compiler/testData/diagnostics/tests/Override.jet +++ b/compiler/testData/diagnostics/tests/Override.jet @@ -11,7 +11,7 @@ package override.normal } - open class MyClass() : MyTrait, MyAbstractClass { + open class MyClass() : MyTrait, MyAbstractClass() { override fun foo() {} override fun bar() {} @@ -21,21 +21,21 @@ package override.normal class MyChildClass() : MyClass() {} - class MyIllegalClass : MyTrait, MyAbstractClass {} + class MyIllegalClass : MyTrait, MyAbstractClass() {} - class MyIllegalClass2() : MyTrait, MyAbstractClass { + class MyIllegalClass2() : MyTrait, MyAbstractClass() { override fun foo() {} override val pr : Unit = #() override val prr : Unit = #() } - class MyIllegalClass3() : MyTrait, MyAbstractClass { + class MyIllegalClass3() : MyTrait, MyAbstractClass() { override fun bar() {} override val pr : Unit = #() override val prr : Unit = #() } - class MyIllegalClass4() : MyTrait, MyAbstractClass { + class MyIllegalClass4() : MyTrait, MyAbstractClass() { fun foo() {} val pr : Unit override fun other() {} @@ -65,7 +65,7 @@ package override.generics val p : T } - open class MyGenericClass(t : T) : MyTrait, MyAbstractClass, MyProps { + open class MyGenericClass(t : T) : MyTrait, MyAbstractClass(), MyProps { override fun foo(t: T) = t override fun bar(t: T) = t override val p : T = t @@ -81,31 +81,31 @@ package override.generics override val p : T = t } - open class MyClass() : MyTrait, MyAbstractClass { + open class MyClass() : MyTrait, MyAbstractClass() { override fun foo(i: Int) = i override fun bar(s: String) = s override val pr : String = "1" } - abstract class MyAbstractClass1 : MyTrait, MyAbstractClass { + abstract class MyAbstractClass1 : MyTrait, MyAbstractClass() { override fun foo(i: Int) = i override fun bar(s: String) = s } - class MyIllegalGenericClass1 : MyTrait, MyAbstractClass {} - class MyIllegalGenericClass2(r : R) : MyTrait, MyAbstractClass { + class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} + class MyIllegalGenericClass2(r : R) : MyTrait, MyAbstractClass() { override fun foo(r: R) = r override val pr : R = r } - class MyIllegalClass1 : MyTrait, MyAbstractClass {} - abstract class MyLegalAbstractClass1 : MyTrait, MyAbstractClass {} + class MyIllegalClass1 : MyTrait, MyAbstractClass() {} + abstract class MyLegalAbstractClass1 : MyTrait, MyAbstractClass() {} - class MyIllegalClass2(t : T) : MyTrait, MyAbstractClass { + class MyIllegalClass2(t : T) : MyTrait, MyAbstractClass() { fun foo(t: T) = t fun bar(t: T) = t val pr : T = t } - abstract class MyLegalAbstractClass2(t : T) : MyTrait, MyAbstractClass { + abstract class MyLegalAbstractClass2(t : T) : MyTrait, MyAbstractClass() { fun foo(t: T) = t fun bar(t: T) = t val pr : T = t diff --git a/compiler/testData/diagnostics/tests/PrimaryConstructors.jet b/compiler/testData/diagnostics/tests/PrimaryConstructors.jet index 8756860955f..ae0c92409e0 100644 --- a/compiler/testData/diagnostics/tests/PrimaryConstructors.jet +++ b/compiler/testData/diagnostics/tests/PrimaryConstructors.jet @@ -1,4 +1,6 @@ -class X { +//+JDK + +class X { val x : Int } @@ -10,5 +12,20 @@ class Y1 { val x : Int get() = 1 } -class Z : Y() { +class Z : Y() { +} + +//KT-650 Prohibit creating class without constructor. + +class MyIterable : Iterable +{ + override fun iterator(): Iterator = MyIterator() + + class MyIterator : Iterator + { + override val hasNext: Boolean = false + override fun next(): T { + throw UnsupportedOperationException() + } + } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/SupertypeListChecks.jet b/compiler/testData/diagnostics/tests/SupertypeListChecks.jet index b63a4d3af5d..5cd876845ac 100644 --- a/compiler/testData/diagnostics/tests/SupertypeListChecks.jet +++ b/compiler/testData/diagnostics/tests/SupertypeListChecks.jet @@ -39,13 +39,12 @@ trait Test6 : C1 {} class CTest1() : OC1() {} -class CTest2 : C2 {} +class CTest2 : C2 {} -class CTest3 : C2, C3 {} +class CTest3 : C2, C3 {} class CTest4 : T1 {} class CTest5 : T1, T1 {} -class CTest6 : C1 {} - +class CTest6 : C1 {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/TraitSupertypeList.jet b/compiler/testData/diagnostics/tests/TraitSupertypeList.jet index 7f109773457..43d4f0a6919 100644 --- a/compiler/testData/diagnostics/tests/TraitSupertypeList.jet +++ b/compiler/testData/diagnostics/tests/TraitSupertypeList.jet @@ -7,5 +7,5 @@ trait Foo() : bar() trait Foo2 : bar, Foo { } -open class Foo1() : bar(), bar, Foo, Foo() {} -open class Foo12 : bar(), bar {} \ No newline at end of file +open class Foo1() : bar(), bar, Foo, Foo() {} +open class Foo12 : bar(), bar {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/cast/IsErasedAllowParameterSubtype.jet b/compiler/testData/diagnostics/tests/cast/IsErasedAllowParameterSubtype.jet index a4d9a515e30..f7b2c7c22c5 100644 --- a/compiler/testData/diagnostics/tests/cast/IsErasedAllowParameterSubtype.jet +++ b/compiler/testData/diagnostics/tests/cast/IsErasedAllowParameterSubtype.jet @@ -5,7 +5,7 @@ import java.util.List; open class A -class B : A +class B : A() fun ff(l: Collection) = l is List diff --git a/compiler/testData/diagnostics/tests/regressions/Jet11.jet b/compiler/testData/diagnostics/tests/regressions/Jet11.jet index eb42b6f2427..562d0871d5b 100644 --- a/compiler/testData/diagnostics/tests/regressions/Jet11.jet +++ b/compiler/testData/diagnostics/tests/regressions/Jet11.jet @@ -1,4 +1,4 @@ // JET-11 Redeclaration & Forward reference for classes cause an exception open class NoC -class NoC1 : NoC +class NoC1 : NoC() open class NoC diff --git a/compiler/testData/diagnostics/tests/regressions/OverrideResolution.jet b/compiler/testData/diagnostics/tests/regressions/OverrideResolution.jet index e4af018eda2..26a262dc8c1 100644 --- a/compiler/testData/diagnostics/tests/regressions/OverrideResolution.jet +++ b/compiler/testData/diagnostics/tests/regressions/OverrideResolution.jet @@ -7,10 +7,10 @@ open class A { open fun foo() {} } -open class B : A { +open class B : A() { override fun foo() {} } -open class C : B { +open class C : B() { override fun foo() {} } diff --git a/compiler/testData/resolve/Basic.jet b/compiler/testData/resolve/Basic.jet index 9156af87783..ea9e8c4a5ff 100644 --- a/compiler/testData/resolve/Basic.jet +++ b/compiler/testData/resolve/Basic.jet @@ -1,12 +1,12 @@ ~A~class A { ~B~class B { - ~B()~this() {} + ~B()~this(i: Int) {} } ~foo~fun foo(~foo.a~a : `std::Char`Char) = `foo.a`a`:std::Char` ~fooB~fun fooB() = `foo`foo('1')`:std::Char` ~foo.1~fun foo() : Int = (1.`std::Int.plus(Int)`plus(1))`:std::Int` - ~foo1~fun foo1() : `B`B = `B()`B()`:B` + ~foo1~fun foo1() : `B`B = `B`B()`:B` ~A.a~val a : `std::Int`Int } diff --git a/compiler/testData/resolve/ClassObjects.jet b/compiler/testData/resolve/ClassObjects.jet index b9fc8ccc233..b661ddd2b53 100644 --- a/compiler/testData/resolve/ClassObjects.jet +++ b/compiler/testData/resolve/ClassObjects.jet @@ -11,5 +11,5 @@ package Jet86 } val a = `A`A.`A.x`x -val c = `B`B.`!error`x +val c = `B`B.`B.x`x val d = B().`B.x`x \ No newline at end of file diff --git a/compiler/testData/resolve/ResolveOfInfixExpressions.jet b/compiler/testData/resolve/ResolveOfInfixExpressions.jet index d66c8a7eee0..2298f7d0034 100644 --- a/compiler/testData/resolve/ResolveOfInfixExpressions.jet +++ b/compiler/testData/resolve/ResolveOfInfixExpressions.jet @@ -8,7 +8,6 @@ fun f_plus(): Int { } ~X~class X<~T~T> { - ~X()~this() {} fun foo(a : `T`T) : `X`X<`T`T>{} ~plus~fun plus(t : `T`T) : Int {} ~minus~fun minus(t : String) : Int {} @@ -23,7 +22,7 @@ fun f_plus(): Int { ~t~fun <~t.T~T> t(~t.t~t : `t.T`T) : `t.T`T { `t`t(1)`:std::Int` `t`t<`t.T`T>(`t.t`t)`:t.T` - `X()`X<`t.T`T>() + `X`X<`t.T`T>() 1 `std::Int.plus(Int)`+ 1 1 `std::Int.plus(Int)`+= 1 X() `plus`+ "1" @@ -50,7 +49,6 @@ fun f_plus(): Int { } ~Bar~class Bar : Foo { - ~Bar()~this() {} ~not~fun not() : String {} ~inc~fun inc() : Bar ~dec~fun dec() : Bar @@ -61,7 +59,7 @@ fun f_plus(): Int { fun tt(t : T) : T { val x : List = 0 x`java::java.util.List.get()`[1] - val foo = `Bar()`Bar() + val foo = `Bar`Bar() foo`!!`[null, 1] foo`get2`[1, 1] foo`get1`[1] diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java index 54a4248003e..6cc4203a50d 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java @@ -93,12 +93,6 @@ public class QuickFixes { add(Errors.REDUNDANT_MODIFIER_IN_TRAIT, removeRedundantModifierFactory); add(Errors.TRAIT_CAN_NOT_BE_FINAL, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(JetTokens.FINAL_KEYWORD)); - add(Errors.PROPERTY_INITIALIZER_NO_PRIMARY_CONSTRUCTOR, RemovePartsFromPropertyFix.createRemoveInitializerFactory()); - - JetIntentionActionFactory addPrimaryConstructorFactory = AddPrimaryConstructorFix.createFactory(); - add(Errors.PROPERTY_INITIALIZER_NO_PRIMARY_CONSTRUCTOR, QuickFixUtil.createFactoryRedirectingAdditionalInfoToAnotherFactory(addPrimaryConstructorFactory, DiagnosticParameters.CLASS)); - add(Errors.PRIMARY_CONSTRUCTOR_MISSING_STATEFUL_PROPERTY, addPrimaryConstructorFactory); - JetIntentionActionFactory addOpenModifierFactory = AddModifierFix.createFactory(JetTokens.OPEN_KEYWORD, new JetToken[]{JetTokens.FINAL_KEYWORD}); JetIntentionActionFactory removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(JetTokens.OPEN_KEYWORD); add(Errors.NON_FINAL_MEMBER_IN_FINAL_CLASS, QuickFixUtil.createFactoryRedirectingAdditionalInfoToAnotherFactory(addOpenModifierFactory, DiagnosticParameters.CLASS)); diff --git a/idea/testData/checker/BoundsWithSubstitutors.jet b/idea/testData/checker/BoundsWithSubstitutors.jet index 84ec2487842..6b55415c7fb 100644 --- a/idea/testData/checker/BoundsWithSubstitutors.jet +++ b/idea/testData/checker/BoundsWithSubstitutors.jet @@ -1,7 +1,7 @@ open class A class B>() - class C : A + class C : A() val a = B() val a1 = B<Int>() diff --git a/idea/testData/checker/Builders.jet b/idea/testData/checker/Builders.jet index e956933d932..7b21d18e112 100644 --- a/idea/testData/checker/Builders.jet +++ b/idea/testData/checker/Builders.jet @@ -2,11 +2,11 @@ package html import java.util.* - abstract class Factory { - abstract fun create() : T + trait Factory { + fun create() : T } - abstract class Element + trait Element class TextElement(val text : String) : Element diff --git a/idea/testData/checker/Constructors.jet b/idea/testData/checker/Constructors.jet index 6891d8f1f98..b2fabb321de 100644 --- a/idea/testData/checker/Constructors.jet +++ b/idea/testData/checker/Constructors.jet @@ -1,15 +1,15 @@ open class NoC -class NoC1 : NoC +class NoC1 : NoC() -class WithC0() : NoC() -open class WithC1() : NoC +class WithC0() : NoC() +open class WithC1() : NoC() class NoC2 : WithC1 -class NoC3 : WithC1() +class NoC3 : WithC1() class WithC2() : WithC1 -class NoPC { - this() {} +class NoPC { + this() {} } class WithPC0() { @@ -29,7 +29,7 @@ class WithPC1(a : Int) { } -class Foo() : WithPC0, this() { +class Foo() : WithPC0(), this() { } @@ -43,8 +43,8 @@ class WithCPI(x : Int) { val xy : Int = x } -class NoCPI { - val a = 1 +class NoCPI { + val a = 1 var ab = 1 get() = 1 set(v) {} diff --git a/idea/testData/checker/LocalObjects.jet b/idea/testData/checker/LocalObjects.jet index d16ec106006..f75cf687c96 100644 --- a/idea/testData/checker/LocalObjects.jet +++ b/idea/testData/checker/LocalObjects.jet @@ -8,7 +8,7 @@ fun test() { A.x - val b = object : Foo { + val b = object : Foo() { } b.foo() diff --git a/idea/testData/checker/NamespaceQualified.jet b/idea/testData/checker/NamespaceQualified.jet index b76ee0d7f26..b70861f06ee 100644 --- a/idea/testData/checker/NamespaceQualified.jet +++ b/idea/testData/checker/NamespaceQualified.jet @@ -14,14 +14,14 @@ abstract class Iteratee { abstract fun done() : O } -class StrangeIterateeImpl(val obj: O) : Iteratee { +class StrangeIterateeImpl(val obj: O) : Iteratee() { override fun process(item: I): Iteratee = StrangeIterateeImpl(obj) override val isDone = true override val result = obj override fun done() = obj } -abstract class Sum() : Iteratee { +abstract class Sum() : Iteratee() { override fun process(item : Int) : Iteratee { return a.done(item); } diff --git a/idea/testData/checker/Override.jet b/idea/testData/checker/Override.jet index a837c7f27a2..3d1e6876cc1 100644 --- a/idea/testData/checker/Override.jet +++ b/idea/testData/checker/Override.jet @@ -8,29 +8,29 @@ package override abstract fun bar() } - open class MyClass : MyTrait, MyAbstractClass { + open class MyClass : MyTrait, MyAbstractClass() { override fun foo() {} override fun bar() {} } - class MyChildClass : MyClass {} + class MyChildClass : MyClass() {} - class MyIllegalClass : MyTrait, MyAbstractClass {} + class MyIllegalClass : MyTrait, MyAbstractClass() {} - class MyIllegalClass2 : MyTrait, MyAbstractClass { + class MyIllegalClass2 : MyTrait, MyAbstractClass() { override fun foo() {} } - class MyIllegalClass3 : MyTrait, MyAbstractClass { + class MyIllegalClass3 : MyTrait, MyAbstractClass() { override fun bar() {} } - class MyIllegalClass4 : MyTrait, MyAbstractClass { + class MyIllegalClass4 : MyTrait, MyAbstractClass() { fun foo() {} override fun other() {} } - class MyChildClass1 : MyClass { + class MyChildClass1 : MyClass() { fun foo() {} override fun bar() {} } diff --git a/idea/testData/checker/OverridesAndGenerics.jet b/idea/testData/checker/OverridesAndGenerics.jet index f4fb20575e5..eaac04b3db3 100644 --- a/idea/testData/checker/OverridesAndGenerics.jet +++ b/idea/testData/checker/OverridesAndGenerics.jet @@ -6,30 +6,30 @@ abstract fun bar(t: T) : T } - open class MyGenericClass : MyTrait, MyAbstractClass { + open class MyGenericClass : MyTrait, MyAbstractClass() { override fun foo(t: T) = t override fun bar(t: T) = t } - class MyChildClass : MyGenericClass {} - class MyChildClass1 : MyGenericClass {} - class MyChildClass2 : MyGenericClass { + class MyChildClass : MyGenericClass() {} + class MyChildClass1 : MyGenericClass() {} + class MyChildClass2 : MyGenericClass() { fun foo(t: T) = t override fun bar(t: T) = t } - open class MyClass : MyTrait, MyAbstractClass { + open class MyClass : MyTrait, MyAbstractClass() { override fun foo(i: Int) = i override fun bar(s: String) = s } - class MyIllegalGenericClass1 : MyTrait, MyAbstractClass {} - class MyIllegalGenericClass2 : MyTrait, MyAbstractClass { + class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} + class MyIllegalGenericClass2 : MyTrait, MyAbstractClass() { override fun foo(r: R) = r } - class MyIllegalClass1 : MyTrait, MyAbstractClass {} + class MyIllegalClass1 : MyTrait, MyAbstractClass() {} - class MyIllegalClass2 : MyTrait, MyAbstractClass { + class MyIllegalClass2 : MyTrait, MyAbstractClass() { fun foo(t: T) = t fun bar(t: T) = t } diff --git a/idea/testData/checker/PrimaryConstructors.jet b/idea/testData/checker/PrimaryConstructors.jet index 2ea2ef34ab9..4b5c750568c 100644 --- a/idea/testData/checker/PrimaryConstructors.jet +++ b/idea/testData/checker/PrimaryConstructors.jet @@ -1,4 +1,4 @@ -class X { +class X { val x : Int } @@ -10,5 +10,5 @@ class Y1 { val x : Int get() = 1 } -class Z : Y() { +class Z : Y() { } \ No newline at end of file diff --git a/idea/testData/checker/SupertypeListChecks.jet b/idea/testData/checker/SupertypeListChecks.jet index b040428ec85..4a0cde7049c 100644 --- a/idea/testData/checker/SupertypeListChecks.jet +++ b/idea/testData/checker/SupertypeListChecks.jet @@ -39,9 +39,9 @@ trait Test6 : C1 {} class CTest1() : OC1() {} -class CTest2 : C2 {} +class CTest2 : C2 {} -class CTest3 : C2, C3 {} +class CTest3 : C2, C3 {} class CTest4 : T1 {} diff --git a/idea/testData/checker/TraitSupertypeList.jet b/idea/testData/checker/TraitSupertypeList.jet index 37e17339fec..696e5d5424e 100644 --- a/idea/testData/checker/TraitSupertypeList.jet +++ b/idea/testData/checker/TraitSupertypeList.jet @@ -8,4 +8,4 @@ trait Foo2 : bar, Foo { } open class Foo1() : bar(), bar, Foo, Foo() {} -open class Foo12 : bar(), bar {} \ No newline at end of file +open class Foo12 : bar(), bar {} \ No newline at end of file diff --git a/idea/testData/checker/regression/Jet11.jet b/idea/testData/checker/regression/Jet11.jet index e2e2a110a52..96e8dbe2cd8 100644 --- a/idea/testData/checker/regression/Jet11.jet +++ b/idea/testData/checker/regression/Jet11.jet @@ -1,4 +1,4 @@ // JET-11 Redeclaration & Forward reference for classes cause an exception open class NoC -class NoC1 : NoC +class NoC1 : NoC() open class NoC diff --git a/idea/testData/quickfix/addPrimaryConstructor/afterAddPrimaryConstructor1.kt b/idea/testData/quickfix/addPrimaryConstructor/afterAddPrimaryConstructor1.kt deleted file mode 100644 index bd2c6df77c2..00000000000 --- a/idea/testData/quickfix/addPrimaryConstructor/afterAddPrimaryConstructor1.kt +++ /dev/null @@ -1,6 +0,0 @@ -// "Add primary constructor to A" "true" -package a - -class A() { - var i : Int = 1 -} diff --git a/idea/testData/quickfix/addPrimaryConstructor/afterAddPrimaryConstructor2.kt b/idea/testData/quickfix/addPrimaryConstructor/afterAddPrimaryConstructor2.kt deleted file mode 100644 index 1f1b7863e7f..00000000000 --- a/idea/testData/quickfix/addPrimaryConstructor/afterAddPrimaryConstructor2.kt +++ /dev/null @@ -1,6 +0,0 @@ -// "Add primary constructor to A" "true" -package a - -class A() { - var i : Int = 1 -} diff --git a/idea/testData/quickfix/addPrimaryConstructor/beforeAddPrimaryConstructor1.kt b/idea/testData/quickfix/addPrimaryConstructor/beforeAddPrimaryConstructor1.kt deleted file mode 100644 index 752701ac4a7..00000000000 --- a/idea/testData/quickfix/addPrimaryConstructor/beforeAddPrimaryConstructor1.kt +++ /dev/null @@ -1,6 +0,0 @@ -// "Add primary constructor to A" "true" -package a - -class A { - var i : Int = 1 -} diff --git a/idea/testData/quickfix/addPrimaryConstructor/beforeAddPrimaryConstructor2.kt b/idea/testData/quickfix/addPrimaryConstructor/beforeAddPrimaryConstructor2.kt deleted file mode 100644 index 09b0f0ca9c0..00000000000 --- a/idea/testData/quickfix/addPrimaryConstructor/beforeAddPrimaryConstructor2.kt +++ /dev/null @@ -1,6 +0,0 @@ -// "Add primary constructor to A" "true" -package a - -class A { - var i : Int = 1 -}