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