Reuse Java usage types

This commit is contained in:
Alexey Sedunov
2013-11-01 16:22:02 +04:00
parent 828f24406c
commit 40900ac16c
13 changed files with 30 additions and 38 deletions
@@ -43,7 +43,7 @@ public object JetUsageTypeProvider : UsageTypeProviderEx {
fun getCommonUsageType(): UsageType? {
return when {
element.getParentByType(javaClass<JetImportDirective>()) != null ->
JetUsageTypes.IMPORT_DIRECTIVE
UsageType.CLASS_IMPORT
element.getParentByTypeAndBranch(javaClass<JetCallableReferenceExpression>()) { getCallableReference() } != null ->
JetUsageTypes.CALLABLE_REFERENCE
else -> null
@@ -55,7 +55,7 @@ public object JetUsageTypeProvider : UsageTypeProviderEx {
if (property != null) {
when {
property.getTypeRef().isAncestor(element) ->
return if (property.isLocal()) JetUsageTypes.LOCAL_VARIABLE_TYPE else JetUsageTypes.NON_LOCAL_PROPERTY_TYPE
return if (property.isLocal()) UsageType.CLASS_LOCAL_VAR_DECLARATION else JetUsageTypes.NON_LOCAL_PROPERTY_TYPE
property.getReceiverTypeRef().isAncestor(element) ->
return JetUsageTypes.EXTENSION_RECEIVER_TYPE
@@ -85,7 +85,7 @@ public object JetUsageTypeProvider : UsageTypeProviderEx {
JetUsageTypes.TYPE_DEFINITION
element.getParentByType(javaClass<JetTypeProjection>()) != null ->
JetUsageTypes.TYPE_ARGUMENT
UsageType.TYPE_PARAMETER
element.getParentByTypeAndBranch(javaClass<JetParameter>()) { getTypeReference() } != null ->
JetUsageTypes.VALUE_PARAMETER_TYPE
@@ -97,7 +97,7 @@ public object JetUsageTypeProvider : UsageTypeProviderEx {
val opType = this?.getOperationReference()?.getReferencedNameElementType()
opType == JetTokens.AS_KEYWORD || opType == JetTokens.AS_SAFE
} ->
JetUsageTypes.AS
UsageType.CLASS_CAST_TO
with(element.getParentByTypeAndBranch(javaClass<JetDotQualifiedExpression>()) { getReceiverExpression() }) {
this?.getReceiverExpression() is JetSimpleNameExpression
@@ -149,12 +149,12 @@ public object JetUsageTypeProvider : UsageTypeProviderEx {
descriptor is ConstructorDescriptor
&& element.getParentByTypeAndBranch(javaClass<JetAnnotationEntry>()) { getTypeReference() } != null ->
JetUsageTypes.ANNOTATION_TYPE
UsageType.ANNOTATION
with(element.getParentByTypeAndBranch(javaClass<JetCallExpression>()) { getCalleeExpression() }) {
this?.getCalleeExpression() is JetSimpleNameExpression
} ->
if (descriptor is ConstructorDescriptor) JetUsageTypes.INSTANTIATION else JetUsageTypes.FUNCTION_CALL
if (descriptor is ConstructorDescriptor) UsageType.CLASS_NEW_OPERATOR else JetUsageTypes.FUNCTION_CALL
else -> null
}
@@ -183,23 +183,18 @@ public object JetUsageTypeProvider : UsageTypeProviderEx {
object JetUsageTypes {
// types
val ANNOTATION_TYPE = UsageType(JetBundle.message("usageType.annotation.type"))
val TYPE_CONSTRAINT = UsageType(JetBundle.message("usageType.type.constraint"))
val TYPE_ARGUMENT = UsageType(JetBundle.message("usageType.type.argument"))
val VALUE_PARAMETER_TYPE = UsageType(JetBundle.message("usageType.value.parameter.type"))
val NON_LOCAL_PROPERTY_TYPE = UsageType(JetBundle.message("usageType.nonLocal.property.type"))
val LOCAL_VARIABLE_TYPE = UsageType(JetBundle.message("usageType.local.variable.type"))
val FUNCTION_RETURN_TYPE = UsageType(JetBundle.message("usageType.function.return.type"))
val SUPER_TYPE = UsageType(JetBundle.message("usageType.superType"))
val TYPE_DEFINITION = UsageType(JetBundle.message("usageType.type.definition"))
val AS = UsageType(JetBundle.message("usageType.as"))
val IS = UsageType(JetBundle.message("usageType.is"))
val CLASS_OBJECT_ACCESS = UsageType(JetBundle.message("usageType.class.object"))
val EXTENSION_RECEIVER_TYPE = UsageType(JetBundle.message("usageType.extension.receiver.type"))
val SUPER_TYPE_QUALIFIER = UsageType(JetBundle.message("usageType.super.type.qualifier"))
// functions
val INSTANTIATION = UsageType(JetBundle.message("usageType.instantiation"))
val FUNCTION_CALL = UsageType(JetBundle.message("usageType.function.call"))
// values
@@ -207,6 +202,5 @@ object JetUsageTypes {
val DELEGATE = UsageType(JetBundle.message("usageType.delegate"))
// common usage types
val IMPORT_DIRECTIVE = UsageType(JetBundle.message("usageType.import"))
val CALLABLE_REFERENCE = UsageType(JetBundle.message("usageType.callable.reference"))
}
@@ -1,18 +1,18 @@
Class/object property type (2: 15) var next: A? = A()
Function return types (15: 20) fun getNext(): A? {
Function return types (36: 16) fun Any.toA(): A? {
Instantiation (2: 20) var next: A? = A()
Instantiation (32: 18) fun X.bar(a: A = A()) {
Local variable type (11: 17) val aa: A = a
Local variable declaration (11: 17) val aa: A = a
New instance creation (2: 20) var next: A? = A()
New instance creation (32: 18) fun X.bar(a: A = A()) {
Parameter type (10: 16) fun foo(a: A) {
Parameter type (32: 14) fun X.bar(a: A = A()) {
Super type qualifier (20: 15) super<A>.foo()
Supertype (1: 39) public class X(bar: String? = A.BAR): A() {
Supertype (23: 19) class object: A() {
Supertype (28: 11) object O: A() {
Target type of 'as' operation (37: 35) return if (this is A) this as A else null
Target type of 'is' operation (37: 24) return if (this is A) this as A else null
Unclassified usage (1: 31) public class X(bar: String? = A.BAR): A() {
Unclassified usage (3: 26) val myBar: String? = A.BAR
Unclassified usage (6: 9) A.BAR = ""
Unclassified usage (7: 9) A.foos()
Usage in cast target type (37: 35) return if (this is A) this as A else null
@@ -1,8 +1,7 @@
Class/object property type (6: 21) var nextServer: Server? = new Server()
Function return types (14: 26) fun getNextServer(): Server? {
Function return types (40: 21) fun Any.asServer(): Server? {
Import directive (3: 15) import server.Server
Local variable type (10: 21) val server: Server = s
Local variable declaration (10: 21) val server: Server = s
Nested class/object (32: 28) fun Client.bar(s: Server = Server.NAME) {
Nested class/object (5: 29) class Client(name: String = Server.NAME): Server() {
Nested class/object (7: 16) val name = Server.NAME
@@ -12,5 +11,6 @@ Super type qualifier (19: 15) super<Server>.work()
Supertype (23: 19) class object: Server() {
Supertype (28: 22) object ClientObject: Server() {
Supertype (5: 43) class Client(name: String = Server.NAME): Server() {
Target type of 'as' operation (41: 40) return if (this is Server) this as Server else null
Target type of 'is' operation (41: 24) return if (this is Server) this as Server else null
Usage in cast target type (41: 40) return if (this is Server) this as Server else null
Usage in import (3: 15) import server.Server
@@ -1,2 +1,2 @@
Annotation (5: 1) X("")
Import directive (3: 15) import server.X
Usage in import (3: 15) import server.X
@@ -1,4 +1,4 @@
Import directive (3: 15) import server.Data
Type argument (9: 16) val c = Client<Data>()
Type constraint (5: 17) class Client<T: Data, X> where X: Data {
Type constraint (5: 35) class Client<T: Data, X> where X: Data {
Type constraint (5: 35) class Client<T: Data, X> where X: Data {
Type parameter (9: 16) val c = Client<Data>()
Usage in import (3: 15) import server.Data
@@ -1,13 +1,13 @@
Class/object property type (6: 21) var nextServer: Server? = new Server()
Function return types (14: 26) fun getNextServer(): Server? {
Function return types (36: 21) fun Any.asServer(): Server? {
Import directive (3: 15) import server.Server
Local variable type (10: 21) val server: Server = s
Local variable declaration (10: 21) val server: Server = s
Nested class/object (28: 28) fun Client.bar(s: Server = Server.NAME) {
Nested class/object (5: 29) class Client(name: String = Server.NAME): Server() {
Nested class/object (7: 16) val name = Server.NAME
Parameter type (28: 19) fun Client.bar(s: Server = Server.NAME) {
Parameter type (9: 16) fun foo(s: Server) {
Super type qualifier (19: 15) super<Server>.work()
Target type of 'as' operation (37: 40) return if (this is Server) this as Server else null
Target type of 'is' operation (37: 24) return if (this is Server) this as Server else null
Usage in cast target type (37: 40) return if (this is Server) this as Server else null
Usage in import (3: 15) import server.Server
@@ -1,2 +1 @@
Instantiation (6: 12) return Bar()
New instance creation (6: 12) return Bar()
@@ -1,2 +1 @@
Instantiation (7: 16) return Bar()
New instance creation (7: 16) return Bar()
@@ -1,3 +1,3 @@
Instantiation (10: 33) open fun processRequest() = Foo()
Instantiation (14: 44) override fun processRequest() = Server.Foo()
Instantiation (5: 24) println(Server.Foo())
New instance creation (10: 33) open fun processRequest() = Foo()
New instance creation (14: 44) override fun processRequest() = Server.Foo()
New instance creation (5: 24) println(Server.Foo())
@@ -1,5 +1,5 @@
Callable reference (6: 23) val methodRef = ::processRequest()
Function call (10: 9) processRequest()
Import directive (3: 15) import server.processRequest
Unclassified usage (6: 30) String s = ServerPackage.processRequest();
Unclassified usage (9: 30) return ServerPackage.processRequest();
Usage in import (3: 15) import server.processRequest
@@ -1,3 +1,3 @@
Import directive (3: 15) import server.O
Receiver (7: 26) println("foo = ${O.foo}")
Value read (8: 19) val obj = O
Usage in import (3: 15) import server.O
Value read (8: 19) val obj = O
@@ -1,6 +1,6 @@
Import directive (3: 15) import server.foo
Receiver (8: 35) println("length: ${server.foo.length()}")
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("");
Usage in import (3: 15) import server.foo
Value read (7: 33) println("foo = ${server.foo}")
@@ -1 +1 @@
Instantiation (5: 9) val a = Test()
New instance creation (5: 9) val a = Test()