JetUsageTypeProvider: Eliminate SELECTOR type, replace class with object

This commit is contained in:
Alexey Sedunov
2013-10-30 14:18:25 +04:00
parent 657b4a164c
commit 6502f21144
6 changed files with 22 additions and 26 deletions
@@ -32,7 +32,7 @@ import org.jetbrains.jet.lexer.JetTokens
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
import org.jetbrains.jet.plugin.JetBundle
public class JetUsageTypeProvider() : UsageTypeProviderEx {
public object JetUsageTypeProvider : UsageTypeProviderEx {
public override fun getUsageType(element: PsiElement?): UsageType? {
return getUsageType(element, UsageTarget.EMPTY_ARRAY)
}
@@ -118,30 +118,27 @@ public class JetUsageTypeProvider() : UsageTypeProviderEx {
val dotQualifiedExpression = element.getParentByType(javaClass<JetDotQualifiedExpression>())
return if (dotQualifiedExpression != null) {
if (dotQualifiedExpression != null) {
val parent = dotQualifiedExpression.getParent()
when {
dotQualifiedExpression.getReceiverExpression().isAncestor(element) ->
JetUsageTypes.RECEIVER
return JetUsageTypes.RECEIVER
parent is JetDotQualifiedExpression && parent.getReceiverExpression().isAncestor(element) ->
JetUsageTypes.RECEIVER
else -> JetUsageTypes.SELECTOR
return JetUsageTypes.RECEIVER
}
}
else {
when {
element.getParentByTypeAndPredicate(
javaClass<JetBinaryExpression>(), false, { JetPsiUtil.isAssignment(it) }
)?.getLeft().isAncestor(element) ->
UsageType.WRITE
element.getParentByType(javaClass<JetSimpleNameExpression>()) != null ->
UsageType.READ
return when {
element.getParentByTypeAndPredicate(
javaClass<JetBinaryExpression>(), false, { JetPsiUtil.isAssignment(it) }
)?.getLeft().isAncestor(element) ->
UsageType.WRITE
else -> null
}
element.getParentByType(javaClass<JetSimpleNameExpression>()) != null ->
UsageType.READ
else -> null
}
}
@@ -207,7 +204,6 @@ object JetUsageTypes {
// values
val RECEIVER = UsageType(JetBundle.message("usageType.receiver"))
val SELECTOR = UsageType(JetBundle.message("usageType.selector"))
val DELEGATE = UsageType(JetBundle.message("usageType.delegate"))
// common usage types
@@ -1,3 +1,3 @@
Selector (10: 22) println("${x.a} ${x.b}")
Selector (10: 29) println("${x.a} ${x.b}")
Selector (11: 11) x.b = 12
Value read (10: 22) println("${x.a} ${x.b}")
Value read (10: 29) println("${x.a} ${x.b}")
Value write (11: 11) x.b = 12
@@ -1,3 +1,3 @@
Selector (4: 22) println("${a.a} ${a.b}")
Selector (4: 29) println("${a.a} ${a.b}")
Selector (5: 11) a.b = 12
Value read (4: 22) println("${a.a} ${a.b}")
Value read (4: 29) println("${a.a} ${a.b}")
Value write (5: 11) a.b = 12
@@ -1,3 +1,3 @@
Selector (5: 26) println(Server().Foo)
Value read (10: 33) open fun processRequest() = Foo
Value read (14: 37) override fun processRequest() = Foo
Value read (5: 26) println(Server().Foo)
@@ -1,3 +1,3 @@
Selector (5: 26) println(Server().foo)
Value read (12: 45) override fun processRequest() = "foo" + foo
Value read (5: 26) println(Server().foo)
Value read (8: 33) open fun processRequest() = foo
@@ -1,6 +1,6 @@
Import directive (3: 15) import server.foo
Receiver (8: 35) println("length: ${server.foo.length()}")
Selector (7: 33) println("foo = ${server.foo}")
Unclassified usage (7: 53) System.out.println("foo = " + ServerPackage.getFoo());
Unclassified usage (8: 55) System.out.println("length: " + ServerPackage.getFoo().length());
Unclassified usage (9: 23) ServerPackage.setFoo("");
Value read (7: 33) println("foo = ${server.foo}")