Implement "Find Usages" for value/type parameters

This commit is contained in:
Alexey Sedunov
2013-11-06 17:19:59 +04:00
parent cfaeca88bf
commit 52ffd52a4e
43 changed files with 638 additions and 69 deletions
@@ -0,0 +1,9 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages
open class A<T>(<caret>foo: T) {
{
println(foo)
}
val t: T = foo
}
@@ -0,0 +1,2 @@
Value read (5: 17) println(foo)
Value read (8: 16) val t: T = foo
@@ -0,0 +1,6 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages
fun foo<T>(<caret>t: T): T {
println(t)
return t
}
@@ -0,0 +1,2 @@
Value read (4: 13) println(t)
Value read (5: 12) return t
@@ -0,0 +1,26 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: overrides
open class A<T>(open var <caret>foo: T)
open class B: A<String>("") {
override var foo: String
get() {
println("get")
return super<A>.foo
}
set(value: String) {
println("set:" + value)
super<A>.foo = value
}
fun baz(a: A<String>) {
a.foo = ""
println(a.foo)
}
}
open class D: A<String>("") {
override var foo: String = ""
}
open class E<T>(override var foo: T): A<T>(foo)
@@ -0,0 +1,15 @@
class C extends A<String> {
C(String s) {
super(s);
}
@Override
public String getFoo() {
return super.getFoo();
}
@Override
public void setFoo(String s) {
super.setFoo(s);
}
}
@@ -0,0 +1,8 @@
Unclassified usage (11: 9) set(value: String) {
Unclassified usage (12: 17) public void setFoo(String s) {
Unclassified usage (23: 18) override var foo: String = ""
Unclassified usage (23: 18) override var foo: String = ""
Unclassified usage (26: 30) open class E<T>(override var foo: T): A<T>(foo)
Unclassified usage (26: 30) open class E<T>(override var foo: T): A<T>(foo)
Unclassified usage (7: 19) public String getFoo() {
Unclassified usage (7: 9) get() {
@@ -0,0 +1,16 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages, skipWrite
package server;
open class A<T>(open var <caret>foo: T)
open class B: A<String>("") {
override var foo: String
get() {
println("get")
return ""
}
set(value: String) {
println("set:" + value)
}
}
@@ -0,0 +1,15 @@
package client;
import server.*
class Client {
fun fooBar() {
A<String> a = new A<String>("");
a.setFoo("a");
println("a.foo = " + a.getFoo());
B b = new B();
b.setFoo("b");
println("b.foo = " + b.getFoo());
}
}
@@ -0,0 +1,2 @@
Unclassified usage (13: 32) println("b.foo = " + b.getFoo());
Unclassified usage (9: 32) println("a.foo = " + a.getFoo());
@@ -0,0 +1,16 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages
package server;
open class A<T>(open var <caret>foo: T)
open class B: A<String>("") {
override var foo: String
get() {
println("get")
return ""
}
set(value: String) {
println("set:" + value)
}
}
@@ -0,0 +1,15 @@
package client;
import server.*
class Client {
fun fooBar() {
A<String> a = new A<String>("");
a.setFoo("a");
println("a.foo = " + a.getFoo());
B b = new B();
b.setFoo("b");
println("b.foo = " + b.getFoo());
}
}
@@ -0,0 +1,4 @@
Unclassified usage (12: 11) b.setFoo("b");
Unclassified usage (13: 32) println("b.foo = " + b.getFoo());
Unclassified usage (8: 11) a.setFoo("a");
Unclassified usage (9: 32) println("a.foo = " + a.getFoo());
@@ -0,0 +1,16 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages, skipRead
package server;
open class A<T>(open var <caret>foo: T)
open class B: A<String>("") {
override var foo: String
get() {
println("get")
return ""
}
set(value: String) {
println("set:" + value)
}
}
@@ -0,0 +1,15 @@
package client;
import server.*
class Client {
fun fooBar() {
A<String> a = new A<String>("");
a.setFoo("a");
println("a.foo = " + a.getFoo());
B b = new B();
b.setFoo("b");
println("b.foo = " + b.getFoo());
}
}
@@ -0,0 +1,2 @@
Unclassified usage (12: 11) b.setFoo("b");
Unclassified usage (8: 11) a.setFoo("a");
@@ -0,0 +1,12 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages
package server;
public open class Server(private val <caret>foo: String = "foo") {
open fun processRequest() = foo
}
public class ServerEx(): Server() {
override fun processRequest() = "foo" + foo
}
@@ -0,0 +1,8 @@
import server.*;
class Client {
public fun foo() {
println(Server().foo)
ServerEx().processRequest()
}
}
@@ -0,0 +1,3 @@
Value read (10: 45) override fun processRequest() = "foo" + foo
Value read (5: 26) println(Server().foo)
Value read (6: 33) open fun processRequest() = foo
@@ -0,0 +1,17 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages, skipWrite
package server;
open class A<T>(open var <caret>foo: T)
open class B: A<String>() {
open var foo: String
get() {
println("get")
return super<A>.foo
}
set(value: String) {
println("set:" + value)
super<A>.foo = value
}
}
@@ -0,0 +1,13 @@
import server.*;
class Client {
public fun foo() {
val a = A<String>("")
a.foo = "a"
println("a.foo = ${a.foo}")
val b = B()
b.foo = "b"
println("b.foo = ${b.foo}")
}
}
@@ -0,0 +1,3 @@
Value read (11: 29) return super<A>.foo
Value read (11: 30) println("b.foo = ${b.foo}")
Value read (7: 30) println("a.foo = ${a.foo}")
@@ -0,0 +1,17 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages
package server;
open class A<T>(open var <caret>foo: T)
open class B: A<String>() {
open var foo: String
get() {
println("get")
return super<A>.foo
}
set(value: String) {
println("set:" + value)
super<A>.foo = value
}
}
@@ -0,0 +1,13 @@
import server.*;
class Client {
public fun foo() {
val a = A<String>("")
a.foo = "a"
println("a.foo = ${a.foo}")
val b = B()
b.foo = "b"
println("b.foo = ${b.foo}")
}
}
@@ -0,0 +1,6 @@
Value read (11: 29) return super<A>.foo
Value read (11: 30) println("b.foo = ${b.foo}")
Value read (7: 30) println("a.foo = ${a.foo}")
Value write (10: 11) b.foo = "b"
Value write (15: 22) super<A>.foo = value
Value write (6: 11) a.foo = "a"
@@ -0,0 +1,17 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetParameter
// OPTIONS: usages, skipRead
package server;
open class A<T>(open var <caret>foo: T)
open class B: A<String>() {
open var foo: String
get() {
println("get")
return super<A>.foo
}
set(value: String) {
println("set:" + value)
super<A>.foo = value
}
}
@@ -0,0 +1,13 @@
import server.*;
class Client {
public fun foo() {
val a = A<String>("")
a.foo = "a"
println("a.foo = ${a.foo}")
val b = B()
b.foo = "b"
println("b.foo = ${b.foo}")
}
}
@@ -0,0 +1,3 @@
Value write (10: 11) b.foo = "b"
Value write (15: 22) super<A>.foo = value
Value write (6: 11) a.foo = "a"
@@ -0,0 +1,12 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetTypeParameter
// OPTIONS: usages
open class A<<caret>T>(foo: T, list: List<T>) {
{
fun T.bar() {}
foo.bar()
}
val t: T = foo
fun bar(t: T): T = t
}
@@ -0,0 +1,6 @@
Class/object property type (10: 12) val t: T = foo
Extension receiver type (5: 13) fun T.bar() {}
Function return types (11: 20) fun bar(t: T): T = t
Parameter type (11: 16) fun bar(t: T): T = t
Parameter type (3: 22) open class A<T>(foo: T, list: List<T>) {
Type parameter (3: 36) open class A<T>(foo: T, list: List<T>) {
@@ -0,0 +1,5 @@
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetTypeParameter
// OPTIONS: usages
fun <<caret>T> T.foo(t: T, list: List<T>): T {
return t
}
@@ -0,0 +1,4 @@
Extension receiver type (3: 9) fun <T> T.foo(t: T, list: List<T>): T {
Function return types (3: 37) fun <T> T.foo(t: T, list: List<T>): T {
Parameter type (3: 18) fun <T> T.foo(t: T, list: List<T>): T {
Type parameter (3: 32) fun <T> T.foo(t: T, list: List<T>): T {