Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
67fdbbd2
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,发现更多精彩内容 >>
提交
67fdbbd2
编写于
9月 23, 2011
作者:
S
svtk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added visibility information to descriptors
上级
8670d53a
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
216 addition
and
37 deletion
+216
-37
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassDescriptor.java
.../jetbrains/jet/lang/resolve/java/JavaClassDescriptor.java
+11
-0
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+16
-3
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassDescriptor.java
...c/org/jetbrains/jet/lang/descriptors/ClassDescriptor.java
+3
-0
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassDescriptorImpl.java
...g/jetbrains/jet/lang/descriptors/ClassDescriptorImpl.java
+6
-0
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java
...rains/jet/lang/descriptors/ConstructorDescriptorImpl.java
+4
-4
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java
...etbrains/jet/lang/descriptors/FunctionDescriptorImpl.java
+12
-2
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/LazySubstitutingClassDescriptor.java
...jet/lang/descriptors/LazySubstitutingClassDescriptor.java
+6
-0
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MemberDescriptor.java
.../org/jetbrains/jet/lang/descriptors/MemberDescriptor.java
+3
-0
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java
...etbrains/jet/lang/descriptors/MutableClassDescriptor.java
+11
-0
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyAccessorDescriptor.java
...ains/jet/lang/descriptors/PropertyAccessorDescriptor.java
+11
-2
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java
...rg/jetbrains/jet/lang/descriptors/PropertyDescriptor.java
+12
-1
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyGetterDescriptor.java
...brains/jet/lang/descriptors/PropertyGetterDescriptor.java
+2
-2
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertySetterDescriptor.java
...brains/jet/lang/descriptors/PropertySetterDescriptor.java
+2
-2
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/VariableAsFunctionDescriptor.java
...ns/jet/lang/descriptors/VariableAsFunctionDescriptor.java
+1
-1
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/Visibility.java
...nd/src/org/jetbrains/jet/lang/descriptors/Visibility.java
+23
-0
compiler/frontend/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
...g/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
+83
-16
compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java
...org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java
+4
-1
compiler/frontend/src/org/jetbrains/jet/lang/types/ErrorUtils.java
...frontend/src/org/jetbrains/jet/lang/types/ErrorUtils.java
+5
-2
compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
...end/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
+1
-1
未找到文件。
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -23,6 +23,7 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
private
JetType
classObjectType
;
private
final
WritableFunctionGroup
constructors
=
new
WritableFunctionGroup
(
"<init>"
);
private
Modality
modality
;
private
Visibility
visibility
;
private
JetType
superclassType
;
private
final
ClassKind
kind
;
private
ClassReceiver
implicitReceiver
;
...
...
@@ -41,6 +42,10 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
this
.
modality
=
modality
;
}
public
void
setVisibility
(
Visibility
visibility
)
{
this
.
visibility
=
visibility
;
}
public
void
setUnsubstitutedMemberScope
(
JavaClassMembersScope
memberScope
)
{
this
.
unsubstitutedMemberScope
=
memberScope
;
}
...
...
@@ -149,6 +154,12 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
return
modality
;
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
visibility
;
}
@Override
public
<
R
,
D
>
R
accept
(
DeclarationDescriptorVisitor
<
R
,
D
>
visitor
,
D
data
)
{
return
visitor
.
visitClassDescriptor
(
this
,
data
);
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
67fdbbd2
...
...
@@ -10,6 +10,7 @@ import org.jetbrains.annotations.Nullable;
import
org.jetbrains.jet.lang.descriptors.*
;
import
org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.resolve.BindingTrace
;
import
org.jetbrains.jet.lang.types.*
;
import
java.util.*
;
...
...
@@ -110,6 +111,7 @@ public class JavaDescriptorResolver {
psiClass
.
hasModifierProperty
(
PsiModifier
.
ABSTRACT
)
||
psiClass
.
isInterface
(),
!
psiClass
.
hasModifierProperty
(
PsiModifier
.
FINAL
))
);
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
));
...
...
@@ -135,7 +137,7 @@ public class JavaDescriptorResolver {
classDescriptor
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
false
);
constructorDescriptor
.
initialize
(
typeParameters
,
Collections
.<
ValueParameterDescriptor
>
emptyList
(),
Modality
.
FINAL
);
constructorDescriptor
.
initialize
(
typeParameters
,
Collections
.<
ValueParameterDescriptor
>
emptyList
(),
Modality
.
FINAL
,
classDescriptor
.
getVisibility
()
);
constructorDescriptor
.
setReturnType
(
classDescriptor
.
getDefaultType
());
classDescriptor
.
addConstructor
(
constructorDescriptor
);
semanticServices
.
getTrace
().
record
(
BindingContext
.
CONSTRUCTOR
,
psiClass
,
constructorDescriptor
);
...
...
@@ -147,7 +149,8 @@ public class JavaDescriptorResolver {
classDescriptor
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
// TODO
false
);
constructorDescriptor
.
initialize
(
typeParameters
,
resolveParameterDescriptors
(
constructorDescriptor
,
constructor
.
getParameterList
().
getParameters
()),
Modality
.
FINAL
);
constructorDescriptor
.
initialize
(
typeParameters
,
resolveParameterDescriptors
(
constructorDescriptor
,
constructor
.
getParameterList
().
getParameters
()),
Modality
.
FINAL
,
resolveVisibilityFromPsiModifiers
(
semanticServices
.
getTrace
(),
constructor
));
constructorDescriptor
.
setReturnType
(
classDescriptor
.
getDefaultType
());
classDescriptor
.
addConstructor
(
constructorDescriptor
);
semanticServices
.
getTrace
().
record
(
BindingContext
.
CONSTRUCTOR
,
constructor
,
constructorDescriptor
);
...
...
@@ -291,6 +294,7 @@ public class JavaDescriptorResolver {
containingDeclaration
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
Modality
.
FINAL
,
resolveVisibilityFromPsiModifiers
(
semanticServices
.
getTrace
(),
field
),
!
isFinal
,
null
,
field
.
getName
(),
...
...
@@ -359,7 +363,8 @@ public class JavaDescriptorResolver {
resolveTypeParameters
(
functionDescriptorImpl
,
method
.
getTypeParameters
()),
semanticServices
.
getDescriptorResolver
().
resolveParameterDescriptors
(
functionDescriptorImpl
,
parameters
),
semanticServices
.
getTypeTransformer
().
transformToType
(
returnType
),
Modality
.
convertFromFlags
(
method
.
hasModifierProperty
(
PsiModifier
.
ABSTRACT
),
!
method
.
hasModifierProperty
(
PsiModifier
.
FINAL
))
Modality
.
convertFromFlags
(
method
.
hasModifierProperty
(
PsiModifier
.
ABSTRACT
),
!
method
.
hasModifierProperty
(
PsiModifier
.
FINAL
)),
resolveVisibilityFromPsiModifiers
(
semanticServices
.
getTrace
(),
method
)
);
semanticServices
.
getTrace
().
record
(
BindingContext
.
FUNCTION
,
method
,
functionDescriptorImpl
);
FunctionDescriptor
substitutedFunctionDescriptor
=
functionDescriptorImpl
;
...
...
@@ -368,4 +373,12 @@ public class JavaDescriptorResolver {
}
return
substitutedFunctionDescriptor
;
}
private
static
Visibility
resolveVisibilityFromPsiModifiers
(
BindingTrace
trace
,
PsiModifierListOwner
modifierListOwner
)
{
//TODO report error
return
modifierListOwner
.
hasModifierProperty
(
PsiModifier
.
PUBLIC
)
?
Visibility
.
PUBLIC
:
(
modifierListOwner
.
hasModifierProperty
(
PsiModifier
.
PRIVATE
)
?
Visibility
.
PRIVATE
:
(
modifierListOwner
.
hasModifierProperty
(
PsiModifier
.
PROTECTED
)
?
Visibility
.
PROTECTED
:
Visibility
.
INTERNAL
));
}
}
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -54,6 +54,9 @@ public interface ClassDescriptor extends ClassifierDescriptor {
@NotNull
Modality
getModality
();
@NotNull
Visibility
getVisibility
();
@NotNull
ReceiverDescriptor
getImplicitReceiver
();
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassDescriptorImpl.java
浏览文件 @
67fdbbd2
...
...
@@ -155,6 +155,12 @@ public class ClassDescriptorImpl extends DeclarationDescriptorImpl implements Cl
return
Modality
.
FINAL
;
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
Visibility
.
PUBLIC
;
}
@NotNull
@Override
public
ReceiverDescriptor
getImplicitReceiver
()
{
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java
浏览文件 @
67fdbbd2
...
...
@@ -28,13 +28,13 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements
@Override
@Deprecated
public
FunctionDescriptorImpl
initialize
(
@Nullable
JetType
receiverType
,
@NotNull
List
<
TypeParameterDescriptor
>
typeParameters
,
@NotNull
List
<
ValueParameterDescriptor
>
unsubstitutedValueParameters
,
@Nullable
JetType
unsubstitutedReturnType
,
Modality
modality
)
{
public
FunctionDescriptorImpl
initialize
(
@Nullable
JetType
receiverType
,
@NotNull
List
<
TypeParameterDescriptor
>
typeParameters
,
@NotNull
List
<
ValueParameterDescriptor
>
unsubstitutedValueParameters
,
@Nullable
JetType
unsubstitutedReturnType
,
Modality
modality
,
Visibility
visibility
)
{
assert
receiverType
==
null
;
return
super
.
initialize
(
null
,
typeParameters
,
unsubstitutedValueParameters
,
unsubstitutedReturnType
,
modality
);
return
super
.
initialize
(
null
,
typeParameters
,
unsubstitutedValueParameters
,
unsubstitutedReturnType
,
modality
,
visibility
);
}
public
ConstructorDescriptorImpl
initialize
(
@NotNull
List
<
TypeParameterDescriptor
>
typeParameters
,
@NotNull
List
<
ValueParameterDescriptor
>
unsubstitutedValueParameters
,
Modality
modality
)
{
super
.
initialize
(
null
,
typeParameters
,
unsubstitutedValueParameters
,
null
,
modality
);
public
ConstructorDescriptorImpl
initialize
(
@NotNull
List
<
TypeParameterDescriptor
>
typeParameters
,
@NotNull
List
<
ValueParameterDescriptor
>
unsubstitutedValueParameters
,
Modality
modality
,
Visibility
visibility
)
{
super
.
initialize
(
null
,
typeParameters
,
unsubstitutedValueParameters
,
null
,
modality
,
visibility
);
return
this
;
}
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java
浏览文件 @
67fdbbd2
...
...
@@ -28,6 +28,7 @@ public class FunctionDescriptorImpl extends DeclarationDescriptorImpl implements
private
ReceiverDescriptor
receiver
;
private
Modality
modality
;
private
Visibility
visibility
;
private
final
Set
<
FunctionDescriptor
>
overriddenFunctions
=
Sets
.
newLinkedHashSet
();
private
final
FunctionDescriptor
original
;
...
...
@@ -52,11 +53,13 @@ public class FunctionDescriptorImpl extends DeclarationDescriptorImpl implements
@NotNull
List
<
TypeParameterDescriptor
>
typeParameters
,
@NotNull
List
<
ValueParameterDescriptor
>
unsubstitutedValueParameters
,
@Nullable
JetType
unsubstitutedReturnType
,
@Nullable
Modality
modality
)
{
@Nullable
Modality
modality
,
@NotNull
Visibility
visibility
)
{
this
.
typeParameters
=
typeParameters
;
this
.
unsubstitutedValueParameters
=
unsubstitutedValueParameters
;
this
.
unsubstitutedReturnType
=
unsubstitutedReturnType
;
this
.
modality
=
modality
;
this
.
visibility
=
visibility
;
this
.
receiver
=
receiverType
==
null
?
NO_RECEIVER
:
new
ExtensionReceiver
(
this
,
receiverType
);
return
this
;
}
...
...
@@ -83,6 +86,12 @@ public class FunctionDescriptorImpl extends DeclarationDescriptorImpl implements
return
modality
;
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
visibility
;
}
public
void
addOverriddenFunction
(
@NotNull
FunctionDescriptor
overriddenFunction
)
{
overriddenFunctions
.
add
(
overriddenFunction
);
}
...
...
@@ -144,7 +153,8 @@ public class FunctionDescriptorImpl extends DeclarationDescriptorImpl implements
substitutedTypeParameters
,
substitutedValueParameters
,
substitutedReturnType
,
modality
modality
,
visibility
);
for
(
FunctionDescriptor
overriddenFunction
:
overriddenFunctions
)
{
substitutedDescriptor
.
addOverriddenFunction
(
overriddenFunction
);
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/LazySubstitutingClassDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -163,6 +163,12 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor {
return
original
.
getModality
();
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
original
.
getVisibility
();
}
@Override
public
boolean
isClassObjectAValue
()
{
return
original
.
isClassObjectAValue
();
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MemberDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -8,4 +8,7 @@ import org.jetbrains.annotations.NotNull;
public
interface
MemberDescriptor
{
@NotNull
Modality
getModality
();
@NotNull
Visibility
getVisibility
();
}
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -29,6 +29,7 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme
private
Collection
<
JetType
>
supertypes
=
Lists
.
newArrayList
();
private
Modality
modality
;
private
Visibility
visibility
;
private
TypeConstructor
typeConstructor
;
private
final
WritableScope
scopeForMemberResolution
;
private
final
WritableScope
scopeForMemberLookup
;
...
...
@@ -281,12 +282,22 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme
this
.
modality
=
modality
;
}
public
void
setVisibility
(
Visibility
visibility
)
{
this
.
visibility
=
visibility
;
}
@Override
@NotNull
public
Modality
getModality
()
{
return
modality
;
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
visibility
;
}
@Override
public
String
toString
()
{
return
DescriptorRenderer
.
TEXT
.
render
(
this
)
+
"["
+
getClass
().
getCanonicalName
()
+
"@"
+
System
.
identityHashCode
(
this
)
+
"]"
;
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyAccessorDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -15,18 +15,21 @@ public abstract class PropertyAccessorDescriptor extends DeclarationDescriptorIm
private
final
boolean
hasBody
;
private
final
boolean
isDefault
;
private
final
Modality
modality
;
private
final
Visibility
visibility
;
private
final
PropertyDescriptor
correspondingProperty
;
p
rotected
PropertyAccessorDescriptor
(
p
ublic
PropertyAccessorDescriptor
(
@NotNull
Modality
modality
,
@NotNull
Visibility
visibility
,
@NotNull
PropertyDescriptor
correspondingProperty
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
@NotNull
String
name
,
boolean
hasBody
,
boolean
isDefault
)
{
super
(
correspondingProperty
.
getContainingDeclaration
(),
annotations
,
name
);
this
.
correspondingProperty
=
correspondingProperty
;
this
.
modality
=
modality
;
this
.
visibility
=
visibility
;
this
.
correspondingProperty
=
correspondingProperty
;
this
.
hasBody
=
hasBody
;
this
.
isDefault
=
isDefault
;
}
...
...
@@ -63,6 +66,12 @@ public abstract class PropertyAccessorDescriptor extends DeclarationDescriptorIm
return
modality
;
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
visibility
;
}
@NotNull
public
PropertyDescriptor
getCorrespondingProperty
()
{
return
correspondingProperty
;
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -18,6 +18,7 @@ import java.util.List;
public
class
PropertyDescriptor
extends
VariableDescriptorImpl
implements
MemberDescriptor
{
private
final
Modality
modality
;
private
final
Visibility
visibility
;
private
final
boolean
isVar
;
private
final
ReceiverDescriptor
receiver
;
private
final
List
<
TypeParameterDescriptor
>
typeParemeters
=
Lists
.
newArrayListWithCapacity
(
0
);
...
...
@@ -30,6 +31,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Member
@NotNull
DeclarationDescriptor
containingDeclaration
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
@NotNull
Modality
modality
,
@NotNull
Visibility
visibility
,
boolean
isVar
,
@Nullable
JetType
receiverType
,
@NotNull
String
name
,
...
...
@@ -40,6 +42,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Member
// assert outType != null;
this
.
isVar
=
isVar
;
this
.
modality
=
modality
;
this
.
visibility
=
visibility
;
this
.
receiver
=
receiverType
==
null
?
ReceiverDescriptor
.
NO_RECEIVER
:
new
ExtensionReceiver
(
this
,
receiverType
);
this
.
original
=
original
==
null
?
this
:
original
.
getOriginal
();
}
...
...
@@ -48,12 +51,13 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Member
@NotNull
DeclarationDescriptor
containingDeclaration
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
@NotNull
Modality
modality
,
@NotNull
Visibility
visibility
,
boolean
isVar
,
@Nullable
JetType
receiverType
,
@NotNull
String
name
,
@Nullable
JetType
inType
,
@NotNull
JetType
outType
)
{
this
(
null
,
containingDeclaration
,
annotations
,
modality
,
isVar
,
receiverType
,
name
,
inType
,
outType
);
this
(
null
,
containingDeclaration
,
annotations
,
modality
,
visibility
,
isVar
,
receiverType
,
name
,
inType
,
outType
);
}
private
PropertyDescriptor
(
...
...
@@ -66,6 +70,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Member
original
.
getContainingDeclaration
(),
original
.
getAnnotations
(),
// TODO : substitute?
original
.
getModality
(),
original
.
getVisibility
(),
original
.
isVar
,
receiverType
,
original
.
getName
(),
...
...
@@ -107,6 +112,12 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Member
return
modality
;
}
@NotNull
@Override
public
Visibility
getVisibility
()
{
return
visibility
;
}
@Nullable
public
PropertyGetterDescriptor
getGetter
()
{
return
getter
;
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyGetterDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -18,8 +18,8 @@ public class PropertyGetterDescriptor extends PropertyAccessorDescriptor {
private
final
Set
<
PropertyGetterDescriptor
>
overriddenGetters
=
Sets
.
newHashSet
();
private
JetType
returnType
;
public
PropertyGetterDescriptor
(
@NotNull
Modality
modality
,
@NotNull
PropertyDescriptor
correspondingProperty
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
@Nullable
JetType
returnType
,
boolean
hasBody
,
boolean
isDefault
)
{
super
(
modality
,
correspondingProperty
,
annotations
,
"get-"
+
correspondingProperty
.
getName
(),
hasBody
,
isDefault
);
public
PropertyGetterDescriptor
(
@NotNull
Modality
modality
,
@NotNull
Visibility
visibility
,
@NotNull
PropertyDescriptor
correspondingProperty
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
@Nullable
JetType
returnType
,
boolean
hasBody
,
boolean
isDefault
)
{
super
(
modality
,
visibility
,
correspondingProperty
,
annotations
,
"get-"
+
correspondingProperty
.
getName
(),
hasBody
,
isDefault
);
this
.
returnType
=
returnType
==
null
?
correspondingProperty
.
getOutType
()
:
returnType
;
}
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertySetterDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -19,8 +19,8 @@ public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
private
MutableValueParameterDescriptor
parameter
;
private
final
Set
<
PropertySetterDescriptor
>
overriddenSetters
=
Sets
.
newHashSet
();
public
PropertySetterDescriptor
(
@NotNull
Modality
modality
,
@NotNull
PropertyDescriptor
correspondingProperty
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
boolean
hasBody
,
boolean
isDefault
)
{
super
(
modality
,
correspondingProperty
,
annotations
,
"set-"
+
correspondingProperty
.
getName
(),
hasBody
,
isDefault
);
public
PropertySetterDescriptor
(
@NotNull
Modality
modality
,
@NotNull
Visibility
visibility
,
@NotNull
PropertyDescriptor
correspondingProperty
,
@NotNull
List
<
AnnotationDescriptor
>
annotations
,
boolean
hasBody
,
boolean
isDefault
)
{
super
(
modality
,
visibility
,
correspondingProperty
,
annotations
,
"set-"
+
correspondingProperty
.
getName
(),
hasBody
,
isDefault
);
}
public
void
initialize
(
@NotNull
MutableValueParameterDescriptor
parameter
)
{
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/VariableAsFunctionDescriptor.java
浏览文件 @
67fdbbd2
...
...
@@ -16,7 +16,7 @@ public class VariableAsFunctionDescriptor extends FunctionDescriptorImpl {
assert
outType
!=
null
;
assert
JetStandardClasses
.
isFunctionType
(
outType
);
VariableAsFunctionDescriptor
result
=
new
VariableAsFunctionDescriptor
(
variableDescriptor
);
result
.
initialize
(
JetStandardClasses
.
getReceiverType
(
outType
),
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
JetStandardClasses
.
getValueParameters
(
result
,
outType
),
JetStandardClasses
.
getReturnType
(
outType
),
Modality
.
FINAL
);
result
.
initialize
(
JetStandardClasses
.
getReceiverType
(
outType
),
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
JetStandardClasses
.
getValueParameters
(
result
,
outType
),
JetStandardClasses
.
getReturnType
(
outType
),
Modality
.
FINAL
,
Visibility
.
LOCAL
);
return
result
;
}
...
...
compiler/frontend/src/org/jetbrains/jet/lang/descriptors/Visibility.java
0 → 100644
浏览文件 @
67fdbbd2
package
org.jetbrains.jet.lang.descriptors
;
/**
* @author svtk
*/
public
enum
Visibility
{
PRIVATE
(
false
),
PROTECTED
(
true
),
INTERNAL
(
false
),
PUBLIC
(
true
),
INTERNAL_PROTECTED
(
false
),
LOCAL
(
false
);
private
final
boolean
isAPI
;
private
Visibility
(
boolean
visibleOutside
)
{
isAPI
=
visibleOutside
;
}
public
boolean
isAPI
()
{
return
isAPI
;
}
}
compiler/frontend/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
浏览文件 @
67fdbbd2
...
...
@@ -21,6 +21,8 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import
org.jetbrains.jet.lang.resolve.scopes.WritableScope
;
import
org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl
;
import
org.jetbrains.jet.lang.types.*
;
import
org.jetbrains.jet.lexer.JetKeywordToken
;
import
org.jetbrains.jet.lexer.JetToken
;
import
org.jetbrains.jet.lexer.JetTokens
;
import
java.util.*
;
...
...
@@ -65,7 +67,8 @@ public class ClassDescriptorResolver {
}
descriptor
.
setTypeParameterDescriptors
(
typeParameters
);
Modality
defaultModality
=
descriptor
.
getKind
()
==
ClassKind
.
TRAIT
?
Modality
.
ABSTRACT
:
Modality
.
FINAL
;
descriptor
.
setModality
(
resolveModalityFromModifiers
(
classElement
.
getModifierList
(),
defaultModality
));
descriptor
.
setModality
(
resolveModalityFromModifiers
(
trace
,
classElement
.
getModifierList
(),
defaultModality
));
descriptor
.
setVisibility
(
resolveVisibilityFromModifiers
(
trace
,
classElement
.
getModifierList
()));
trace
.
record
(
BindingContext
.
CLASS
,
classElement
,
descriptor
);
}
...
...
@@ -195,14 +198,16 @@ public class ClassDescriptorResolver {
}
else
{
defaultModality
=
Modality
.
FINAL
;
}
Modality
modality
=
resolveModalityFromModifiers
(
function
.
getModifierList
(),
defaultModality
);
Modality
modality
=
resolveModalityFromModifiers
(
trace
,
function
.
getModifierList
(),
defaultModality
);
Visibility
visibility
=
resolveVisibilityFromModifiers
(
trace
,
function
.
getModifierList
());
functionDescriptor
.
initialize
(
receiverType
,
typeParameterDescriptors
,
valueParameterDescriptors
,
returnType
,
modality
);
modality
,
visibility
);
trace
.
record
(
BindingContext
.
FUNCTION
,
function
,
functionDescriptor
);
return
functionDescriptor
;
...
...
@@ -424,7 +429,8 @@ public class ClassDescriptorResolver {
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
containingDeclaration
,
annotationResolver
.
createAnnotationStubs
(
modifierList
),
resolveModalityFromModifiers
(
modifierList
),
// TODO : default modifiers differ in different contexts
resolveModalityFromModifiers
(
trace
,
objectDeclaration
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveVisibilityFromModifiers
(
trace
,
objectDeclaration
.
getModifierList
()),
false
,
null
,
JetPsiUtil
.
safeName
(
objectDeclaration
.
getName
()),
...
...
@@ -474,7 +480,8 @@ public class ClassDescriptorResolver {
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
containingDeclaration
,
annotationResolver
.
resolveAnnotations
(
scope
,
modifierList
),
resolveModalityFromModifiers
(
modifierList
),
// TODO : default modifiers differ in different contexts
resolveModalityFromModifiers
(
trace
,
property
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveVisibilityFromModifiers
(
trace
,
property
.
getModifierList
()),
isVar
,
receiverType
,
JetPsiUtil
.
safeName
(
property
.
getName
()),
...
...
@@ -523,20 +530,31 @@ public class ClassDescriptorResolver {
}
@NotNull
private
Modality
resolveModalityFromModifiers
(
@Nullable
JetModifierList
modifierList
)
{
return
resolveModalityFromModifiers
(
modifierList
,
Modality
.
FINAL
);
/*package*/
static
Modality
resolveModalityFromModifiers
(
@NotNull
BindingTrace
trace
,
@Nullable
JetModifierList
modifierList
)
{
return
resolveModalityFromModifiers
(
trace
,
modifierList
,
Modality
.
FINAL
);
}
@NotNull
private
Modality
resolveModalityFromModifiers
(
@Nullable
JetModifierList
modifierList
,
@NotNull
Modality
defaultModality
)
{
/*package*/
static
Modality
resolveModalityFromModifiers
(
@NotNull
BindingTrace
trace
,
@Nullable
JetModifierList
modifierList
,
@NotNull
Modality
defaultModality
)
{
if
(
modifierList
==
null
)
return
defaultModality
;
if
(
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
))
{
return
Modality
.
ABSTRACT
;
}
checkCompatibility
(
trace
,
modifierList
,
Lists
.
newArrayList
(
JetTokens
.
ABSTRACT_KEYWORD
,
JetTokens
.
OPEN_KEYWORD
,
JetTokens
.
FINAL_KEYWORD
),
Lists
.<
JetToken
>
newArrayList
(
JetTokens
.
ABSTRACT_KEYWORD
,
JetTokens
.
OPEN_KEYWORD
));
boolean
hasAbstractModifier
=
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
);
boolean
hasOverrideModifier
=
modifierList
.
hasModifier
(
JetTokens
.
OVERRIDE_KEYWORD
);
if
(
modifierList
.
hasModifier
(
JetTokens
.
OPEN_KEYWORD
))
{
if
(
hasAbstractModifier
||
hasOverrideModifier
)
{
trace
.
report
(
Errors
.
REDUNDANT_MODIFIER
.
on
(
modifierList
,
JetTokens
.
OPEN_KEYWORD
,
hasAbstractModifier
?
JetTokens
.
ABSTRACT_KEYWORD
:
JetTokens
.
OVERRIDE_KEYWORD
));
}
if
(
hasAbstractModifier
)
{
return
Modality
.
ABSTRACT
;
}
return
Modality
.
OPEN
;
}
if
(
modifierList
.
hasModifier
(
JetTokens
.
OVERRIDE_KEYWORD
))
{
if
(
hasAbstractModifier
)
{
return
Modality
.
ABSTRACT
;
}
if
(
hasOverrideModifier
)
{
return
Modality
.
OPEN
;
}
if
(
modifierList
.
hasModifier
(
JetTokens
.
FINAL_KEYWORD
))
{
...
...
@@ -545,6 +563,49 @@ public class ClassDescriptorResolver {
return
defaultModality
;
}
@NotNull
/*package*/
static
Visibility
resolveVisibilityFromModifiers
(
@NotNull
BindingTrace
trace
,
@Nullable
JetModifierList
modifierList
)
{
return
resolveVisibilityFromModifiers
(
trace
,
modifierList
,
Visibility
.
INTERNAL
);
}
@NotNull
/*package*/
static
Visibility
resolveVisibilityFromModifiers
(
@NotNull
BindingTrace
trace
,
@Nullable
JetModifierList
modifierList
,
@NotNull
Visibility
defaultVisibility
)
{
if
(
modifierList
==
null
)
return
defaultVisibility
;
checkCompatibility
(
trace
,
modifierList
,
Lists
.
newArrayList
(
JetTokens
.
PRIVATE_KEYWORD
,
JetTokens
.
PROTECTED_KEYWORD
,
JetTokens
.
PUBLIC_KEYWORD
,
JetTokens
.
INTERNAL_KEYWORD
),
Lists
.<
JetToken
>
newArrayList
(
JetTokens
.
PROTECTED_KEYWORD
,
JetTokens
.
INTERNAL_KEYWORD
));
if
(
modifierList
.
hasModifier
(
JetTokens
.
PRIVATE_KEYWORD
))
return
Visibility
.
PRIVATE
;
if
(
modifierList
.
hasModifier
(
JetTokens
.
PUBLIC_KEYWORD
))
return
Visibility
.
PUBLIC
;
if
(
modifierList
.
hasModifier
(
JetTokens
.
PROTECTED_KEYWORD
))
{
if
(
modifierList
.
hasModifier
(
JetTokens
.
INTERNAL_KEYWORD
))
{
return
Visibility
.
INTERNAL_PROTECTED
;
}
return
Visibility
.
PROTECTED
;
}
return
defaultVisibility
;
}
/*package*/
static
boolean
checkCompatibility
(
@NotNull
BindingTrace
trace
,
@Nullable
JetModifierList
modifierList
,
Collection
<
JetKeywordToken
>
availableModifiers
,
Collection
<
JetToken
>...
availableCombinations
)
{
if
(
modifierList
==
null
)
return
true
;
Collection
<
JetKeywordToken
>
presentModifiers
=
Sets
.
newLinkedHashSet
();
for
(
JetKeywordToken
modifier
:
availableModifiers
)
{
if
(
modifierList
.
hasModifier
(
modifier
))
{
presentModifiers
.
add
(
modifier
);
}
}
if
(
presentModifiers
.
size
()
==
1
)
{
return
true
;
}
for
(
Collection
<
JetToken
>
combination
:
availableCombinations
)
{
if
(
presentModifiers
.
containsAll
(
combination
)
&&
combination
.
containsAll
(
presentModifiers
))
{
return
true
;
}
}
for
(
JetKeywordToken
token
:
presentModifiers
)
{
trace
.
report
(
Errors
.
INCOMPATIBLE_MODIFIERS
.
on
(
modifierList
.
getModifierNode
(
token
),
presentModifiers
));
}
return
false
;
}
@Nullable
private
PropertySetterDescriptor
resolvePropertySetterDescriptor
(
@NotNull
JetScope
scope
,
@NotNull
JetProperty
property
,
@NotNull
PropertyDescriptor
propertyDescriptor
)
{
JetPropertyAccessor
setter
=
property
.
getSetter
();
...
...
@@ -554,7 +615,8 @@ public class ClassDescriptorResolver {
JetParameter
parameter
=
setter
.
getParameter
();
setterDescriptor
=
new
PropertySetterDescriptor
(
resolveModalityFromModifiers
(
setter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveModalityFromModifiers
(
trace
,
setter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveVisibilityFromModifiers
(
trace
,
setter
.
getModifierList
(),
propertyDescriptor
.
getVisibility
()),
propertyDescriptor
,
annotations
,
setter
.
getBodyExpression
()
!=
null
,
false
);
if
(
parameter
!=
null
)
{
if
(
parameter
.
isRef
())
{
...
...
@@ -596,6 +658,7 @@ public class ClassDescriptorResolver {
else
if
(
property
.
isVar
())
{
setterDescriptor
=
new
PropertySetterDescriptor
(
propertyDescriptor
.
getModality
(),
propertyDescriptor
.
getVisibility
(),
propertyDescriptor
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
false
,
true
);
}
...
...
@@ -627,13 +690,15 @@ public class ClassDescriptorResolver {
}
getterDescriptor
=
new
PropertyGetterDescriptor
(
resolveModalityFromModifiers
(
getter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveModalityFromModifiers
(
trace
,
getter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveVisibilityFromModifiers
(
trace
,
getter
.
getModifierList
(),
propertyDescriptor
.
getVisibility
()),
propertyDescriptor
,
annotations
,
returnType
,
getter
.
getBodyExpression
()
!=
null
,
false
);
trace
.
record
(
BindingContext
.
PROPERTY_ACCESSOR
,
getter
,
getterDescriptor
);
}
else
{
getterDescriptor
=
new
PropertyGetterDescriptor
(
propertyDescriptor
.
getModality
(),
propertyDescriptor
.
getVisibility
(),
propertyDescriptor
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
propertyDescriptor
.
getOutType
(),
false
,
true
);
}
return
getterDescriptor
;
...
...
@@ -664,7 +729,8 @@ public class ClassDescriptorResolver {
constructorDescriptor
,
new
WritableScopeImpl
(
scope
,
classDescriptor
,
new
TraceBasedRedeclarationHandler
(
trace
)).
setDebugName
(
"Scope with value parameters of a constructor"
),
valueParameters
),
Modality
.
FINAL
);
Modality
.
FINAL
,
resolveVisibilityFromModifiers
(
trace
,
modifierList
));
}
@Nullable
...
...
@@ -700,7 +766,8 @@ public class ClassDescriptorResolver {
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
classDescriptor
,
annotationResolver
.
resolveAnnotations
(
scope
,
modifierList
),
resolveModalityFromModifiers
(
modifierList
),
resolveModalityFromModifiers
(
trace
,
parameter
.
getModifierList
()),
resolveVisibilityFromModifiers
(
trace
,
parameter
.
getModifierList
()),
isMutable
,
null
,
name
==
null
?
"<no name>"
:
name
,
...
...
compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java
浏览文件 @
67fdbbd2
...
...
@@ -96,6 +96,7 @@ public class TypeHierarchyResolver {
MutableClassDescriptor
classObjectDescriptor
=
new
MutableClassDescriptor
(
context
.
getTrace
(),
mutableClassDescriptor
,
outerScope
,
ClassKind
.
OBJECT
);
classObjectDescriptor
.
setName
(
"class-object-for-"
+
klass
.
getName
());
classObjectDescriptor
.
setModality
(
Modality
.
FINAL
);
classObjectDescriptor
.
setVisibility
(
ClassDescriptorResolver
.
resolveVisibilityFromModifiers
(
context
.
getTrace
(),
klass
.
getModifierList
()));
classObjectDescriptor
.
createTypeConstructor
();
createPrimaryConstructor
(
classObjectDescriptor
);
mutableClassDescriptor
.
setClassObjectDescriptor
(
classObjectDescriptor
);
...
...
@@ -151,7 +152,7 @@ public class TypeHierarchyResolver {
private
void
createPrimaryConstructor
(
MutableClassDescriptor
mutableClassDescriptor
)
{
ConstructorDescriptorImpl
constructorDescriptor
=
new
ConstructorDescriptorImpl
(
mutableClassDescriptor
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
true
);
constructorDescriptor
.
initialize
(
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
Collections
.<
ValueParameterDescriptor
>
emptyList
(),
Modality
.
FINAL
);
Modality
.
FINAL
,
Visibility
.
INTERNAL
);
//TODO check set mutableClassDescriptor.getVisibility()
// TODO : make the constructor private?
mutableClassDescriptor
.
setPrimaryConstructor
(
constructorDescriptor
);
}
...
...
@@ -265,8 +266,10 @@ public class TypeHierarchyResolver {
descriptor
.
createTypeConstructor
();
}
for
(
Map
.
Entry
<
JetObjectDeclaration
,
MutableClassDescriptor
>
entry
:
context
.
getObjects
().
entrySet
())
{
JetObjectDeclaration
objectDeclaration
=
entry
.
getKey
();
MutableClassDescriptor
descriptor
=
entry
.
getValue
();
descriptor
.
setModality
(
Modality
.
FINAL
);
descriptor
.
setVisibility
(
ClassDescriptorResolver
.
resolveVisibilityFromModifiers
(
context
.
getTrace
(),
objectDeclaration
.
getModifierList
()));
descriptor
.
createTypeConstructor
();
}
}
...
...
compiler/frontend/src/org/jetbrains/jet/lang/types/ErrorUtils.java
浏览文件 @
67fdbbd2
...
...
@@ -118,6 +118,7 @@ public class ErrorUtils {
ERROR_CLASS
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
Modality
.
OPEN
,
Visibility
.
INTERNAL
,
true
,
null
,
"<ERROR PROPERTY>"
,
...
...
@@ -130,7 +131,8 @@ public class ErrorUtils {
typeParameters
,
getValueParameters
(
functionDescriptor
,
positionedValueArgumentTypes
),
createErrorType
(
"<ERROR FUNCTION RETURN>"
),
Modality
.
OPEN
Modality
.
OPEN
,
Visibility
.
INTERNAL
);
}
...
...
@@ -140,7 +142,8 @@ public class ErrorUtils {
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
// TODO
Collections
.<
ValueParameterDescriptor
>
emptyList
(),
// TODO
createErrorType
(
"<ERROR FUNCTION RETURN TYPE>"
),
Modality
.
OPEN
Modality
.
OPEN
,
Visibility
.
INTERNAL
);
}
...
...
compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
浏览文件 @
67fdbbd2
...
...
@@ -975,7 +975,7 @@ public class JetTypeInferrer {
else
{
effectiveReceiverType
=
receiverType
;
}
functionDescriptor
.
initialize
(
effectiveReceiverType
,
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
valueParameterDescriptors
,
null
,
Modality
.
FINAL
);
functionDescriptor
.
initialize
(
effectiveReceiverType
,
Collections
.<
TypeParameterDescriptor
>
emptyList
(),
valueParameterDescriptors
,
null
,
Modality
.
FINAL
,
Visibility
.
LOCAL
);
context
.
trace
.
record
(
BindingContext
.
FUNCTION
,
expression
,
functionDescriptor
);
JetType
returnType
=
NO_EXPECTED_TYPE
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录