Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
fcdbc314
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fcdbc314
编写于
4月 22, 2011
作者:
A
Andrey Breslav
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Generic Java methods supported
上级
d9997f3c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
47 addition
and
27 deletion
+47
-27
idea/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
...etbrains/jet/lang/resolve/java/JavaClassMembersScope.java
+8
-24
idea/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+31
-3
idea/testData/checker/ResolveToJava.jet
idea/testData/checker/ResolveToJava.jet
+8
-0
未找到文件。
idea/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
浏览文件 @
fcdbc314
package
org.jetbrains.jet.lang.resolve.java
;
import
com.google.common.collect.Maps
;
import
com.intellij.psi.*
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.jet.lang.resolve.JetScope
;
...
...
@@ -8,6 +9,7 @@ import org.jetbrains.jet.lang.types.*;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Map
;
/**
* @author abreslav
...
...
@@ -17,6 +19,7 @@ public class JavaClassMembersScope implements JetScope {
private
final
JavaSemanticServices
semanticServices
;
private
final
boolean
staticMembers
;
private
final
DeclarationDescriptor
containingDeclaration
;
private
final
Map
<
String
,
FunctionGroup
>
functionGroups
=
Maps
.
newHashMap
();
public
JavaClassMembersScope
(
@NotNull
DeclarationDescriptor
classDescriptor
,
PsiClass
psiClass
,
JavaSemanticServices
semanticServices
,
boolean
staticMembers
)
{
this
.
containingDeclaration
=
classDescriptor
;
...
...
@@ -78,31 +81,12 @@ public class JavaClassMembersScope implements JetScope {
@NotNull
@Override
public
FunctionGroup
getFunctionGroup
(
@NotNull
String
name
)
{
WritableFunctionGroup
writableFunctionGroup
=
new
WritableFunctionGroup
(
name
);
PsiMethod
[]
allMethods
=
psiClass
.
getMethods
();
// TODO : look into superclasses
for
(
PsiMethod
method
:
allMethods
)
{
if
(
method
.
hasModifierProperty
(
PsiModifier
.
STATIC
)
!=
staticMembers
)
{
continue
;
}
if
(!
name
.
equals
(
method
.
getName
()))
{
continue
;
}
final
PsiParameter
[]
parameters
=
method
.
getParameterList
().
getParameters
();
FunctionDescriptorImpl
functionDescriptor
=
new
FunctionDescriptorImpl
(
JavaDescriptorResolver
.
JAVA_ROOT
,
Collections
.<
Attribute
>
emptyList
(),
// TODO
name
);
functionDescriptor
.
initialize
(
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
// TODO
semanticServices
.
getDescriptorResolver
().
resolveParameterDescriptors
(
functionDescriptor
,
parameters
),
semanticServices
.
getTypeTransformer
().
transformToType
(
method
.
getReturnType
())
);
semanticServices
.
getTrace
().
recordDeclarationResolution
(
method
,
functionDescriptor
);
writableFunctionGroup
.
addFunction
(
functionDescriptor
);
FunctionGroup
functionGroup
=
functionGroups
.
get
(
name
);
if
(
functionGroup
==
null
)
{
functionGroup
=
semanticServices
.
getDescriptorResolver
().
resolveFunctionGroup
(
psiClass
,
name
,
staticMembers
);
functionGroups
.
put
(
name
,
functionGroup
);
}
return
writableF
unctionGroup
;
return
f
unctionGroup
;
}
@Override
...
...
idea/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
fcdbc314
...
...
@@ -88,7 +88,7 @@ public class JavaDescriptorResolver {
// TODO
modifierList
==
null
?
false
:
modifierList
.
hasModifierProperty
(
PsiModifier
.
FINAL
),
name
,
resolveTypeParameters
(
psiClass
,
classDescriptor
),
resolveTypeParameters
(
psiClass
.
getTypeParameters
()
),
supertypes
));
...
...
@@ -113,9 +113,8 @@ public class JavaDescriptorResolver {
return
classDescriptor
;
}
private
List
<
TypeParameterDescriptor
>
resolveTypeParameters
(
@NotNull
Psi
Class
psiClass
,
@NotNull
ClassDescriptor
classDescriptor
)
{
private
List
<
TypeParameterDescriptor
>
resolveTypeParameters
(
@NotNull
Psi
TypeParameter
[]
typeParameters
)
{
List
<
TypeParameterDescriptor
>
result
=
Lists
.
newArrayList
();
PsiTypeParameter
[]
typeParameters
=
psiClass
.
getTypeParameters
();
for
(
PsiTypeParameter
typeParameter
:
typeParameters
)
{
TypeParameterDescriptor
typeParameterDescriptor
=
resolveTypeParameter
(
typeParameter
);
result
.
add
(
typeParameterDescriptor
);
...
...
@@ -238,4 +237,33 @@ public class JavaDescriptorResolver {
}
return
result
;
}
@NotNull
public
FunctionGroup
resolveFunctionGroup
(
@NotNull
PsiClass
psiClass
,
@NotNull
String
methodName
,
boolean
staticMembers
)
{
WritableFunctionGroup
writableFunctionGroup
=
new
WritableFunctionGroup
(
methodName
);
PsiMethod
[]
allMethods
=
psiClass
.
getMethods
();
// TODO : look into superclasses
for
(
PsiMethod
method
:
allMethods
)
{
if
(
method
.
hasModifierProperty
(
PsiModifier
.
STATIC
)
!=
staticMembers
)
{
continue
;
}
if
(!
methodName
.
equals
(
method
.
getName
()))
{
continue
;
}
final
PsiParameter
[]
parameters
=
method
.
getParameterList
().
getParameters
();
FunctionDescriptorImpl
functionDescriptor
=
new
FunctionDescriptorImpl
(
JavaDescriptorResolver
.
JAVA_ROOT
,
Collections
.<
Attribute
>
emptyList
(),
// TODO
methodName
);
functionDescriptor
.
initialize
(
resolveTypeParameters
(
method
.
getTypeParameters
()),
semanticServices
.
getDescriptorResolver
().
resolveParameterDescriptors
(
functionDescriptor
,
parameters
),
semanticServices
.
getTypeTransformer
().
transformToType
(
method
.
getReturnType
())
);
semanticServices
.
getTrace
().
recordDeclarationResolution
(
method
,
functionDescriptor
);
writableFunctionGroup
.
addFunction
(
functionDescriptor
);
}
return
writableFunctionGroup
;
}
}
idea/testData/checker/ResolveToJava.jet
浏览文件 @
fcdbc314
...
...
@@ -10,4 +10,12 @@ fun test(l : java.util.List<Int>) {
val b : java.lang.Object
val a : util.List<Int>
val z : java.<error>utils</error>.List<Int>
val f : java.io.File? = null
Collections.<error>emptyList</error>
Collections.emptyList<Int>
Collections.emptyList<Int>()
Collections.emptyList<error>()</error>
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录