Cleanup: KotlinLineMarkerProvider

This commit is contained in:
Mikhail Glukhikh
2016-12-13 19:57:40 +03:00
parent 39ca78f584
commit a846e41b46
30 changed files with 143 additions and 137 deletions
@@ -101,6 +101,7 @@ private val OVERRIDDEN_MARK: Icon = AllIcons.Gutter.OverridenMethod
private val IMPLEMENTED_MARK: Icon = AllIcons.Gutter.ImplementedMethod private val IMPLEMENTED_MARK: Icon = AllIcons.Gutter.ImplementedMethod
private val SUBCLASSED_CLASS = MarkerType( private val SUBCLASSED_CLASS = MarkerType(
"SUBCLASSED_CLASS",
{ getPsiClass(it)?.let { MarkerType.getSubclassedClassTooltip(it) } }, { getPsiClass(it)?.let { MarkerType.getSubclassedClassTooltip(it) } },
object : LineMarkerNavigator() { object : LineMarkerNavigator() {
override fun browse(e: MouseEvent?, element: PsiElement?) { override fun browse(e: MouseEvent?, element: PsiElement?) {
@@ -109,7 +110,8 @@ private val SUBCLASSED_CLASS = MarkerType(
}) })
private val OVERRIDDEN_FUNCTION = MarkerType( private val OVERRIDDEN_FUNCTION = MarkerType(
{ getPsiMethod(it)?.let { getOverriddenMethodTooltip(it) } }, "OVERRIDDEN_FUNCTION",
{ getPsiMethod(it)?.let(::getOverriddenMethodTooltip) },
object : LineMarkerNavigator() { object : LineMarkerNavigator() {
override fun browse(e: MouseEvent?, element: PsiElement?) { override fun browse(e: MouseEvent?, element: PsiElement?) {
getPsiMethod(element)?.let { navigateToOverriddenMethod(e, it) } getPsiMethod(element)?.let { navigateToOverriddenMethod(e, it) }
@@ -117,6 +119,7 @@ private val OVERRIDDEN_FUNCTION = MarkerType(
}) })
private val OVERRIDDEN_PROPERTY = MarkerType( private val OVERRIDDEN_PROPERTY = MarkerType(
"OVERRIDDEN_PROPERTY",
{ it?.let { getOverriddenPropertyTooltip(it.parent as KtNamedDeclaration) } }, { it?.let { getOverriddenPropertyTooltip(it.parent as KtNamedDeclaration) } },
object : LineMarkerNavigator() { object : LineMarkerNavigator() {
override fun browse(e: MouseEvent?, element: PsiElement?) { override fun browse(e: MouseEvent?, element: PsiElement?) {
@@ -158,18 +161,20 @@ private fun collectSuperDeclarationMarkers(declaration: KtDeclaration, result: M
val implements = isImplementsAndNotOverrides(resolveWithParents.descriptor!!, resolveWithParents.overriddenDescriptors) val implements = isImplementsAndNotOverrides(resolveWithParents.descriptor!!, resolveWithParents.overriddenDescriptors)
val anchor = (declaration as? KtNamedDeclaration)?.nameIdentifier ?: declaration
// NOTE: Don't store descriptors in line markers because line markers are not deleted while editing other files and this can prevent // NOTE: Don't store descriptors in line markers because line markers are not deleted while editing other files and this can prevent
// clearing the whole BindingTrace. // clearing the whole BindingTrace.
val marker = LineMarkerInfo(
declaration,
declaration.textOffset,
if (implements) IMPLEMENTING_MARK else OVERRIDING_MARK,
Pass.UPDATE_OVERRIDEN_MARKERS,
SuperDeclarationMarkerTooltip,
SuperDeclarationMarkerNavigationHandler()
)
result.add(marker) result.add(LineMarkerInfo(
declaration,
anchor.textRange,
if (implements) IMPLEMENTING_MARK else OVERRIDING_MARK,
Pass.UPDATE_OVERRIDDEN_MARKERS,
SuperDeclarationMarkerTooltip,
SuperDeclarationMarkerNavigationHandler(),
GutterIconRenderer.Alignment.RIGHT
))
} }
private fun collectInheritedClassMarker(element: KtClass, result: MutableCollection<LineMarkerInfo<*>>) { private fun collectInheritedClassMarker(element: KtClass, result: MutableCollection<LineMarkerInfo<*>>) {
@@ -186,11 +191,12 @@ private fun collectInheritedClassMarker(element: KtClass, result: MutableCollect
result.add(LineMarkerInfo( result.add(LineMarkerInfo(
anchor, anchor,
anchor.textOffset, anchor.textRange,
if (isTrait) IMPLEMENTED_MARK else OVERRIDDEN_MARK, if (isTrait) IMPLEMENTED_MARK else OVERRIDDEN_MARK,
Pass.UPDATE_OVERRIDEN_MARKERS, Pass.UPDATE_OVERRIDDEN_MARKERS,
SUBCLASSED_CLASS.tooltip, SUBCLASSED_CLASS.tooltip,
SUBCLASSED_CLASS.navigationHandler SUBCLASSED_CLASS.navigationHandler,
GutterIconRenderer.Alignment.RIGHT
)) ))
} }
@@ -216,9 +222,9 @@ private fun collectOverriddenPropertyAccessors(properties: Collection<KtNamedDec
result.add(LineMarkerInfo( result.add(LineMarkerInfo(
anchor, anchor,
anchor.textOffset, anchor.textRange,
if (isImplemented(property)) IMPLEMENTED_MARK else OVERRIDDEN_MARK, if (isImplemented(property)) IMPLEMENTED_MARK else OVERRIDDEN_MARK,
Pass.UPDATE_OVERRIDEN_MARKERS, Pass.UPDATE_OVERRIDDEN_MARKERS,
OVERRIDDEN_PROPERTY.tooltip, OVERRIDDEN_PROPERTY.tooltip,
OVERRIDDEN_PROPERTY.navigationHandler, OVERRIDDEN_PROPERTY.navigationHandler,
GutterIconRenderer.Alignment.RIGHT GutterIconRenderer.Alignment.RIGHT
@@ -296,9 +302,9 @@ private fun collectOverriddenFunctions(functions: Collection<KtNamedFunction>, r
result.add(LineMarkerInfo( result.add(LineMarkerInfo(
anchor, anchor,
anchor.textOffset, anchor.textRange,
if (isImplemented(function)) IMPLEMENTED_MARK else OVERRIDDEN_MARK, if (isImplemented(function)) IMPLEMENTED_MARK else OVERRIDDEN_MARK,
Pass.UPDATE_OVERRIDEN_MARKERS, OVERRIDDEN_FUNCTION.tooltip, Pass.UPDATE_OVERRIDDEN_MARKERS, OVERRIDDEN_FUNCTION.tooltip,
OVERRIDDEN_FUNCTION.navigationHandler, OVERRIDDEN_FUNCTION.navigationHandler,
GutterIconRenderer.Alignment.RIGHT GutterIconRenderer.Alignment.RIGHT
)) ))
@@ -1,10 +1,10 @@
interface <lineMarker></lineMarker>Hi { interface <lineMarker>Hi</lineMarker> {
fun <lineMarker></lineMarker>foo(): Int fun <lineMarker>foo</lineMarker>(): Int
} }
// Closing brace is intentionally missed // Closing brace is intentionally missed
val id = array("kotlin.FlexibleType" val id = array("kotlin.FlexibleType"
private class Some(): Hi { private class Some(): Hi {
override fun <lineMarker></lineMarker>foo() = 1 override fun <lineMarker>foo</lineMarker>() = 1
} }
@@ -1,9 +1,9 @@
open class <lineMarker></lineMarker>A { open class <lineMarker>A</lineMarker> {
open fun <lineMarker></lineMarker>a(){ open fun <lineMarker>a</lineMarker>(){
} }
} }
class B:A(){ class B:A(){
override fun <lineMarker></lineMarker>a(){ override fun <lineMarker>a</lineMarker>(){
} }
} }
@@ -1,11 +1,11 @@
interface <lineMarker></lineMarker>TestTrait { interface <lineMarker>TestTrait</lineMarker> {
fun <lineMarker></lineMarker>test() fun <lineMarker>test</lineMarker>()
} }
class A { class A {
class B { class B {
companion object : TestTrait { // TODO: No line marker companion object : TestTrait { // TODO: No line marker
override fun <lineMarker descr="Implements function in 'TestTrait'"></lineMarker>test() { override fun <lineMarker descr="Implements function in 'TestTrait'">test</lineMarker>() {
} }
} }
} }
@@ -1,13 +1,13 @@
interface <lineMarker></lineMarker>A { interface <lineMarker>A</lineMarker> {
fun <lineMarker></lineMarker>f() { fun <lineMarker>f</lineMarker>() {
} }
} }
interface <lineMarker></lineMarker>B : A interface <lineMarker>B</lineMarker> : A
open class <lineMarker></lineMarker>C(b : B) : B by b, A { open class <lineMarker>C</lineMarker>(b : B) : B by b, A {
} }
class D(b : B) : C(b) { class D(b : B) : C(b) {
override fun <lineMarker descr="Overrides function in 'A'"></lineMarker>f() {} override fun <lineMarker descr="Overrides function in 'A'">f</lineMarker>() {}
} }
@@ -1,13 +1,13 @@
interface <lineMarker></lineMarker>A { interface <lineMarker>A</lineMarker> {
val <lineMarker></lineMarker>f: Int val <lineMarker>f</lineMarker>: Int
get() = 3 get() = 3
} }
interface <lineMarker></lineMarker>B : A interface <lineMarker>B</lineMarker> : A
open class <lineMarker></lineMarker>C(b : B) : B by b, A { open class <lineMarker>C</lineMarker>(b : B) : B by b, A {
} }
class D(b : B) : C(b) { class D(b : B) : C(b) {
override val <lineMarker descr="Overrides property in 'A'"></lineMarker>f: Int = 2 override val <lineMarker descr="Overrides property in 'A'">f</lineMarker>: Int = 2
} }
@@ -1,7 +1,7 @@
enum class SampleEnum { enum class SampleEnum {
V1 { V1 {
override fun <lineMarker descr="Overrides function in 'SampleEnum'"></lineMarker>any() { super.any() } override fun <lineMarker descr="Overrides function in 'SampleEnum'">any</lineMarker>() { super.any() }
}; };
open fun <lineMarker descr="<html><body>Is overridden in <br>&nbsp;&nbsp;&nbsp;&nbsp;Enum constant 'V1' in 'SampleEnum'</body></html>"></lineMarker>any() {} open fun <lineMarker descr="<html><body>Is overridden in <br>&nbsp;&nbsp;&nbsp;&nbsp;Enum constant 'V1' in 'SampleEnum'</body></html>">any</lineMarker>() {}
} }
@@ -1,25 +1,25 @@
package sample package sample
interface <lineMarker descr="*"></lineMarker>S<T> { interface <lineMarker descr="*">S</lineMarker><T> {
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;sample.S2</body></html>"></lineMarker>foo(t: T): T fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;sample.S2</body></html>">foo</lineMarker>(t: T): T
val <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;sample.S2</body></html>"></lineMarker>some: T? get val <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;sample.S2</body></html>">some</lineMarker>: T? get
var <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;sample.S2</body></html>"></lineMarker>other: T? var <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;sample.S2</body></html>">other</lineMarker>: T?
get get
set set
} }
open abstract class <lineMarker descr="*"></lineMarker>S1 : S<String> open abstract class <lineMarker descr="*">S1</lineMarker> : S<String>
class S2 : S1() { class S2 : S1() {
override val <lineMarker descr="Implements property in 'S&lt;T&gt;'"></lineMarker>some: String = "S" override val <lineMarker descr="Implements property in 'S&lt;T&gt;'">some</lineMarker>: String = "S"
override var <lineMarker descr="Implements property in 'S&lt;T&gt;'"></lineMarker>other: String? override var <lineMarker descr="Implements property in 'S&lt;T&gt;'">other</lineMarker>: String?
get() = null get() = null
set(value) {} set(value) {}
override fun <lineMarker descr="Implements function in 'S&lt;T&gt;'"></lineMarker>foo(t: String): String { override fun <lineMarker descr="Implements function in 'S&lt;T&gt;'">foo</lineMarker>(t: String): String {
return super<S1>.foo(t) return super<S1>.foo(t)
} }
} }
@@ -1,11 +1,11 @@
interface <lineMarker></lineMarker>A { interface <lineMarker>A</lineMarker> {
fun <lineMarker></lineMarker>f() {} fun <lineMarker>f</lineMarker>() {}
} }
interface <lineMarker></lineMarker>B : A interface <lineMarker>B</lineMarker> : A
interface <lineMarker></lineMarker>C : B, A interface <lineMarker>C</lineMarker> : B, A
class SomeClass() : C { class SomeClass() : C {
override fun <lineMarker descr="Overrides function in 'A'"></lineMarker>f() {} override fun <lineMarker descr="Overrides function in 'A'">f</lineMarker>() {}
} }
@@ -1,13 +1,13 @@
interface <lineMarker></lineMarker>A { interface <lineMarker>A</lineMarker> {
fun <lineMarker></lineMarker><lineMarker></lineMarker>f() {} fun <lineMarker><lineMarker>f</lineMarker></lineMarker>() {}
} }
interface <lineMarker></lineMarker>B : A { interface <lineMarker>B</lineMarker> : A {
override fun <lineMarker></lineMarker>f() {} override fun <lineMarker>f</lineMarker>() {}
} }
interface <lineMarker></lineMarker>C : B, A interface <lineMarker>C</lineMarker> : B, A
class SomeClass() : C { class SomeClass() : C {
override fun <lineMarker descr="Overrides function in 'B'"></lineMarker>f() {} override fun <lineMarker descr="Overrides function in 'B'">f</lineMarker>() {}
} }
@@ -1,12 +1,12 @@
interface <lineMarker></lineMarker>A { interface <lineMarker>A</lineMarker> {
val <lineMarker></lineMarker>f: Int val <lineMarker>f</lineMarker>: Int
get() = 2 get() = 2
} }
interface <lineMarker></lineMarker>B : A interface <lineMarker>B</lineMarker> : A
interface <lineMarker></lineMarker>C : B, A interface <lineMarker>C</lineMarker> : B, A
class SomeClass() : C { class SomeClass() : C {
override val <lineMarker descr="Overrides property in 'A'"></lineMarker>f: Int = 4 override val <lineMarker descr="Overrides property in 'A'">f</lineMarker>: Int = 4
} }
@@ -1,9 +1,9 @@
interface <lineMarker descr="*"></lineMarker>A { interface <lineMarker descr="*">A</lineMarker> {
override fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>"><lineMarker descr="*"></lineMarker></lineMarker>toString() = "A" override fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>"><lineMarker descr="*">toString</lineMarker></lineMarker>() = "A"
} }
abstract class <lineMarker descr="*"></lineMarker>B: A abstract class <lineMarker descr="*">B</lineMarker> : A
class C: B() { class C : B() {
override fun <lineMarker descr="Overrides function in 'A'"></lineMarker>toString() = "B" override fun <lineMarker descr="Overrides function in 'A'">toString</lineMarker>() = "B"
} }
@@ -1,25 +1,25 @@
interface <lineMarker descr="*"></lineMarker>A { interface <lineMarker descr="*">A</lineMarker> {
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>"></lineMarker>foo(): String = "A" fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>">foo</lineMarker>(): String = "A"
// TODO: B shoudn't be mentioned // TODO: B shoudn't be mentioned
val <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;B<br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>"></lineMarker>some: String? get() = null val <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;B<br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>">some</lineMarker>: String? get() = null
// TODO: B shoudn't be mentioned // TODO: B shoudn't be mentioned
var <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;B<br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>"></lineMarker>other: String? var <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;B<br>&nbsp;&nbsp;&nbsp;&nbsp;C</body></html>">other</lineMarker>: String?
get() = null get() = null
set(value) {} set(value) {}
} }
open class <lineMarker descr="*"></lineMarker>B: A open class <lineMarker descr="*">B</lineMarker> : A
class C: B() { class C: B() {
override val <lineMarker descr="Overrides property in 'A'"></lineMarker>some: String = "S" override val <lineMarker descr="Overrides property in 'A'">some</lineMarker>: String = "S"
override var <lineMarker descr="Overrides property in 'A'"></lineMarker>other: String? override var <lineMarker descr="Overrides property in 'A'">other</lineMarker>: String?
get() = null get() = null
set(value) {} set(value) {}
override fun <lineMarker descr="Overrides function in 'A'"></lineMarker>foo(): String { override fun <lineMarker descr="Overrides function in 'A'">foo</lineMarker>(): String {
return super<S1>.foo() return super<S1>.foo()
} }
} }
@@ -1,13 +1,13 @@
interface <lineMarker></lineMarker>A1 { interface <lineMarker>A1</lineMarker> {
fun <lineMarker></lineMarker>foo() fun <lineMarker>foo</lineMarker>()
} }
interface <lineMarker></lineMarker>B1 { interface <lineMarker>B1</lineMarker> {
fun <lineMarker></lineMarker>foo() fun <lineMarker>foo</lineMarker>()
} }
class C1: A1, B1 { class C1: A1, B1 {
override fun <lineMarker descr="Implements function in 'A1'<br/>Implements function in 'B1'"></lineMarker>foo() {} override fun <lineMarker descr="Implements function in 'A1'<br/>Implements function in 'B1'">foo</lineMarker>() {}
} }
/* /*
@@ -1,9 +1,9 @@
interface <lineMarker descr="*"></lineMarker>SkipSupport { interface <lineMarker descr="*">SkipSupport</lineMarker> {
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>"></lineMarker>skip() fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>">skip</lineMarker>()
} }
public interface <lineMarker descr="*"></lineMarker>SkipSupportWithDefaults : SkipSupport { public interface <lineMarker descr="*">SkipSupportWithDefaults</lineMarker> : SkipSupport {
override fun <lineMarker descr="Implements function in 'SkipSupport'"></lineMarker>skip() {} override fun <lineMarker descr="Implements function in 'SkipSupport'">skip</lineMarker>() {}
} }
open class SkipSupportImpl : SkipSupportWithDefaults open class SkipSupportImpl : SkipSupportWithDefaults
@@ -1,9 +1,9 @@
interface <lineMarker descr="*"></lineMarker>A { interface <lineMarker descr="*">A</lineMarker> {
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;B</body></html>"></lineMarker>foo(str: String) fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;B</body></html>">foo</lineMarker>(str: String)
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;B</body></html>"></lineMarker>foo() fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;B</body></html>">foo</lineMarker>()
} }
open class B : A { open class B : A {
override fun <lineMarker descr="Implements function in 'A'"></lineMarker>foo(str: String) { } override fun <lineMarker descr="Implements function in 'A'">foo</lineMarker>(str: String) { }
override fun <lineMarker descr="Implements function in 'A'"></lineMarker>foo() { } override fun <lineMarker descr="Implements function in 'A'">foo</lineMarker>() { }
} }
@@ -1,14 +1,14 @@
open class <lineMarker></lineMarker>A { open class <lineMarker>A</lineMarker> {
open fun <lineMarker></lineMarker>a(){ open fun <lineMarker>a</lineMarker>(){
} }
} }
open class <lineMarker></lineMarker>B:A(){ open class <lineMarker>B</lineMarker> : A(){
override fun <lineMarker></lineMarker><lineMarker></lineMarker>a(){ override fun <lineMarker><lineMarker>a</lineMarker></lineMarker>(){
} }
} }
class C:B(){ class C : B(){
override fun <lineMarker></lineMarker>a(){ override fun <lineMarker>a</lineMarker>(){
} }
} }
@@ -1,19 +1,19 @@
interface <lineMarker descr="*"></lineMarker>SkipSupport { interface <lineMarker descr="*">SkipSupport</lineMarker> {
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl<br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>"></lineMarker>skip(why: String) fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl<br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>">skip</lineMarker>(why: String)
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>"></lineMarker>skip() fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>">skip</lineMarker>()
} }
public interface <lineMarker descr="*"></lineMarker>SkipSupportWithDefaults : SkipSupport { public interface <lineMarker descr="*">SkipSupportWithDefaults</lineMarker> : SkipSupport {
// TODO: should be "Is overriden in SkipSupportImpl" // TODO: should be "Is overriden in SkipSupportImpl"
override fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl</body></html>"><lineMarker descr="Implements function in 'SkipSupport'"></lineMarker></lineMarker>skip(why: String) {} override fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl</body></html>"><lineMarker descr="Implements function in 'SkipSupport'">skip</lineMarker></lineMarker>(why: String) {}
override fun <lineMarker descr="Implements function in 'SkipSupport'"></lineMarker>skip() { override fun <lineMarker descr="Implements function in 'SkipSupport'">skip</lineMarker>() {
skip("not given") skip("not given")
} }
} }
open class SkipSupportImpl: SkipSupportWithDefaults { open class SkipSupportImpl: SkipSupportWithDefaults {
override fun <lineMarker descr="Overrides function in 'SkipSupportWithDefaults'"></lineMarker>skip(why: String) = throw RuntimeException(why) override fun <lineMarker descr="Overrides function in 'SkipSupportWithDefaults'">skip</lineMarker>(why: String) = throw RuntimeException(why)
} }
// KT-4428 Incorrect override icon shown for overloaded methods // KT-4428 Incorrect override icon shown for overloaded methods
@@ -1,10 +1,10 @@
abstract class <lineMarker></lineMarker>A { abstract class <lineMarker>A</lineMarker> {
open fun <lineMarker></lineMarker>a(){ open fun <lineMarker>a</lineMarker>(){
} }
} }
open class B : A(){ open class B : A(){
override fun <lineMarker></lineMarker>a(){ override fun <lineMarker>a</lineMarker>(){
} }
} }
@@ -1,15 +1,15 @@
// TODO: Declarations have no implementation and should be considered as "overloaded" // TODO: Declarations have no implementation and should be considered as "overloaded"
interface <lineMarker descr="*"></lineMarker>First { interface <lineMarker descr="*">First</lineMarker> {
val <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;Second</body></html>"></lineMarker>some: Int val <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;Second</body></html>">some</lineMarker>: Int
var <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;Second</body></html>"></lineMarker>other: String var <lineMarker descr="<html><body>Is implemented in <br/>&nbsp;&nbsp;&nbsp;&nbsp;Second</body></html>">other</lineMarker>: String
get get
set set
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;Second</body></html>"></lineMarker>foo() fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;Second</body></html>">foo</lineMarker>()
} }
interface Second : First { interface Second : First {
override val <lineMarker descr="Overrides property in 'First'"></lineMarker>some: Int override val <lineMarker descr="Overrides property in 'First'">some</lineMarker>: Int
override var <lineMarker descr="Overrides property in 'First'"></lineMarker>other: String override var <lineMarker descr="Overrides property in 'First'">other</lineMarker>: String
override fun <lineMarker descr="Overrides function in 'First'"></lineMarker>foo() override fun <lineMarker descr="Overrides function in 'First'">foo</lineMarker>()
} }
@@ -1,13 +1,13 @@
interface <lineMarker descr="*"></lineMarker>SkipSupport { interface <lineMarker descr="*">SkipSupport</lineMarker> {
fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl1<br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>"></lineMarker>skip() fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl1<br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportWithDefaults</body></html>">skip</lineMarker>()
} }
public interface <lineMarker descr="*"></lineMarker>SkipSupportWithDefaults : SkipSupport { public interface <lineMarker descr="*">SkipSupportWithDefaults</lineMarker> : SkipSupport {
override fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl1</body></html>"><lineMarker descr="Implements function in 'SkipSupport'"></lineMarker></lineMarker>skip() {} override fun <lineMarker descr="<html><body>Is implemented in <br>&nbsp;&nbsp;&nbsp;&nbsp;SkipSupportImpl1</body></html>"><lineMarker descr="Implements function in 'SkipSupport'">skip</lineMarker></lineMarker>() {}
} }
public interface SkipSupportImpl1 : SkipSupportWithDefaults { public interface SkipSupportImpl1 : SkipSupportWithDefaults {
override fun <lineMarker descr="Overrides function in 'SkipSupportWithDefaults'"></lineMarker>skip() {} override fun <lineMarker descr="Overrides function in 'SkipSupportWithDefaults'">skip</lineMarker>() {}
} }
open class SkipSupportImpl : SkipSupportWithDefaults open class SkipSupportImpl : SkipSupportWithDefaults
@@ -1,10 +1,10 @@
open class <lineMarker></lineMarker>C( open class <lineMarker>C</lineMarker>(
open val <lineMarker descr="<html><body>Is overridden in <br/>&nbsp;&nbsp;&nbsp;&nbsp;D</body></html>"></lineMarker>s: String open val <lineMarker descr="<html><body>Is overridden in <br/>&nbsp;&nbsp;&nbsp;&nbsp;D</body></html>">s</lineMarker>: String
) { ) {
} }
class D : C("") { class D : C("") {
override val <lineMarker></lineMarker>s: String get() = "q" override val <lineMarker>s</lineMarker>: String get() = "q"
} }
@@ -1,7 +1,7 @@
interface <lineMarker></lineMarker>I { interface <lineMarker>I</lineMarker> {
val <lineMarker></lineMarker>name: String val <lineMarker>name</lineMarker>: String
} }
class D( class D(
override val <lineMarker descr="Implements property in 'I'"></lineMarker>name: String override val <lineMarker descr="Implements property in 'I'">name</lineMarker>: String
): I ): I
@@ -1,7 +1,7 @@
open class <lineMarker></lineMarker>Base { open class <lineMarker>Base</lineMarker> {
open var <lineMarker></lineMarker>writable: Int = 12 open var <lineMarker>writable</lineMarker>: Int = 12
} }
class SubBase: Base() { class SubBase: Base() {
override var <lineMarker></lineMarker>writable: Int = 42 override var <lineMarker>writable</lineMarker>: Int = 42
} }
@@ -1,5 +1,5 @@
public interface Foo { public interface Foo {
override fun <lineMarker descr="Overrides function in 'Any'"></lineMarker>toString() = "str" override fun <lineMarker descr="Overrides function in 'Any'">toString</lineMarker>() = "str"
} }
/* /*
@@ -1,9 +1,9 @@
interface <lineMarker></lineMarker>A { interface <lineMarker>A</lineMarker> {
fun <lineMarker></lineMarker>a(){ fun <lineMarker>a</lineMarker>(){
} }
} }
class B :A { class B : A {
override fun <lineMarker></lineMarker>a(){ override fun <lineMarker>a</lineMarker>(){
} }
} }
@@ -5,7 +5,7 @@ operator fun Any.get(a: Int) {
} }
class A { class A {
override fun <lineMarker descr="Overrides function in 'Any'"></lineMarker>equals(other: Any?): Boolean { override fun <lineMarker descr="Overrides function in 'Any'">equals</lineMarker>(other: Any?): Boolean {
this <lineMarker descr="Recursive call">==</lineMarker> other this <lineMarker descr="Recursive call">==</lineMarker> other
return true return true
} }
@@ -1,10 +1,10 @@
open class <lineMarker></lineMarker>Super { open class <lineMarker>Super</lineMarker> {
open fun <lineMarker></lineMarker>f(a: Int) { open fun <lineMarker>f</lineMarker>(a: Int) {
} }
} }
class F: Super() { class F: Super() {
override fun <lineMarker></lineMarker>f(a: Int) { override fun <lineMarker>f</lineMarker>(a: Int) {
if (a > 0) { if (a > 0) {
super.f(a - 1) super.f(a - 1)
} }
@@ -4,7 +4,7 @@ package testing
import junit.framework.TestCase import junit.framework.TestCase
import org.junit.Test import org.junit.Test
abstract class <lineMarker descr="*"><lineMarker descr="Run Test"></lineMarker>KBase</lineMarker> : TestCase() { abstract class <lineMarker descr="*"><lineMarker descr="Run Test">KBase</lineMarker></lineMarker> : TestCase() {
@Test @Test
fun testFoo() { fun testFoo() {
@@ -3,7 +3,7 @@ package testing
import org.testng.annotations.Test import org.testng.annotations.Test
abstract class <lineMarker descr="*"><lineMarker descr="Run Test"></lineMarker>KBase</lineMarker> { abstract class <lineMarker descr="*"><lineMarker descr="Run Test">KBase</lineMarker></lineMarker> {
@Test @Test
fun <lineMarker descr="*">testFoo</lineMarker>() { fun <lineMarker descr="*">testFoo</lineMarker>() {