Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
883020f0
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,发现更多精彩内容 >>
提交
883020f0
编写于
10月 12, 2011
作者:
A
Andrey Breslav
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Java resolve fixed
上级
7427f3b3
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
48 addition
and
49 deletion
+48
-49
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassDescriptor.java
.../jetbrains/jet/lang/resolve/java/JavaClassDescriptor.java
+15
-17
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
...etbrains/jet/lang/resolve/java/JavaClassMembersScope.java
+2
-2
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+15
-12
compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
...end/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
+16
-18
未找到文件。
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassDescriptor.java
浏览文件 @
883020f0
...
...
@@ -3,14 +3,12 @@ package org.jetbrains.jet.lang.resolve.java;
import
com.google.common.collect.Sets
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.jet.lang.descriptors.*
;
import
org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor
;
import
org.jetbrains.jet.lang.resolve.scopes.JetScope
;
import
org.jetbrains.jet.lang.resolve.scopes.SubstitutingScope
;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.ClassReceiver
;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor
;
import
org.jetbrains.jet.lang.types.*
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
...
...
@@ -22,7 +20,7 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
private
TypeConstructor
typeConstructor
;
private
JavaClassMembersScope
unsubstitutedMemberScope
;
private
JetType
classObjectType
;
//
private JetType classObjectType;
private
final
Set
<
FunctionDescriptor
>
constructors
=
Sets
.
newLinkedHashSet
();
private
Modality
modality
;
private
Visibility
visibility
;
...
...
@@ -52,19 +50,19 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
this
.
unsubstitutedMemberScope
=
memberScope
;
}
public
void
setClassObjectMemberScope
(
JavaClassMembersScope
memberScope
)
{
classObjectType
=
new
JetTypeImpl
(
new
TypeConstructorImpl
(
JavaDescriptorResolver
.
JAVA_CLASS_OBJECT
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
true
,
"Class object emulation for "
+
getName
(),
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
Collections
.<
JetType
>
emptyList
()
),
memberScope
);
}
//
public void setClassObjectMemberScope(JavaClassMembersScope memberScope) {
//
classObjectType = new JetTypeImpl(
//
new TypeConstructorImpl(
//
JavaDescriptorResolver.JAVA_CLASS_OBJECT,
//
Collections.<AnnotationDescriptor>emptyList(),
//
true,
//
"Class object emulation for " + getName(),
//
Collections.<TypeParameterDescriptor>emptyList(),
//
Collections.<JetType>emptyList()
//
),
//
memberScope
//
);
//
}
public
void
addConstructor
(
ConstructorDescriptor
constructorDescriptor
)
{
this
.
constructors
.
add
(
constructorDescriptor
);
...
...
@@ -133,7 +131,7 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
@Override
public
JetType
getClassObjectType
()
{
return
classObjectType
;
return
null
;
}
@Override
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
浏览文件 @
883020f0
...
...
@@ -161,11 +161,11 @@ public class JavaClassMembersScope implements JetScope {
@NotNull
@Override
public
ReceiverDescriptor
getImplicitReceiver
()
{
throw
new
UnsupportedOperationException
()
;
// Should never occur, we don't sit in a Java class...
return
ReceiverDescriptor
.
NO_RECEIVER
;
// Should never occur, we don't sit in a Java class...
}
@Override
public
void
getImplicitReceiversHierarchy
(
@NotNull
List
<
ReceiverDescriptor
>
result
)
{
throw
new
UnsupportedOperationException
();
// Should never occur, we don't sit in a Java class...
// we cannot really be scoped inside here
}
}
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
883020f0
...
...
@@ -53,7 +53,7 @@ public class JavaDescriptorResolver {
protected
final
Map
<
PsiTypeParameter
,
TypeParameterDescriptor
>
typeParameterDescriptorCache
=
Maps
.
newHashMap
();
protected
final
Map
<
PsiMethod
,
FunctionDescriptor
>
methodDescriptorCache
=
Maps
.
newHashMap
();
protected
final
Map
<
PsiField
,
VariableDescriptor
>
fieldDescriptorCache
=
Maps
.
newHashMap
();
protected
final
Map
<
Psi
Package
,
NamespaceDescriptor
>
namespaceDescriptorCache
=
Maps
.
newHashMap
();
protected
final
Map
<
Psi
Element
,
NamespaceDescriptor
>
namespaceDescriptorCache
=
Maps
.
newHashMap
();
protected
final
JavaPsiFacade
javaFacade
;
protected
final
GlobalSearchScope
javaSearchScope
;
protected
final
JavaSemanticServices
semanticServices
;
...
...
@@ -116,7 +116,7 @@ public class JavaDescriptorResolver {
classDescriptor
.
setVisibility
(
resolveVisibilityFromPsiModifiers
(
semanticServices
.
getTrace
(),
psiClass
));
classDescriptorCache
.
put
(
psiClass
.
getQualifiedName
(),
classDescriptor
);
classDescriptor
.
setUnsubstitutedMemberScope
(
new
JavaClassMembersScope
(
classDescriptor
,
psiClass
,
semanticServices
,
false
));
classDescriptor
.
setClassObjectMemberScope
(
new
JavaClassMembersScope
(
classDescriptor
,
psiClass
,
semanticServices
,
true
));
//
classDescriptor.setClassObjectMemberScope(new JavaClassMembersScope(classDescriptor, psiClass, semanticServices, true));
// UGLY HACK
supertypes
.
addAll
(
getSupertypes
(
psiClass
));
if
(
psiClass
.
isInterface
())
{
...
...
@@ -237,7 +237,9 @@ public class JavaDescriptorResolver {
public
NamespaceDescriptor
resolveNamespace
(
String
qualifiedName
)
{
PsiPackage
psiPackage
=
javaFacade
.
findPackage
(
qualifiedName
);
if
(
psiPackage
==
null
)
{
return
null
;
PsiClass
psiClass
=
javaFacade
.
findClass
(
qualifiedName
,
javaSearchScope
);
if
(
psiClass
==
null
)
return
null
;
return
resolveNamespace
(
psiClass
);
}
return
resolveNamespace
(
psiPackage
);
}
...
...
@@ -245,20 +247,21 @@ public class JavaDescriptorResolver {
private
NamespaceDescriptor
resolveNamespace
(
@NotNull
PsiPackage
psiPackage
)
{
NamespaceDescriptor
namespaceDescriptor
=
namespaceDescriptorCache
.
get
(
psiPackage
);
if
(
namespaceDescriptor
==
null
)
{
// TODO : packages
// PsiClass psiClass = javaFacade.findClass(qualifiedName, javaSearchScope);
// if (psiClass != null) {
// namespaceDescriptor = createJavaNamespaceDescriptor(psiClass);
// }
// else {
namespaceDescriptor
=
createJavaNamespaceDescriptor
(
psiPackage
);
// }
namespaceDescriptor
=
createJavaNamespaceDescriptor
(
psiPackage
);
namespaceDescriptorCache
.
put
(
psiPackage
,
namespaceDescriptor
);
}
return
namespaceDescriptor
;
}
private
NamespaceDescriptor
resolveNamespace
(
@NotNull
PsiClass
psiClass
)
{
NamespaceDescriptor
namespaceDescriptor
=
namespaceDescriptorCache
.
get
(
psiClass
);
if
(
namespaceDescriptor
==
null
)
{
namespaceDescriptor
=
createJavaNamespaceDescriptor
(
psiClass
);
namespaceDescriptorCache
.
put
(
psiClass
,
namespaceDescriptor
);
}
return
namespaceDescriptor
;
}
private
NamespaceDescriptor
createJavaNamespaceDescriptor
(
@NotNull
PsiPackage
psiPackage
)
{
String
name
=
psiPackage
.
getName
();
JavaNamespaceDescriptor
namespaceDescriptor
=
new
JavaNamespaceDescriptor
(
...
...
compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
浏览文件 @
883020f0
...
...
@@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver
;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor
;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.TransientReceiver
;
import
org.jetbrains.jet.lexer.JetToken
;
import
org.jetbrains.jet.lexer.JetTokens
;
import
org.jetbrains.jet.util.slicedmap.WritableSlice
;
...
...
@@ -869,25 +868,24 @@ public class JetTypeInferrer {
if
(
classifier
!=
null
)
{
JetType
classObjectType
=
classifier
.
getClassObjectType
();
JetType
result
=
null
;
if
(
classObjectType
!=
null
&&
(
isNamespacePosition
()
||
classifier
.
isClassObjectAValue
()))
{
result
=
classObjectType
;
}
else
{
// context.trace.getErrorHandler().genericError(expression.getNode(), "Classifier " + classifier.getName() + " does not have a class object");
context
.
trace
.
report
(
NO_CLASS_OBJECT
.
on
(
expression
,
classifier
));
}
context
.
trace
.
record
(
REFERENCE_TARGET
,
expression
,
classifier
);
if
(
result
==
null
)
{
return
ErrorUtils
.
createErrorType
(
"No class object in "
+
expression
.
getReferencedName
());
if
(
classObjectType
!=
null
)
{
if
(
isNamespacePosition
()
||
classifier
.
isClassObjectAValue
())
{
result
=
classObjectType
;
}
else
{
// context.trace.getErrorHandler().genericError(expression.getNode(), "Classifier " + classifier.getName() + " does not have a class object");
context
.
trace
.
report
(
NO_CLASS_OBJECT
.
on
(
expression
,
classifier
));
}
context
.
trace
.
record
(
REFERENCE_TARGET
,
expression
,
classifier
);
if
(
result
==
null
)
{
return
ErrorUtils
.
createErrorType
(
"No class object in "
+
expression
.
getReferencedName
());
}
return
context
.
services
.
checkType
(
result
,
expression
,
context
);
}
return
context
.
services
.
checkType
(
result
,
expression
,
context
);
}
else
{
JetType
[]
result
=
new
JetType
[
1
];
if
(
furtherNameLookup
(
expression
,
referencedName
,
result
,
context
))
{
return
context
.
services
.
checkType
(
result
[
0
],
expression
,
context
);
}
JetType
[]
result
=
new
JetType
[
1
];
if
(
furtherNameLookup
(
expression
,
referencedName
,
result
,
context
))
{
return
context
.
services
.
checkType
(
result
[
0
],
expression
,
context
);
}
return
null
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录