Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
f89a29ff
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,发现更多精彩内容 >>
提交
f89a29ff
编写于
9月 08, 2011
作者:
S
svtk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rollback -resolveModifiers() method location
上级
5cb298c0
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
53 addition
and
53 deletion
+53
-53
idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java
...rc/org/jetbrains/jet/lang/descriptors/ClassModifiers.java
+0
-13
idea/src/org/jetbrains/jet/lang/descriptors/MemberModifiers.java
...c/org/jetbrains/jet/lang/descriptors/MemberModifiers.java
+0
-20
idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
...g/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
+31
-10
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java
+21
-9
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzerForStandardLibrary.java
...s/jet/lang/resolve/TopDownAnalyzerForStandardLibrary.java
+1
-1
未找到文件。
idea/src/org/jetbrains/jet/lang/descriptors/ClassModifiers.java
浏览文件 @
f89a29ff
package
org.jetbrains.jet.lang.descriptors
;
package
org.jetbrains.jet.lang.descriptors
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
org.jetbrains.jet.lang.psi.JetModifierList
;
import
org.jetbrains.jet.lexer.JetTokens
;
/**
/**
* @author svtk
* @author svtk
*/
*/
...
@@ -28,13 +23,5 @@ public class ClassModifiers extends Modifiers {
...
@@ -28,13 +23,5 @@ public class ClassModifiers extends Modifiers {
return
trait
;
return
trait
;
}
}
public
static
ClassModifiers
resolveModifiers
(
@Nullable
JetModifierList
modifierList
)
{
if
(
modifierList
==
null
)
return
DEFAULT_MODIFIERS
;
return
new
ClassModifiers
(
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
OPEN_KEYWORD
)
||
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
TRAIT_KEYWORD
)
);
}
}
}
idea/src/org/jetbrains/jet/lang/descriptors/MemberModifiers.java
浏览文件 @
f89a29ff
package
org.jetbrains.jet.lang.descriptors
;
package
org.jetbrains.jet.lang.descriptors
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
org.jetbrains.jet.lang.psi.JetModifierList
;
import
org.jetbrains.jet.lexer.JetTokens
;
/**
/**
* @author abreslav
* @author abreslav
*/
*/
...
@@ -32,19 +27,4 @@ public class MemberModifiers extends Modifiers {
...
@@ -32,19 +27,4 @@ public class MemberModifiers extends Modifiers {
public
boolean
isOverridable
()
{
public
boolean
isOverridable
()
{
return
isAbstract
()
||
isVirtual
()
||
isOverride
();
return
isAbstract
()
||
isVirtual
()
||
isOverride
();
}
}
@NotNull
public
static
MemberModifiers
resolveModifiers
(
@Nullable
JetModifierList
modifierList
)
{
return
resolveModifiers
(
modifierList
,
DEFAULT_MODIFIERS
);
}
@NotNull
public
static
MemberModifiers
resolveModifiers
(
@Nullable
JetModifierList
modifierList
,
@NotNull
MemberModifiers
defaultModifiers
)
{
if
(
modifierList
==
null
)
return
defaultModifiers
;
return
new
MemberModifiers
(
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
VIRTUAL_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
OVERRIDE_KEYWORD
)
);
}
}
}
idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
浏览文件 @
f89a29ff
...
@@ -25,9 +25,6 @@ import java.util.*;
...
@@ -25,9 +25,6 @@ import java.util.*;
* @author abreslav
* @author abreslav
*/
*/
public
class
ClassDescriptorResolver
{
public
class
ClassDescriptorResolver
{
// private static final MemberModifiers DEFAULT_MODIFIERS = new MemberModifiers(false, false, false);
private
final
JetSemanticServices
semanticServices
;
private
final
JetSemanticServices
semanticServices
;
private
final
TypeResolver
typeResolver
;
private
final
TypeResolver
typeResolver
;
private
final
TypeResolver
typeResolverNotCheckingBounds
;
private
final
TypeResolver
typeResolverNotCheckingBounds
;
...
@@ -144,7 +141,7 @@ public class ClassDescriptorResolver {
...
@@ -144,7 +141,7 @@ public class ClassDescriptorResolver {
index
++;
index
++;
}
}
descriptor
.
setTypeParameterDescriptors
(
typeParameters
);
descriptor
.
setTypeParameterDescriptors
(
typeParameters
);
descriptor
.
setClassModifiers
(
ClassModifiers
.
resolve
Modifiers
(
classElement
.
getModifierList
()));
descriptor
.
setClassModifiers
(
resolveClass
Modifiers
(
classElement
.
getModifierList
()));
trace
.
record
(
BindingContext
.
CLASS
,
classElement
,
descriptor
);
trace
.
record
(
BindingContext
.
CLASS
,
classElement
,
descriptor
);
}
}
...
@@ -230,7 +227,7 @@ public class ClassDescriptorResolver {
...
@@ -230,7 +227,7 @@ public class ClassDescriptorResolver {
typeParameterDescriptors
,
typeParameterDescriptors
,
valueParameterDescriptors
,
valueParameterDescriptors
,
returnType
,
returnType
,
MemberModifiers
.
resolve
Modifiers
(
function
.
getModifierList
()));
resolveMember
Modifiers
(
function
.
getModifierList
()));
trace
.
record
(
BindingContext
.
FUNCTION
,
function
,
functionDescriptor
);
trace
.
record
(
BindingContext
.
FUNCTION
,
function
,
functionDescriptor
);
return
functionDescriptor
;
return
functionDescriptor
;
...
@@ -463,7 +460,7 @@ public class ClassDescriptorResolver {
...
@@ -463,7 +460,7 @@ public class ClassDescriptorResolver {
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
containingDeclaration
,
containingDeclaration
,
annotationResolver
.
createAnnotationStubs
(
modifierList
),
annotationResolver
.
createAnnotationStubs
(
modifierList
),
MemberModifiers
.
resolve
Modifiers
(
modifierList
),
// TODO : default modifiers differ in different contexts
resolveMember
Modifiers
(
modifierList
),
// TODO : default modifiers differ in different contexts
false
,
false
,
null
,
null
,
JetPsiUtil
.
safeName
(
objectDeclaration
.
getName
()),
JetPsiUtil
.
safeName
(
objectDeclaration
.
getName
()),
...
@@ -513,7 +510,7 @@ public class ClassDescriptorResolver {
...
@@ -513,7 +510,7 @@ public class ClassDescriptorResolver {
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
containingDeclaration
,
containingDeclaration
,
annotationResolver
.
resolveAnnotations
(
scope
,
modifierList
),
annotationResolver
.
resolveAnnotations
(
scope
,
modifierList
),
MemberModifiers
.
resolve
Modifiers
(
modifierList
),
// TODO : default modifiers differ in different contexts
resolveMember
Modifiers
(
modifierList
),
// TODO : default modifiers differ in different contexts
isVar
,
isVar
,
receiverType
,
receiverType
,
JetPsiUtil
.
safeName
(
property
.
getName
()),
JetPsiUtil
.
safeName
(
property
.
getName
()),
...
@@ -560,6 +557,30 @@ public class ClassDescriptorResolver {
...
@@ -560,6 +557,30 @@ public class ClassDescriptorResolver {
}
}
}
}
private
static
ClassModifiers
resolveClassModifiers
(
@Nullable
JetModifierList
modifierList
)
{
if
(
modifierList
==
null
)
return
ClassModifiers
.
DEFAULT_MODIFIERS
;
return
new
ClassModifiers
(
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
OPEN_KEYWORD
)
||
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
TRAIT_KEYWORD
)
);
}
@NotNull
private
MemberModifiers
resolveMemberModifiers
(
@Nullable
JetModifierList
modifierList
,
@NotNull
MemberModifiers
defaultModifiers
)
{
if
(
modifierList
==
null
)
return
defaultModifiers
;
return
new
MemberModifiers
(
modifierList
.
hasModifier
(
JetTokens
.
ABSTRACT_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
VIRTUAL_KEYWORD
),
modifierList
.
hasModifier
(
JetTokens
.
OVERRIDE_KEYWORD
)
);
}
@NotNull
private
MemberModifiers
resolveMemberModifiers
(
@Nullable
JetModifierList
modifierList
)
{
return
resolveMemberModifiers
(
modifierList
,
MemberModifiers
.
DEFAULT_MODIFIERS
);
}
@Nullable
@Nullable
private
PropertySetterDescriptor
resolvePropertySetterDescriptor
(
@NotNull
JetScope
scope
,
@NotNull
JetProperty
property
,
@NotNull
PropertyDescriptor
propertyDescriptor
)
{
private
PropertySetterDescriptor
resolvePropertySetterDescriptor
(
@NotNull
JetScope
scope
,
@NotNull
JetProperty
property
,
@NotNull
PropertyDescriptor
propertyDescriptor
)
{
JetPropertyAccessor
setter
=
property
.
getSetter
();
JetPropertyAccessor
setter
=
property
.
getSetter
();
...
@@ -569,7 +590,7 @@ public class ClassDescriptorResolver {
...
@@ -569,7 +590,7 @@ public class ClassDescriptorResolver {
JetParameter
parameter
=
setter
.
getParameter
();
JetParameter
parameter
=
setter
.
getParameter
();
setterDescriptor
=
new
PropertySetterDescriptor
(
setterDescriptor
=
new
PropertySetterDescriptor
(
MemberModifiers
.
resolve
Modifiers
(
setter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveMember
Modifiers
(
setter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
propertyDescriptor
,
annotations
,
setter
.
getBodyExpression
()
!=
null
,
false
);
propertyDescriptor
,
annotations
,
setter
.
getBodyExpression
()
!=
null
,
false
);
if
(
parameter
!=
null
)
{
if
(
parameter
!=
null
)
{
if
(
parameter
.
isRef
())
{
if
(
parameter
.
isRef
())
{
...
@@ -633,7 +654,7 @@ public class ClassDescriptorResolver {
...
@@ -633,7 +654,7 @@ public class ClassDescriptorResolver {
}
}
getterDescriptor
=
new
PropertyGetterDescriptor
(
getterDescriptor
=
new
PropertyGetterDescriptor
(
MemberModifiers
.
resolve
Modifiers
(
getter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
resolveMember
Modifiers
(
getter
.
getModifierList
()),
// TODO : default modifiers differ in different contexts
propertyDescriptor
,
annotations
,
returnType
,
getter
.
getBodyExpression
()
!=
null
,
false
);
propertyDescriptor
,
annotations
,
returnType
,
getter
.
getBodyExpression
()
!=
null
,
false
);
trace
.
record
(
BindingContext
.
PROPERTY_ACCESSOR
,
getter
,
getterDescriptor
);
trace
.
record
(
BindingContext
.
PROPERTY_ACCESSOR
,
getter
,
getterDescriptor
);
}
}
...
@@ -708,7 +729,7 @@ public class ClassDescriptorResolver {
...
@@ -708,7 +729,7 @@ public class ClassDescriptorResolver {
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
PropertyDescriptor
propertyDescriptor
=
new
PropertyDescriptor
(
classDescriptor
,
classDescriptor
,
annotationResolver
.
resolveAnnotations
(
scope
,
modifierList
),
annotationResolver
.
resolveAnnotations
(
scope
,
modifierList
),
MemberModifiers
.
resolve
Modifiers
(
modifierList
),
resolveMember
Modifiers
(
modifierList
),
isMutable
,
isMutable
,
null
,
null
,
name
==
null
?
"<no name>"
:
name
,
name
==
null
?
"<no name>"
:
name
,
...
...
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java
浏览文件 @
f89a29ff
...
@@ -451,7 +451,7 @@ public class TopDownAnalyzer {
...
@@ -451,7 +451,7 @@ public class TopDownAnalyzer {
@Override
@Override
public
void
visitNamedFunction
(
JetNamedFunction
function
)
{
public
void
visitNamedFunction
(
JetNamedFunction
function
)
{
FunctionDescriptorImpl
functionDescriptor
=
classDescriptorResolver
.
resolveFunctionDescriptor
(
namespaceLike
,
scope
,
function
);
FunctionDescriptorImpl
functionDescriptor
=
classDescriptorResolver
.
resolveFunctionDescriptor
(
namespaceLike
,
scope
,
function
);
checkFunction
Correctness
(
function
,
functionDescriptor
,
namespaceLike
);
checkFunction
(
function
,
functionDescriptor
,
namespaceLike
);
namespaceLike
.
addFunctionDescriptor
(
functionDescriptor
);
namespaceLike
.
addFunctionDescriptor
(
functionDescriptor
);
functions
.
put
(
function
,
functionDescriptor
);
functions
.
put
(
function
,
functionDescriptor
);
declaringScopes
.
put
(
function
,
scope
);
declaringScopes
.
put
(
function
,
scope
);
...
@@ -550,14 +550,31 @@ public class TopDownAnalyzer {
...
@@ -550,14 +550,31 @@ public class TopDownAnalyzer {
private
void
bindOverridesInAClass
(
MutableClassDescriptor
classDescriptor
)
{
private
void
bindOverridesInAClass
(
MutableClassDescriptor
classDescriptor
)
{
for
(
FunctionDescriptor
declaredFunction
:
classDescriptor
.
getFunctions
())
{
for
(
FunctionDescriptor
declaredFunction
:
classDescriptor
.
getFunctions
())
{
// JetFunction function = (JetFunction) trace.get(BindingContext.DESCRIPTOR_TO_DECLARATION, declaredFunction);
// boolean isOverride = declaredFunction.getModifiers().isOverride();
for
(
JetType
supertype
:
classDescriptor
.
getTypeConstructor
().
getSupertypes
())
{
for
(
JetType
supertype
:
classDescriptor
.
getTypeConstructor
().
getSupertypes
())
{
FunctionDescriptor
overridden
=
findFunctionOverridableBy
(
declaredFunction
,
supertype
);
FunctionDescriptor
overridden
=
findFunctionOverridableBy
(
declaredFunction
,
supertype
);
if
(
overridden
!=
null
)
{
if
(
overridden
!=
null
)
{
// if (isOverride && !overridden.getModifiers().isOverridable()) {
// trace.getErrorHandler().genericError(function.getModifierList().getModifierNode(JetTokens.OVERRIDE_KEYWORD),
// "Method " + overridden.getName() + " in " + overridden.getContainingDeclaration().getName() + " is final and can not be overridden");
// isOverride = false;
// }
((
FunctionDescriptorImpl
)
declaredFunction
).
addOverriddenFunction
(
overridden
);
((
FunctionDescriptorImpl
)
declaredFunction
).
addOverriddenFunction
(
overridden
);
}
}
}
}
// if (declaredFunction.getModifiers().isOverride() && declaredFunction.getOverriddenDescriptors().size() == 0) {
// trace.getErrorHandler().genericError(function.getModifierList().getModifierNode(JetTokens.OVERRIDE_KEYWORD),
// "Method " + declaredFunction.getName() + " overrides nothing");
}
}
// if (!declaredFunction.getModifiers().isOverride() && declaredFunction.getOverriddenDescriptors().size() > 0) {
// FunctionDescriptor overriddenMethod = declaredFunction.getOverriddenDescriptors().iterator().next();
// trace.getErrorHandler().genericError(function.getNameIdentifier().getNode(),
// "Method " + declaredFunction.getName() + " overrides method " + overriddenMethod.getName() + " in class " +
// overriddenMethod.getContainingDeclaration().getName() + " and needs 'override' modifier");
}
}
// }
// }
@Nullable
@Nullable
private
FunctionDescriptor
findFunctionOverridableBy
(
@NotNull
FunctionDescriptor
declaredFunction
,
@NotNull
JetType
supertype
)
{
private
FunctionDescriptor
findFunctionOverridableBy
(
@NotNull
FunctionDescriptor
declaredFunction
,
@NotNull
JetType
supertype
)
{
...
@@ -916,11 +933,6 @@ public class TopDownAnalyzer {
...
@@ -916,11 +933,6 @@ public class TopDownAnalyzer {
if
(
setter
!=
null
&&
setterDescriptor
!=
null
)
{
if
(
setter
!=
null
&&
setterDescriptor
!=
null
)
{
resolveFunctionBody
(
fieldAccessTrackingTrace
,
setter
,
setterDescriptor
,
accessorScope
);
resolveFunctionBody
(
fieldAccessTrackingTrace
,
setter
,
setterDescriptor
,
accessorScope
);
}
}
// JetExpression initializer = property.getInitializer();
// if (!property.isVar() && initializer != null && !trace.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) {
// trace.getErrorHandler().genericError(initializer.getNode(), "Initializer is not allowed here because this property has no setter and no backing field either");
// }
}
}
protected
void
checkProperty
(
JetProperty
property
,
PropertyDescriptor
propertyDescriptor
,
@Nullable
ClassDescriptor
classDescriptor
)
{
protected
void
checkProperty
(
JetProperty
property
,
PropertyDescriptor
propertyDescriptor
,
@Nullable
ClassDescriptor
classDescriptor
)
{
...
@@ -968,7 +980,7 @@ public class TopDownAnalyzer {
...
@@ -968,7 +980,7 @@ public class TopDownAnalyzer {
}
}
}
}
protected
void
checkFunction
Correctness
(
JetNamedFunction
function
,
FunctionDescriptor
functionDescriptor
,
DeclarationDescriptor
containingDescriptor
)
{
protected
void
checkFunction
(
JetNamedFunction
function
,
FunctionDescriptor
functionDescriptor
,
DeclarationDescriptor
containingDescriptor
)
{
PsiElement
nameIdentifier
=
function
.
getNameIdentifier
();
PsiElement
nameIdentifier
=
function
.
getNameIdentifier
();
if
(
containingDescriptor
instanceof
ClassDescriptor
)
{
if
(
containingDescriptor
instanceof
ClassDescriptor
)
{
ClassDescriptor
classDescriptor
=
(
ClassDescriptor
)
containingDescriptor
;
ClassDescriptor
classDescriptor
=
(
ClassDescriptor
)
containingDescriptor
;
...
...
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzerForStandardLibrary.java
浏览文件 @
f89a29ff
...
@@ -27,5 +27,5 @@ public class TopDownAnalyzerForStandardLibrary extends TopDownAnalyzer {
...
@@ -27,5 +27,5 @@ public class TopDownAnalyzerForStandardLibrary extends TopDownAnalyzer {
@Override
@Override
protected
void
checkFunction
Correctness
(
JetNamedFunction
function
,
FunctionDescriptor
functionDescriptor
,
DeclarationDescriptor
containingDescriptor
)
{}
protected
void
checkFunction
(
JetNamedFunction
function
,
FunctionDescriptor
functionDescriptor
,
DeclarationDescriptor
containingDescriptor
)
{}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录