return raw collection type for getAt(Collection) on raw type
authorMaxim Medvedev <maxim.medvedev@jetbrains.com>
Sat, 27 Nov 2010 11:34:45 +0000 (14:34 +0300)
committerMaxim Medvedev <maxim.medvedev@jetbrains.com>
Sat, 27 Nov 2010 11:34:45 +0000 (14:34 +0300)
plugins/groovy/resources/standardDsls/defaultCollectionMethods.gdsl

index 45f897ca25710f43e0f57de23d928e6cd1502ddf..3bc2641d792532a143323fc633eee4191a7cb382 100644 (file)
@@ -22,13 +22,21 @@ def extractTypeParameter(def typeText) {
   final int start = typeText.indexOf('<')
   final int end = typeText.lastIndexOf('>')
 
-  if (start < 0) return "java.lang.Object"
+  if (start < 0) return null
   if (end < 0) return typeText.substring(start + 1)
   return typeText.substring(start + 1, end);
 }
 
-contributor(ctype:"java.util.Collection") {
+def constructTypeArg(def psiType) {
+  def typeText = psiType.canonicalText ?: psiType.presentableText
+  if (!typeText) return ""
+  def arg = extractTypeParameter(typeText)
+  if (!arg) return ""
+  return "<$arg>"
+}
+
+contributor(ctype: "java.util.Collection") {
   method name: "getAt", params: [arg: "java.lang.Number"], type: extractTypeParameter(psiType.canonicalText ?: psiType.presentableText)
-  method name: "getAt", params: [arg: "groovy.lang.Range"], type: "java.util.List<${extractTypeParameter(psiType.canonicalText ?: psiType.presentableText)}>"
-  method name: "getAt", params: [arg: "java.util.Collection"], type: "java.util.List<${extractTypeParameter(psiType.canonicalText ?: psiType.presentableText)}>"
+  method name: "getAt", params: [arg: "groovy.lang.Range"], type: "java.util.List${constructTypeArg(psiType)}"
+  method name: "getAt", params: [arg: "java.util.Collection"], type: "java.util.List${constructTypeArg(psiType)}"
 }
\ No newline at end of file