Misc: Use TODO() consistently in implementation stubs
#KT-13589 Fixed
This commit is contained in:
@@ -100,6 +100,7 @@ These artifacts include extensions for the types available in the latter JDKs, s
|
||||
- [`KT-13542`](https://youtrack.jetbrains.com/issue/KT-13542) Rename: Do not search parameter text occurrences outside of its containing declaration
|
||||
- [`KT-8672`](https://youtrack.jetbrains.com/issue/KT-8672) Rename: Optimize search of parameter references in calls with named arguments
|
||||
- [`KT-9285`](https://youtrack.jetbrains.com/issue/KT-9285) Rename: Optimize search of private class members
|
||||
- [`KT-13589`](https://youtrack.jetbrains.com/issue/KT-13589) Use TODO() consistently in implementation stubs
|
||||
|
||||
#### Intention actions, inspections and quickfixes
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ interface I {
|
||||
|
||||
class A : I {
|
||||
override val someVal: String?
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
// ELEMENT_TEXT: "override val someVal: String?"
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ interface I {
|
||||
|
||||
class A : I {
|
||||
override val someVal: String?
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
// ELEMENT_TEXT: "override val someVal: String?"
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ interface I {
|
||||
|
||||
class A : I {
|
||||
override var someVar: String
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
set(value) {
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -182,9 +182,9 @@ fun generateUnsupportedOrSuperCall(
|
||||
bodyType: OverrideMemberChooserObject.BodyType
|
||||
): String {
|
||||
if (bodyType == OverrideMemberChooserObject.BodyType.EMPTY) {
|
||||
if (descriptor !is FunctionDescriptor) return "throw UnsupportedOperationException()"
|
||||
val templateKind = if (descriptor is FunctionDescriptor) TemplateKind.FUNCTION else TemplateKind.PROPERTY_INITIALIZER
|
||||
return getFunctionBodyTextFromTemplate(project,
|
||||
TemplateKind.FUNCTION,
|
||||
templateKind,
|
||||
descriptor.name.asString(),
|
||||
descriptor.returnType?.let { IdeDescriptorRenderers.SOURCE_CODE.renderType(it) } ?: "Unit",
|
||||
null)
|
||||
|
||||
@@ -25,11 +25,15 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import java.util.*
|
||||
|
||||
private val FUNCTION_BODY_TEMPLATE = "New Kotlin Function Body.kt"
|
||||
private val PROPERTY_INITIALIZER_TEMPLATE = "New Kotlin Property Initializer.kt"
|
||||
private val SECONDARY_CONSTRUCTOR_BODY_TEMPLATE = "New Kotlin Secondary Constructor Body.kt"
|
||||
private val ATTRIBUTE_FUNCTION_NAME = "FUNCTION_NAME"
|
||||
private val ATTRIBUTE_PROPERTY_NAME = "PROPERTY_NAME"
|
||||
|
||||
enum class TemplateKind(val templateFileName: String) {
|
||||
FUNCTION(FUNCTION_BODY_TEMPLATE), SECONDARY_CONSTRUCTOR(SECONDARY_CONSTRUCTOR_BODY_TEMPLATE)
|
||||
FUNCTION(FUNCTION_BODY_TEMPLATE),
|
||||
SECONDARY_CONSTRUCTOR(SECONDARY_CONSTRUCTOR_BODY_TEMPLATE),
|
||||
PROPERTY_INITIALIZER(PROPERTY_INITIALIZER_TEMPLATE)
|
||||
}
|
||||
|
||||
fun getFunctionBodyTextFromTemplate(
|
||||
@@ -48,7 +52,11 @@ fun getFunctionBodyTextFromTemplate(
|
||||
properties.setProperty(FileTemplate.ATTRIBUTE_SIMPLE_CLASS_NAME, classFqName.shortName().asString())
|
||||
}
|
||||
if (name != null) {
|
||||
properties.setProperty(ATTRIBUTE_FUNCTION_NAME, name)
|
||||
val attribute = when (kind) {
|
||||
TemplateKind.FUNCTION, TemplateKind.SECONDARY_CONSTRUCTOR -> ATTRIBUTE_FUNCTION_NAME
|
||||
TemplateKind.PROPERTY_INITIALIZER -> ATTRIBUTE_PROPERTY_NAME
|
||||
}
|
||||
properties.setProperty(attribute, name)
|
||||
}
|
||||
|
||||
return try {
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
@@ -0,0 +1,38 @@
|
||||
<html>
|
||||
<body>
|
||||
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
|
||||
<tr>
|
||||
<td colspan="3"><font face="verdana" size="-1">This is a built-in template used for filling the initializer of a Kotlin property
|
||||
each time it is generated by the program, e.g. when using the <b>Create Property from Usage</b> intention action.<br>
|
||||
The template is editable. Along with Kotlin expressions and comments, you can also use the predefined variables
|
||||
that will be then expanded into the corresponding values.</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
|
||||
<tr>
|
||||
<td colspan="3"><font face="verdana" size="-1">Predefined variables will take the following values:</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${RETURN_TYPE}</i></b></font></nobr></td>
|
||||
<td width="10"> </td>
|
||||
<td valign="top"><font face="verdana" size="-1">a type of a created property</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${PROPERTY_NAME}</i></b></font></nobr></td>
|
||||
<td width="10"> </td>
|
||||
<td valign="top"><font face="verdana" size="-1">name of the created property</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${CLASS_NAME}</i></b></font></nobr></td>
|
||||
<td width="10"> </td>
|
||||
<td valign="top"><font face="verdana" size="-1">qualified name of the class where property is created</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${SIMPLE_CLASS_NAME}</i></b></font></nobr></td>
|
||||
<td width="10"> </td>
|
||||
<td valign="top"><font face="verdana" size="-1">non-qualified name of the class where property is created</font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
+16
-7
@@ -28,14 +28,18 @@ import com.intellij.util.SmartList
|
||||
import org.jetbrains.kotlin.asJava.toLightMethods
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.setReceiverType
|
||||
import org.jetbrains.kotlin.idea.core.TemplateKind
|
||||
import org.jetbrains.kotlin.idea.core.getFunctionBodyTextFromTemplate
|
||||
import org.jetbrains.kotlin.idea.core.moveCaret
|
||||
import org.jetbrains.kotlin.idea.core.unblockDocument
|
||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.setReceiverType
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.getReturnTypeReference
|
||||
import org.jetbrains.kotlin.idea.references.KtReference
|
||||
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
class ConvertMemberToExtensionIntention : SelfTargetingRangeIntention<KtCallableDeclaration>(KtCallableDeclaration::class.java, "Convert member to extension"), LowPriorityAction {
|
||||
@@ -110,17 +114,25 @@ class ConvertMemberToExtensionIntention : SelfTargetingRangeIntention<KtCallable
|
||||
}
|
||||
}
|
||||
|
||||
val bodyText = getFunctionBodyTextFromTemplate(
|
||||
project,
|
||||
if (extension is KtFunction) TemplateKind.FUNCTION else TemplateKind.PROPERTY_INITIALIZER,
|
||||
extension.name,
|
||||
extension.getReturnTypeReference()?.text ?: "Unit",
|
||||
extension.containingClassOrObject?.fqName
|
||||
)
|
||||
|
||||
when (extension) {
|
||||
is KtFunction -> {
|
||||
if (!extension.hasBody()) {
|
||||
//TODO: methods in PSI for setBody
|
||||
extension.add(psiFactory.createBlock(THROW_UNSUPPORTED_OPERATION_EXCEPTION))
|
||||
extension.add(psiFactory.createBlock(bodyText))
|
||||
selectBody(extension)
|
||||
}
|
||||
}
|
||||
|
||||
is KtProperty -> {
|
||||
val templateProperty = psiFactory.createDeclaration<KtProperty>("var v: Any\nget()=$THROW_UNSUPPORTED_OPERATION_EXCEPTION\nset(value){$THROW_UNSUPPORTED_OPERATION_EXCEPTION}")
|
||||
val templateProperty = psiFactory.createDeclaration<KtProperty>("var v: Any\nget()=$bodyText\nset(value){\n$bodyText\n}")
|
||||
val templateGetter = templateProperty.getter!!
|
||||
val templateSetter = templateProperty.setter!!
|
||||
|
||||
@@ -185,9 +197,6 @@ class ConvertMemberToExtensionIntention : SelfTargetingRangeIntention<KtCallable
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: reuse TEMPLATE_FROM_USAGE_FUNCTION_BODY
|
||||
private val THROW_UNSUPPORTED_OPERATION_EXCEPTION = "throw UnsupportedOperationException()"
|
||||
|
||||
private fun newTypeParameterList(member: KtCallableDeclaration): KtTypeParameterList? {
|
||||
val classElement = member.parent.parent as KtClass
|
||||
val classParams = classElement.typeParameters
|
||||
|
||||
@@ -33,6 +33,9 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.TemplateKind
|
||||
import org.jetbrains.kotlin.idea.core.getFunctionBodyTextFromTemplate
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
@@ -127,7 +130,14 @@ class AddFunctionToSupertypeFix private constructor(
|
||||
if (classDescriptor.kind != ClassKind.INTERFACE && functionDescriptor.modality != Modality.ABSTRACT) {
|
||||
val returnType = functionDescriptor.returnType
|
||||
if (returnType == null || !KotlinBuiltIns.isUnit(returnType)) {
|
||||
sourceCode += "{ throw UnsupportedOperationException() }"
|
||||
val bodyText = getFunctionBodyTextFromTemplate(
|
||||
project,
|
||||
TemplateKind.FUNCTION,
|
||||
functionDescriptor.name.asString(),
|
||||
functionDescriptor.returnType?.let { IdeDescriptorRenderers.SOURCE_CODE.renderType(it) } ?: "Unit",
|
||||
classDescriptor.importableFqName
|
||||
)
|
||||
sourceCode += "{ $bodyText }"
|
||||
}
|
||||
else {
|
||||
sourceCode += "{}"
|
||||
|
||||
@@ -6,7 +6,7 @@ interface A {
|
||||
fun some() : A {
|
||||
return object : A {
|
||||
override val method: () -> Unit?
|
||||
get() = <selection><caret>throw UnsupportedOperationException()</selection>
|
||||
get() = <selection><caret>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ interface A {
|
||||
|
||||
class B : A {
|
||||
override val String.prop: Int
|
||||
get() = <selection><caret>throw UnsupportedOperationException()</selection>
|
||||
get() = <selection><caret>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ interface A {
|
||||
|
||||
class B : A {
|
||||
override var Int.foo: Double
|
||||
get() = <selection><caret>throw UnsupportedOperationException()</selection>
|
||||
get() = <selection><caret>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
set(value) {
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -11,19 +11,19 @@ interface T {
|
||||
|
||||
class C : T {
|
||||
override val a1: Byte
|
||||
get() = <selection><caret>throw UnsupportedOperationException()</selection>
|
||||
get() = <selection><caret>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a2: Short
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a3: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a4: Long
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a5: Float
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a6: Double
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a7: Char
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val a8: Boolean
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
@@ -4,5 +4,5 @@ interface T {
|
||||
|
||||
class GC() : T {
|
||||
override val v: Int
|
||||
get() = <selection><caret>throw UnsupportedOperationException()</selection>
|
||||
get() = <selection><caret>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ class SomeTest : Test {
|
||||
}
|
||||
|
||||
override val testProp: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
/**
|
||||
* test
|
||||
|
||||
+1
-1
@@ -3,5 +3,5 @@ abstract class Owner {
|
||||
}
|
||||
|
||||
fun Owner.f() {
|
||||
<caret><selection>throw UnsupportedOperationException()</selection>
|
||||
<caret><selection>TODO("not implemented")</selection> //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
+1
-1
@@ -3,4 +3,4 @@ abstract class Owner {
|
||||
}
|
||||
|
||||
val Owner.p: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
Vendored
+1
-1
@@ -4,4 +4,4 @@ class Owner {
|
||||
}
|
||||
|
||||
val Owner.p: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ class Owner {
|
||||
}
|
||||
|
||||
var Owner.p: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
set(value) {
|
||||
throw UnsupportedOperationException()
|
||||
TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -6,5 +6,5 @@ class Owner {
|
||||
var Owner.p: Int
|
||||
get() = 1
|
||||
set(value) {
|
||||
<caret><selection>throw UnsupportedOperationException()</selection>
|
||||
<caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,5 +6,5 @@ class Owner {
|
||||
var Owner.p: Int
|
||||
get() { return 1 }
|
||||
set(value) {
|
||||
<caret><selection>throw UnsupportedOperationException()</selection>
|
||||
<caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,5 +5,5 @@ class Owner {
|
||||
}
|
||||
|
||||
var Owner.p: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
set(v) {}
|
||||
|
||||
+1
-1
@@ -8,5 +8,5 @@ enum class E : T<Int> {
|
||||
A, B, C;
|
||||
|
||||
override val foo: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
+1
-1
@@ -8,5 +8,5 @@ enum class E : T<Int> {
|
||||
A, B, C;
|
||||
|
||||
override val foo: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
}
|
||||
Vendored
+1
-1
@@ -8,7 +8,7 @@ enum class E : T<Int> {
|
||||
A, B, C;
|
||||
|
||||
override val foo: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
val bar = 1
|
||||
|
||||
|
||||
+3
-3
@@ -3,13 +3,13 @@
|
||||
enum class E {
|
||||
A {
|
||||
override val foo: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
}, B {
|
||||
override val foo: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
}, C {
|
||||
override val foo: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
};
|
||||
|
||||
abstract val foo: Int
|
||||
|
||||
+3
-3
@@ -3,13 +3,13 @@
|
||||
enum class E(n: Int) {
|
||||
A(1) {
|
||||
override val foo: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
}, B(2) {
|
||||
override val foo: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
}, C(3) {
|
||||
override val foo: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
};
|
||||
|
||||
abstract val foo: Int
|
||||
|
||||
+2
-2
@@ -6,13 +6,13 @@ interface T<X> {
|
||||
|
||||
class U : T<String> {
|
||||
override val foo: String
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
}
|
||||
|
||||
class V : T<Int> {
|
||||
override val foo: Int
|
||||
get() = <caret><selection>throw UnsupportedOperationException()</selection>
|
||||
get() = <caret><selection>TODO("not implemented")</selection> //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ interface A {
|
||||
}
|
||||
|
||||
fun A.foo(n: Int) {
|
||||
throw UnsupportedOperationException()
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
+1
-1
@@ -10,7 +10,7 @@ private abstract class Base {
|
||||
|
||||
private class BaseImpl : Base() {
|
||||
override var x: Int
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
set(value) {
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ class Container {
|
||||
|
||||
class BaseImpl : Container.Base {
|
||||
override val x: Boolean
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
override fun bar(z: Int): String {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
|
||||
@@ -9,7 +9,7 @@ class Container {
|
||||
|
||||
class BaseImpl : Base {
|
||||
override var z: Double
|
||||
get() = throw UnsupportedOperationException()
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
set(value) {
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -2,8 +2,7 @@
|
||||
// WITH_RUNTIME
|
||||
open class A {
|
||||
open fun f(): Int {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates. }
|
||||
}
|
||||
class B : A() {
|
||||
<caret>override fun f(): Int = 5
|
||||
|
||||
Reference in New Issue
Block a user