Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
4bd44543
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,发现更多精彩内容 >>
提交
4bd44543
编写于
1月 26, 2012
作者:
S
Stepan Koltsov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more JavaDescriptorResolver refactoring
上级
fc8bc52e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
29 deletion
+25
-29
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
...etbrains/jet/lang/resolve/java/JavaClassMembersScope.java
+1
-15
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+24
-14
未找到文件。
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
浏览文件 @
4bd44543
...
...
@@ -8,7 +8,6 @@ import org.jetbrains.annotations.NotNull;
import
org.jetbrains.jet.lang.descriptors.ClassDescriptor
;
import
org.jetbrains.jet.lang.descriptors.ClassifierDescriptor
;
import
org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
;
import
org.jetbrains.jet.lang.descriptors.FunctionDescriptor
;
import
org.jetbrains.jet.lang.descriptors.NamespaceDescriptor
;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor
;
import
org.jetbrains.jet.lang.types.TypeSubstitutor
;
...
...
@@ -16,7 +15,6 @@ import org.jetbrains.jet.lang.types.TypeSubstitutor;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* @author abreslav
...
...
@@ -73,9 +71,8 @@ public class JavaClassMembersScope extends JavaClassOrPackageScope {
public
Collection
<
DeclarationDescriptor
>
getAllDescriptors
()
{
if
(
allDescriptors
==
null
)
{
allDescriptors
=
Sets
.
newHashSet
();
TypeSubstitutor
substitutorForGenericSupertypes
=
getTypeSubstitutorForSupertypes
();
allDescriptors
.
addAll
(
semanticServices
.
getDescriptorResolver
().
resolveMethods
(
psiClass
.
getPsiClass
(),
descriptor
,
staticMembers
,
substitutorForGenericSupertypes
));
allDescriptors
.
addAll
(
semanticServices
.
getDescriptorResolver
().
resolveMethods
(
psiClass
.
getPsiClass
(),
descriptor
));
allDescriptors
.
addAll
(
semanticServices
.
getDescriptorResolver
().
resolveFieldGroup
(
descriptor
,
psiClass
.
getPsiClass
(),
staticMembers
));
...
...
@@ -84,17 +81,6 @@ public class JavaClassMembersScope extends JavaClassOrPackageScope {
return
allDescriptors
;
}
private
TypeSubstitutor
getTypeSubstitutorForSupertypes
()
{
TypeSubstitutor
substitutorForGenericSupertypes
;
if
(
descriptor
instanceof
ClassDescriptor
)
{
substitutorForGenericSupertypes
=
semanticServices
.
getDescriptorResolver
().
createSubstitutorForGenericSupertypes
((
ClassDescriptor
)
descriptor
);
}
else
{
substitutorForGenericSupertypes
=
TypeSubstitutor
.
EMPTY
;
}
return
substitutorForGenericSupertypes
;
}
private
ClassifierDescriptor
doGetClassifierDescriptor
(
String
name
)
{
// TODO : suboptimal, walk the list only once
for
(
PsiClass
innerClass
:
psiClass
.
getPsiClass
().
getAllInnerClasses
())
{
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
4bd44543
...
...
@@ -95,6 +95,7 @@ public class JavaDescriptorResolver {
private
Map
<
String
,
NamedMembers
>
namedMembersMap
;
}
/** Class with instance members */
private
static
class
ResolverClassData
extends
ResolverScopeData
{
private
MutableClassDescriptorLite
classDescriptor
;
...
...
@@ -104,6 +105,7 @@ public class JavaDescriptorResolver {
}
}
/** Either package or class with static members */
private
static
class
ResolverNamespaceData
extends
ResolverScopeData
{
private
JavaNamespaceDescriptor
namespaceDescriptor
;
...
...
@@ -1015,7 +1017,7 @@ public class JavaDescriptorResolver {
namedMembers
.
propertyDescriptors
=
r
;
}
private
void
resolveNamedGroupFunctions
(
DeclarationDescriptor
owner
,
PsiClass
psiClass
,
TypeSubstitutor
typeSubstitutorForGenericSuperclasses
,
boolean
staticMembers
,
NamedMembers
namedMembers
,
String
functionName
)
{
private
void
resolveNamedGroupFunctions
(
DeclarationDescriptor
owner
,
PsiClass
psiClass
,
TypeSubstitutor
typeSubstitutorForGenericSuperclasses
,
NamedMembers
namedMembers
)
{
if
(
namedMembers
.
functionDescriptors
!=
null
)
{
return
;
}
...
...
@@ -1027,7 +1029,10 @@ public class JavaDescriptorResolver {
Set
<
FunctionDescriptor
>
functionDescriptors
=
new
HashSet
<
FunctionDescriptor
>(
namedMembers
.
methods
.
size
());
for
(
PsiMethodWrapper
method
:
namedMembers
.
methods
)
{
functionDescriptors
.
add
(
resolveMethodToFunctionDescriptor
(
owner
,
psiClass
,
typeSubstitutorForGenericSuperclasses
,
method
));
FunctionDescriptor
function
=
resolveMethodToFunctionDescriptor
(
owner
,
psiClass
,
typeSubstitutorForGenericSuperclasses
,
method
);
if
(
function
!=
null
)
{
functionDescriptors
.
add
(
function
);
}
}
namedMembers
.
functionDescriptors
=
functionDescriptors
;
}
...
...
@@ -1073,12 +1078,12 @@ public class JavaDescriptorResolver {
}
else
{
typeSubstitutor
=
TypeSubstitutor
.
EMPTY
;
}
resolveNamedGroupFunctions
(
descriptor
,
psiClass
,
typeSubstitutor
,
staticMembers
,
namedMembers
,
methodName
);
resolveNamedGroupFunctions
(
descriptor
,
psiClass
,
typeSubstitutor
,
namedMembers
);
return
namedMembers
.
functionDescriptors
;
}
p
ublic
TypeSubstitutor
createSubstitutorForGenericSupertypes
(
@Nullable
ClassDescriptor
classDescriptor
)
{
p
rivate
TypeSubstitutor
createSubstitutorForGenericSupertypes
(
@Nullable
ClassDescriptor
classDescriptor
)
{
TypeSubstitutor
typeSubstitutor
;
if
(
classDescriptor
!=
null
)
{
typeSubstitutor
=
TypeUtils
.
buildDeepSubstitutor
(
classDescriptor
.
getDefaultType
());
...
...
@@ -1230,18 +1235,23 @@ public class JavaDescriptorResolver {
return
substitutedFunctionDescriptor
;
}
public
List
<
FunctionDescriptor
>
resolveMethods
(
PsiClass
psiClass
,
DeclarationDescriptor
containingDeclaration
,
boolean
staticMembers
,
TypeSubstitutor
substitutorForGenericSupertypes
)
{
public
List
<
FunctionDescriptor
>
resolveMethods
(
PsiClass
psiClass
,
DeclarationDescriptor
containingDeclaration
)
{
ResolverScopeData
scopeData
=
getResolverScopeData
(
containingDeclaration
,
new
PsiClassWrapper
(
psiClass
));
TypeSubstitutor
substitutorForGenericSupertypes
;
if
(
scopeData
instanceof
ResolverClassData
)
{
substitutorForGenericSupertypes
=
createSubstitutorForGenericSupertypes
(((
ResolverClassData
)
scopeData
).
classDescriptor
);
}
else
{
substitutorForGenericSupertypes
=
TypeSubstitutor
.
EMPTY
;
}
List
<
FunctionDescriptor
>
functions
=
new
ArrayList
<
FunctionDescriptor
>();
for
(
HierarchicalMethodSignature
signature
:
psiClass
.
getVisibleSignatures
())
{
PsiMethod
method
=
signature
.
getMethod
();
if
(
method
.
hasModifierProperty
(
PsiModifier
.
STATIC
)
!=
staticMembers
)
{
continue
;
}
FunctionDescriptor
functionDescriptor
=
semanticServices
.
getDescriptorResolver
().
resolveMethodToFunctionDescriptor
(
containingDeclaration
,
psiClass
,
substitutorForGenericSupertypes
,
new
PsiMethodWrapper
(
method
));
if
(
functionDescriptor
!=
null
)
{
functions
.
add
(
functionDescriptor
);
}
for
(
NamedMembers
namedMembers
:
scopeData
.
namedMembersMap
.
values
())
{
resolveNamedGroupFunctions
(
containingDeclaration
,
psiClass
,
substitutorForGenericSupertypes
,
namedMembers
);
functions
.
addAll
(
namedMembers
.
functionDescriptors
);
}
return
functions
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录