Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
3e2b41a2
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,发现更多精彩内容 >>
提交
3e2b41a2
编写于
3月 25, 2011
作者:
A
Andrey Breslav
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Classifier lookup fixed
上级
065e0f3b
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
144 addition
and
197 deletion
+144
-197
idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
...g/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
+1
-1
idea/src/org/jetbrains/jet/lang/resolve/JetScope.java
idea/src/org/jetbrains/jet/lang/resolve/JetScope.java
+5
-11
idea/src/org/jetbrains/jet/lang/resolve/JetScopeAdapter.java
idea/src/org/jetbrains/jet/lang/resolve/JetScopeAdapter.java
+2
-12
idea/src/org/jetbrains/jet/lang/resolve/JetScopeImpl.java
idea/src/org/jetbrains/jet/lang/resolve/JetScopeImpl.java
+1
-11
idea/src/org/jetbrains/jet/lang/resolve/MutableClassDescriptor.java
...rg/jetbrains/jet/lang/resolve/MutableClassDescriptor.java
+8
-1
idea/src/org/jetbrains/jet/lang/resolve/ScopeWithReceiver.java
...src/org/jetbrains/jet/lang/resolve/ScopeWithReceiver.java
+2
-12
idea/src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java
...src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java
+6
-13
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java
+1
-1
idea/src/org/jetbrains/jet/lang/resolve/TypeResolver.java
idea/src/org/jetbrains/jet/lang/resolve/TypeResolver.java
+33
-35
idea/src/org/jetbrains/jet/lang/resolve/WritableScope.java
idea/src/org/jetbrains/jet/lang/resolve/WritableScope.java
+23
-47
idea/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
...etbrains/jet/lang/resolve/java/JavaClassMembersScope.java
+1
-11
idea/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java
...org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java
+2
-2
idea/src/org/jetbrains/jet/lang/types/ClassDescriptor.java
idea/src/org/jetbrains/jet/lang/types/ClassDescriptor.java
+1
-3
idea/src/org/jetbrains/jet/lang/types/ClassifierDescriptor.java
...rc/org/jetbrains/jet/lang/types/ClassifierDescriptor.java
+11
-0
idea/src/org/jetbrains/jet/lang/types/ErrorUtils.java
idea/src/org/jetbrains/jet/lang/types/ErrorUtils.java
+1
-11
idea/src/org/jetbrains/jet/lang/types/JetStandardClasses.java
.../src/org/jetbrains/jet/lang/types/JetStandardClasses.java
+3
-3
idea/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java
.../src/org/jetbrains/jet/lang/types/JetStandardLibrary.java
+14
-16
idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
+5
-2
idea/src/org/jetbrains/jet/lang/types/TypeParameterDescriptor.java
...org/jetbrains/jet/lang/types/TypeParameterDescriptor.java
+3
-1
idea/testData/resolve/Classifiers.jet
idea/testData/resolve/Classifiers.jet
+11
-0
idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java
.../tests/org/jetbrains/jet/resolve/ExpectedResolveData.java
+4
-2
idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java
idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java
+4
-0
idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java
idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java
+2
-2
未找到文件。
idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java
浏览文件 @
3e2b41a2
...
...
@@ -68,7 +68,7 @@ public class ClassDescriptorResolver {
public
void
resolveMutableClassDescriptor
(
@NotNull
JetScope
scope
,
@NotNull
JetClass
classElement
,
@NotNull
MutableClassDescriptor
descriptor
)
{
descriptor
.
setName
(
classElement
.
getName
());
WritableScope
parameterScope
=
descriptor
.
get
UnsubstitutedMemb
erScope
();
WritableScope
parameterScope
=
descriptor
.
get
ClassHead
erScope
();
// This call has side-effects on the parameterScope (fills it in)
List
<
TypeParameterDescriptor
>
typeParameters
...
...
idea/src/org/jetbrains/jet/lang/resolve/JetScope.java
浏览文件 @
3e2b41a2
...
...
@@ -17,26 +17,20 @@ public interface JetScope {
};
@Nullable
ClassDescriptor
getClass
(
@NotNull
String
name
);
@Nullable
PropertyDescriptor
getProperty
(
@NotNull
String
name
);
@Nullable
ExtensionDescriptor
getExtension
(
@NotNull
String
name
);
ClassifierDescriptor
getClassifier
(
@NotNull
String
name
);
@Nullable
NamespaceDescriptor
getNamespace
(
@NotNull
String
name
);
@Nullable
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
);
PropertyDescriptor
getProperty
(
@NotNull
String
name
);
@NotNull
JetType
getThisType
(
);
FunctionGroup
getFunctionGroup
(
@NotNull
String
name
);
@NotNull
FunctionGroup
getFunctionGroup
(
@NotNull
String
name
);
JetType
getThisType
(
);
@NotNull
DeclarationDescriptor
getContainingDeclaration
();
}
}
\ No newline at end of file
idea/src/org/jetbrains/jet/lang/resolve/JetScopeAdapter.java
浏览文件 @
3e2b41a2
...
...
@@ -26,19 +26,14 @@ public class JetScopeAdapter implements JetScope {
return
scope
.
getFunctionGroup
(
name
);
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
return
scope
.
getTypeParameter
(
name
);
}
@Override
public
NamespaceDescriptor
getNamespace
(
@NotNull
String
name
)
{
return
scope
.
getNamespace
(
name
);
}
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
return
scope
.
getClass
(
name
);
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
return
scope
.
getClass
ifier
(
name
);
}
@Override
...
...
@@ -46,11 +41,6 @@ public class JetScopeAdapter implements JetScope {
return
scope
.
getProperty
(
name
);
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
return
scope
.
getExtension
(
name
);
}
@NotNull
@Override
public
DeclarationDescriptor
getContainingDeclaration
()
{
...
...
idea/src/org/jetbrains/jet/lang/resolve/JetScopeImpl.java
浏览文件 @
3e2b41a2
...
...
@@ -8,7 +8,7 @@ import org.jetbrains.jet.lang.types.*;
*/
public
abstract
class
JetScopeImpl
implements
JetScope
{
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
return
null
;
}
...
...
@@ -17,21 +17,11 @@ public abstract class JetScopeImpl implements JetScope {
return
null
;
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
return
null
;
}
@Override
public
NamespaceDescriptor
getNamespace
(
@NotNull
String
name
)
{
return
null
;
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
return
null
;
}
@NotNull
@Override
public
JetType
getThisType
()
{
...
...
idea/src/org/jetbrains/jet/lang/resolve/MutableClassDescriptor.java
浏览文件 @
3e2b41a2
...
...
@@ -11,6 +11,7 @@ import java.util.Map;
* @author abreslav
*/
public
class
MutableClassDescriptor
extends
MutableDeclarationDescriptor
implements
ClassDescriptor
{
private
final
WritableScope
classHeaderScope
;
private
final
WritableScope
unsubstitutedMemberScope
;
private
final
WritableFunctionGroup
constructors
=
new
WritableFunctionGroup
(
"<init>"
);
...
...
@@ -18,7 +19,8 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme
public
MutableClassDescriptor
(
@NotNull
JetSemanticServices
semanticServices
,
@NotNull
DeclarationDescriptor
containingDeclaration
,
@NotNull
JetScope
outerScope
)
{
super
(
containingDeclaration
);
this
.
unsubstitutedMemberScope
=
semanticServices
.
createWritableScope
(
outerScope
,
this
);
this
.
classHeaderScope
=
semanticServices
.
createWritableScope
(
outerScope
,
this
);
this
.
unsubstitutedMemberScope
=
semanticServices
.
createWritableScope
(
classHeaderScope
,
this
);
}
@NotNull
...
...
@@ -68,6 +70,11 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme
return
unsubstitutedMemberScope
;
}
@NotNull
public
WritableScope
getClassHeaderScope
()
{
return
classHeaderScope
;
}
@Override
public
<
R
,
D
>
R
accept
(
DeclarationDescriptorVisitor
<
R
,
D
>
visitor
,
D
data
)
{
return
visitor
.
visitClassDescriptor
(
this
,
data
);
...
...
idea/src/org/jetbrains/jet/lang/resolve/ScopeWithReceiver.java
浏览文件 @
3e2b41a2
...
...
@@ -23,8 +23,8 @@ public class ScopeWithReceiver extends JetScopeImpl {
}
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
return
super
.
getClass
(
name
);
// TODO
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
return
super
.
getClass
ifier
(
name
);
// TODO
}
@Override
...
...
@@ -33,21 +33,11 @@ public class ScopeWithReceiver extends JetScopeImpl {
// TODO : extension properties
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
return
super
.
getExtension
(
name
);
// TODO
}
@Override
public
NamespaceDescriptor
getNamespace
(
@NotNull
String
name
)
{
return
receiverTypeScope
.
getNamespace
(
name
);
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
return
outerScope
.
getTypeParameter
(
name
);
}
@NotNull
@Override
public
JetType
getThisType
()
{
...
...
idea/src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java
浏览文件 @
3e2b41a2
...
...
@@ -48,17 +48,15 @@ public class SubstitutingScope implements JetScope {
}
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
Class
Descriptor
descriptor
=
workerScope
.
getClass
(
name
);
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
Class
ifierDescriptor
descriptor
=
workerScope
.
getClassifier
(
name
);
if
(
descriptor
==
null
)
{
return
null
;
}
return
new
LazySubstitutingClassDescriptor
(
descriptor
,
substitutionContext
);
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
throw
new
UnsupportedOperationException
();
// TODO
if
(
descriptor
instanceof
ClassDescriptor
)
{
return
new
LazySubstitutingClassDescriptor
((
ClassDescriptor
)
descriptor
,
substitutionContext
);
}
throw
new
UnsupportedOperationException
();
}
@Override
...
...
@@ -66,11 +64,6 @@ public class SubstitutingScope implements JetScope {
return
workerScope
.
getNamespace
(
name
);
// TODO
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
throw
new
UnsupportedOperationException
();
// TODO
}
@NotNull
@Override
public
JetType
getThisType
()
{
...
...
idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java
浏览文件 @
3e2b41a2
...
...
@@ -114,7 +114,7 @@ public class TopDownAnalyzer {
MutableClassDescriptor
mutableClassDescriptor
=
new
MutableClassDescriptor
(
semanticServices
,
declaringScope
.
getContainingDeclaration
(),
declaringScope
);
mutableClassDescriptor
.
setName
(
klass
.
getName
());
declaringScope
.
addClassDescriptor
(
mutableClassDescriptor
);
declaringScope
.
addClass
ifier
Descriptor
(
mutableClassDescriptor
);
classes
.
put
(
klass
,
mutableClassDescriptor
);
declaringScopes
.
put
(
klass
,
declaringScope
);
...
...
idea/src/org/jetbrains/jet/lang/resolve/TypeResolver.java
浏览文件 @
3e2b41a2
...
...
@@ -46,10 +46,13 @@ public class TypeResolver {
return
;
}
if
(
type
.
getTypeArguments
().
isEmpty
()
&&
type
.
getQualifier
()
==
null
)
{
TypeParameterDescriptor
typeParameterDescriptor
=
scope
.
getTypeParameter
(
referencedName
);
if
(
typeParameterDescriptor
!=
null
)
{
ClassifierDescriptor
classifierDescriptor
=
resolveClass
(
scope
,
type
);
if
(
classifierDescriptor
!=
null
)
{
if
(
classifierDescriptor
instanceof
TypeParameterDescriptor
)
{
TypeParameterDescriptor
typeParameterDescriptor
=
(
TypeParameterDescriptor
)
classifierDescriptor
;
trace
.
recordReferenceResolution
(
referenceExpression
,
typeParameterDescriptor
);
result
[
0
]
=
new
JetTypeImpl
(
attributes
,
typeParameterDescriptor
.
getTypeConstructor
(),
...
...
@@ -58,25 +61,24 @@ public class TypeResolver {
// TODO : joint domain
JetStandardClasses
.
STUB
);
return
;
}
}
ClassDescriptor
classDescriptor
=
resolveClass
(
scope
,
type
);
if
(
classDescriptor
!=
null
)
{
trace
.
recordReferenceResolution
(
referenceExpression
,
classDescriptor
);
TypeConstructor
typeConstructor
=
classDescriptor
.
getTypeConstructor
(
);
List
<
TypeProjection
>
arguments
=
resolveTypeProjections
(
scope
,
typeConstructor
,
type
.
getTypeArguments
());
if
(
arguments
.
size
()
!=
typeConstructor
.
getParameters
().
size
())
{
semanticServices
.
getErrorHandler
().
genericError
(
type
.
getNode
(),
typeConstructor
.
getParameters
().
size
()
+
" type parameters expected"
);
// TODO : message
}
else
{
result
[
0
]
=
new
JetTypeImpl
(
attributes
,
typeConstructor
,
nullable
,
arguments
,
classDescriptor
.
getMemberScope
(
arguments
)
);
else
if
(
classifierDescriptor
instanceof
ClassDescriptor
)
{
ClassDescriptor
classDescriptor
=
(
ClassDescriptor
)
classifierDescriptor
;
trace
.
recordReferenceResolution
(
referenceExpression
,
classifierDescriptor
);
TypeConstructor
typeConstructor
=
classifierDescriptor
.
getTypeConstructor
(
);
List
<
TypeProjection
>
arguments
=
resolveTypeProjections
(
scope
,
typeConstructor
,
type
.
getTypeArguments
()
);
if
(
arguments
.
size
()
!=
typeConstructor
.
getParameters
().
size
())
{
semanticServices
.
getErrorHandler
().
genericError
(
type
.
getNode
(),
typeConstructor
.
getParameters
().
size
()
+
" type parameters expected"
);
// TODO : message
}
else
{
result
[
0
]
=
new
JetTypeImpl
(
attributes
,
typeConstructor
,
nullable
,
arguments
,
classDescriptor
.
getMemberScope
(
arguments
)
);
}
}
}
}
...
...
@@ -171,12 +173,7 @@ public class TypeResolver {
}
@Nullable
public
ClassDescriptor
resolveClassByUserType
(
JetScope
scope
,
JetUserType
userType
)
{
return
resolveClass
(
scope
,
userType
);
}
@Nullable
private
ClassDescriptor
resolveClass
(
JetScope
scope
,
JetUserType
userType
)
{
public
ClassifierDescriptor
resolveClass
(
JetScope
scope
,
JetUserType
userType
)
{
JetSimpleNameExpression
expression
=
userType
.
getReferenceExpression
();
if
(
expression
==
null
)
{
return
null
;
...
...
@@ -185,9 +182,9 @@ public class TypeResolver {
if
(
referencedName
==
null
)
{
return
null
;
}
Class
Descriptor
class
Descriptor
=
null
;
Class
ifierDescriptor
classifier
Descriptor
=
null
;
if
(
userType
.
isAbsoluteInRootNamespace
())
{
class
Descriptor
=
JetModuleUtil
.
getRootNamespaceScope
(
userType
).
getClass
(
referencedName
);
class
ifierDescriptor
=
JetModuleUtil
.
getRootNamespaceScope
(
userType
).
getClassifier
(
referencedName
);
}
else
{
JetUserType
qualifier
=
userType
.
getQualifier
();
...
...
@@ -197,21 +194,22 @@ public class TypeResolver {
if
(
scope
==
null
)
{
return
null
;
}
class
Descriptor
=
scope
.
getClass
(
referencedName
);
class
ifierDescriptor
=
scope
.
getClassifier
(
referencedName
);
}
if
(
classDescriptor
==
null
)
{
if
(
class
ifier
Descriptor
==
null
)
{
semanticServices
.
getErrorHandler
().
unresolvedReference
(
expression
);
}
return
classDescriptor
;
return
class
ifier
Descriptor
;
}
@Nullable
private
JetScope
resolveClassLookupScope
(
JetScope
scope
,
JetUserType
userType
)
{
ClassDescriptor
classDescriptor
=
resolveClass
(
scope
,
userType
);
if
(
classDescriptor
!=
null
)
{
return
classDescriptor
.
getMemberScope
(
resolveTypeProjections
(
scope
,
classDescriptor
.
getTypeConstructor
(),
userType
.
getTypeArguments
()));
ClassifierDescriptor
classifierDescriptor
=
resolveClass
(
scope
,
userType
);
if
(
classifierDescriptor
instanceof
ClassDescriptor
)
{
List
<
TypeProjection
>
typeArguments
=
resolveTypeProjections
(
scope
,
classifierDescriptor
.
getTypeConstructor
(),
userType
.
getTypeArguments
());
return
((
ClassDescriptor
)
classifierDescriptor
).
getMemberScope
(
typeArguments
);
}
NamespaceDescriptor
namespaceDescriptor
=
resolveNamespace
(
scope
,
userType
);
...
...
idea/src/org/jetbrains/jet/lang/resolve/WritableScope.java
浏览文件 @
3e2b41a2
...
...
@@ -22,9 +22,7 @@ public class WritableScope extends JetScopeAdapter {
@Nullable
private
Map
<
String
,
WritableFunctionGroup
>
functionGroups
;
@Nullable
private
Map
<
String
,
TypeParameterDescriptor
>
typeParameterDescriptors
;
@Nullable
private
Map
<
String
,
ClassDescriptor
>
classDescriptors
;
private
Map
<
String
,
ClassifierDescriptor
>
classifierDescriptors
;
@Nullable
private
Map
<
String
,
NamespaceDescriptor
>
namespaceDescriptors
;
@Nullable
...
...
@@ -138,65 +136,48 @@ public class WritableScope extends JetScopeAdapter {
return
functionGroup
;
}
@NotNull
private
Map
<
String
,
TypeParameterDescriptor
>
getTypeParameterDescriptors
()
{
if
(
typeParameterDescriptors
==
null
)
{
typeParameterDescriptors
=
new
HashMap
<
String
,
TypeParameterDescriptor
>();
}
return
typeParameterDescriptors
;
}
public
void
addTypeParameterDescriptor
(
TypeParameterDescriptor
typeParameterDescriptor
)
{
String
name
=
typeParameterDescriptor
.
getName
();
Map
<
String
,
TypeParameterDescriptor
>
typeParameterDescriptors
=
getTypeParamet
erDescriptors
();
TypeParameterDescriptor
originalDescriptor
=
typeParamet
erDescriptors
.
get
(
name
);
Map
<
String
,
ClassifierDescriptor
>
classifierDescriptors
=
getClassifi
erDescriptors
();
ClassifierDescriptor
originalDescriptor
=
classifi
erDescriptors
.
get
(
name
);
if
(
originalDescriptor
!=
null
)
{
errorHandler
.
redeclaration
(
originalDescriptor
,
typeParameterDescriptor
);
}
typeParameterDescriptors
.
put
(
name
,
typeParameterDescriptor
);
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
TypeParameterDescriptor
typeParameterDescriptor
=
getTypeParameterDescriptors
().
get
(
name
);
if
(
typeParameterDescriptor
!=
null
)
{
return
typeParameterDescriptor
;
}
return
super
.
getTypeParameter
(
name
);
classifierDescriptors
.
put
(
name
,
typeParameterDescriptor
);
}
@NotNull
private
Map
<
String
,
Class
Descriptor
>
getClass
Descriptors
()
{
if
(
classDescriptors
==
null
)
{
class
Descriptors
=
new
HashMap
<
String
,
Class
Descriptor
>();
private
Map
<
String
,
Class
ifierDescriptor
>
getClassifier
Descriptors
()
{
if
(
class
ifier
Descriptors
==
null
)
{
class
ifierDescriptors
=
new
HashMap
<
String
,
Classifier
Descriptor
>();
}
return
classDescriptors
;
return
class
ifier
Descriptors
;
}
public
void
addClass
Descriptor
(
@NotNull
Class
Descriptor
classDescriptor
)
{
addClassAlias
(
classDescriptor
.
getName
(),
classDescriptor
);
public
void
addClass
ifierDescriptor
(
@NotNull
Classifier
Descriptor
classDescriptor
)
{
addClass
ifier
Alias
(
classDescriptor
.
getName
(),
classDescriptor
);
}
public
void
addClass
Alias
(
String
name
,
ClassDescriptor
class
Descriptor
)
{
Map
<
String
,
Class
Descriptor
>
classDescriptors
=
getClass
Descriptors
();
Class
Descriptor
originalDescriptor
=
class
Descriptors
.
get
(
name
);
public
void
addClass
ifierAlias
(
String
name
,
ClassifierDescriptor
classifier
Descriptor
)
{
Map
<
String
,
Class
ifierDescriptor
>
classifierDescriptors
=
getClassifier
Descriptors
();
Class
ifierDescriptor
originalDescriptor
=
classifier
Descriptors
.
get
(
name
);
if
(
originalDescriptor
!=
null
)
{
errorHandler
.
redeclaration
(
originalDescriptor
,
classDescriptor
);
errorHandler
.
redeclaration
(
originalDescriptor
,
class
ifier
Descriptor
);
}
class
Descriptors
.
put
(
name
,
class
Descriptor
);
class
ifierDescriptors
.
put
(
name
,
classifier
Descriptor
);
}
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
Class
Descriptor
classDescriptor
=
getClass
Descriptors
().
get
(
name
);
if
(
class
Descriptor
!=
null
)
return
class
Descriptor
;
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
Class
ifierDescriptor
classifierDescriptor
=
getClassifier
Descriptors
().
get
(
name
);
if
(
class
ifierDescriptor
!=
null
)
return
classifier
Descriptor
;
class
Descriptor
=
super
.
getClass
(
name
);
if
(
class
Descriptor
!=
null
)
return
class
Descriptor
;
class
ifierDescriptor
=
super
.
getClassifier
(
name
);
if
(
class
ifierDescriptor
!=
null
)
return
classifier
Descriptor
;
for
(
JetScope
imported
:
getImports
())
{
Class
Descriptor
importedClass
=
imported
.
getClass
(
name
);
if
(
importedClass
!=
null
)
{
return
importedClass
;
Class
ifierDescriptor
importedClassifier
=
imported
.
getClassifier
(
name
);
if
(
importedClass
ifier
!=
null
)
{
return
importedClass
ifier
;
}
}
return
null
;
...
...
@@ -248,11 +229,6 @@ public class WritableScope extends JetScopeAdapter {
return
null
;
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
return
super
.
getExtension
(
name
);
// TODO
}
public
void
setThisType
(
JetType
thisType
)
{
if
(
this
.
thisType
!=
null
)
{
throw
new
UnsupportedOperationException
(
"Receiver redeclared"
);
...
...
idea/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java
浏览文件 @
3e2b41a2
...
...
@@ -31,7 +31,7 @@ public class JavaClassMembersScope implements JetScope {
}
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
for
(
PsiClass
innerClass
:
psiClass
.
getAllInnerClasses
())
{
if
(
name
.
equals
(
innerClass
.
getName
()))
{
if
(
innerClass
.
hasModifierProperty
(
PsiModifier
.
STATIC
)
!=
staticMembers
)
return
null
;
...
...
@@ -90,21 +90,11 @@ public class JavaClassMembersScope implements JetScope {
return
writableFunctionGroup
;
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
return
null
;
}
@Override
public
NamespaceDescriptor
getNamespace
(
@NotNull
String
name
)
{
return
null
;
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
return
null
;
}
@NotNull
@Override
public
JetType
getThisType
()
{
...
...
idea/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java
浏览文件 @
3e2b41a2
...
...
@@ -2,7 +2,7 @@ package org.jetbrains.jet.lang.resolve.java;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.jet.lang.resolve.JetScopeImpl
;
import
org.jetbrains.jet.lang.types.ClassDescriptor
;
import
org.jetbrains.jet.lang.types.Class
ifier
Descriptor
;
import
org.jetbrains.jet.lang.types.DeclarationDescriptor
;
import
org.jetbrains.jet.lang.types.NamespaceDescriptor
;
...
...
@@ -22,7 +22,7 @@ public class JavaPackageScope extends JetScopeImpl {
}
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
return
semanticServices
.
getDescriptorResolver
().
resolveClass
(
getQualifiedName
(
name
));
}
...
...
idea/src/org/jetbrains/jet/lang/types/ClassDescriptor.java
浏览文件 @
3e2b41a2
...
...
@@ -8,9 +8,7 @@ import java.util.List;
/**
* @author abreslav
*/
public
interface
ClassDescriptor
extends
DeclarationDescriptor
{
@NotNull
TypeConstructor
getTypeConstructor
();
public
interface
ClassDescriptor
extends
ClassifierDescriptor
{
@NotNull
JetScope
getMemberScope
(
List
<
TypeProjection
>
typeArguments
);
...
...
idea/src/org/jetbrains/jet/lang/types/ClassifierDescriptor.java
0 → 100644
浏览文件 @
3e2b41a2
package
org.jetbrains.jet.lang.types
;
import
org.jetbrains.annotations.NotNull
;
/**
* @author abreslav
*/
public
interface
ClassifierDescriptor
extends
DeclarationDescriptor
{
@NotNull
TypeConstructor
getTypeConstructor
();
}
idea/src/org/jetbrains/jet/lang/types/ErrorUtils.java
浏览文件 @
3e2b41a2
...
...
@@ -15,7 +15,7 @@ public class ErrorUtils {
private
static
final
JetScope
ERROR_SCOPE
=
new
JetScope
()
{
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
return
ERROR_CLASS
;
}
...
...
@@ -24,21 +24,11 @@ public class ErrorUtils {
return
ERROR_PROPERTY
;
}
@Override
public
ExtensionDescriptor
getExtension
(
@NotNull
String
name
)
{
return
null
;
// TODO : review
}
@Override
public
NamespaceDescriptor
getNamespace
(
@NotNull
String
name
)
{
return
null
;
// TODO : review
}
@Override
public
TypeParameterDescriptor
getTypeParameter
(
@NotNull
String
name
)
{
return
null
;
// TODO : review
}
@NotNull
@Override
public
JetType
getThisType
()
{
...
...
idea/src/org/jetbrains/jet/lang/types/JetStandardClasses.java
浏览文件 @
3e2b41a2
...
...
@@ -166,7 +166,7 @@ public class JetStandardClasses {
static
{
WritableScope
writableScope
=
new
WritableScope
(
JetScope
.
EMPTY
,
STANDARD_CLASSES_NAMESPACE
,
ErrorHandler
.
DO_NOTHING
);
STANDARD_CLASSES
=
writableScope
;
writableScope
.
addClassAlias
(
"Unit"
,
getTuple
(
0
));
writableScope
.
addClass
ifier
Alias
(
"Unit"
,
getTuple
(
0
));
Field
[]
declaredFields
=
JetStandardClasses
.
class
.
getDeclaredFields
();
for
(
Field
field
:
declaredFields
)
{
...
...
@@ -177,7 +177,7 @@ public class JetStandardClasses {
if
(
type
==
ClassDescriptor
.
class
)
{
try
{
ClassDescriptor
descriptor
=
(
ClassDescriptor
)
field
.
get
(
null
);
writableScope
.
addClassDescriptor
(
descriptor
);
writableScope
.
addClass
ifier
Descriptor
(
descriptor
);
}
catch
(
IllegalAccessException
e
)
{
throw
new
IllegalStateException
(
e
);
}
...
...
@@ -185,7 +185,7 @@ public class JetStandardClasses {
try
{
ClassDescriptor
[]
array
=
(
ClassDescriptor
[])
field
.
get
(
null
);
for
(
ClassDescriptor
descriptor
:
array
)
{
writableScope
.
addClassDescriptor
(
descriptor
);
writableScope
.
addClass
ifier
Descriptor
(
descriptor
);
}
}
catch
(
IllegalAccessException
e
)
{
throw
new
IllegalStateException
(
e
);
...
...
idea/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java
浏览文件 @
3e2b41a2
...
...
@@ -8,7 +8,6 @@ import org.jetbrains.jet.lang.ErrorHandler;
import
org.jetbrains.jet.lang.JetFileType
;
import
org.jetbrains.jet.lang.JetSemanticServices
;
import
org.jetbrains.jet.lang.psi.JetFile
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.resolve.BindingTraceContext
;
import
org.jetbrains.jet.lang.resolve.JetScope
;
import
org.jetbrains.jet.lang.resolve.TopDownAnalyzer
;
...
...
@@ -74,21 +73,20 @@ public class JetStandardLibrary {
BindingTraceContext
bindingTraceContext
=
new
BindingTraceContext
();
TopDownAnalyzer
bootstrappingTDA
=
new
TopDownAnalyzer
(
bootstrappingSemanticServices
,
bindingTraceContext
);
bootstrappingTDA
.
process
(
JetStandardClasses
.
STANDARD_CLASSES
,
file
.
getRootNamespace
().
getDeclarations
());
BindingContext
bindingContext
=
bindingTraceContext
;
this
.
libraryScope
=
bindingContext
.
getTopLevelScope
();
this
.
byteClass
=
libraryScope
.
getClass
(
"Byte"
);
this
.
charClass
=
libraryScope
.
getClass
(
"Char"
);
this
.
shortClass
=
libraryScope
.
getClass
(
"Short"
);
this
.
intClass
=
libraryScope
.
getClass
(
"Int"
);
this
.
longClass
=
libraryScope
.
getClass
(
"Long"
);
this
.
floatClass
=
libraryScope
.
getClass
(
"Float"
);
this
.
doubleClass
=
libraryScope
.
getClass
(
"Double"
);
this
.
booleanClass
=
libraryScope
.
getClass
(
"Boolean"
);
this
.
stringClass
=
libraryScope
.
getClass
(
"String"
);
this
.
arrayClass
=
libraryScope
.
getClass
(
"Array"
);
this
.
iterableClass
=
libraryScope
.
getClass
(
"Iterable"
);
this
.
libraryScope
=
bindingTraceContext
.
getTopLevelScope
();
this
.
byteClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Byte"
);
this
.
charClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Char"
);
this
.
shortClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Short"
);
this
.
intClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Int"
);
this
.
longClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Long"
);
this
.
floatClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Float"
);
this
.
doubleClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Double"
);
this
.
booleanClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Boolean"
);
this
.
stringClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"String"
);
this
.
arrayClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Array"
);
this
.
iterableClass
=
(
ClassDescriptor
)
libraryScope
.
getClassifier
(
"Iterable"
);
this
.
byteType
=
new
JetTypeImpl
(
getByte
());
this
.
charType
=
new
JetTypeImpl
(
getChar
());
...
...
idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java
浏览文件 @
3e2b41a2
...
...
@@ -511,8 +511,11 @@ public class JetTypeInferrer {
// Errors are reported by the parser
if
(
superTypeElement
instanceof
JetUserType
)
{
JetUserType
typeElement
=
(
JetUserType
)
superTypeElement
;
ClassDescriptor
superclass
=
typeResolver
.
resolveClassByUserType
(
scope
,
typeElement
);
if
(
superclass
!=
null
)
{
ClassifierDescriptor
classifierCandidate
=
typeResolver
.
resolveClass
(
scope
,
typeElement
);
if
(
classifierCandidate
instanceof
ClassDescriptor
)
{
ClassDescriptor
superclass
=
(
ClassDescriptor
)
classifierCandidate
;
Collection
<?
extends
JetType
>
supertypes
=
thisType
.
getConstructor
().
getSupertypes
();
Map
<
TypeConstructor
,
TypeProjection
>
substitutionContext
=
TypeUtils
.
buildSubstitutionContext
(
thisType
);
for
(
JetType
declaredSupertype
:
supertypes
)
{
...
...
idea/src/org/jetbrains/jet/lang/types/TypeParameterDescriptor.java
浏览文件 @
3e2b41a2
...
...
@@ -9,7 +9,7 @@ import java.util.Set;
/**
* @author abreslav
*/
public
class
TypeParameterDescriptor
extends
DeclarationDescriptorImpl
{
public
class
TypeParameterDescriptor
extends
DeclarationDescriptorImpl
implements
ClassifierDescriptor
{
private
final
Variance
variance
;
private
final
Set
<
JetType
>
upperBounds
;
private
final
TypeConstructor
typeConstructor
;
...
...
@@ -58,6 +58,8 @@ public class TypeParameterDescriptor extends DeclarationDescriptorImpl {
return
upperBounds
;
}
@NotNull
@Override
public
TypeConstructor
getTypeConstructor
()
{
return
typeConstructor
;
}
...
...
idea/testData/resolve/Classifiers.jet
0 → 100644
浏览文件 @
3e2b41a2
class A<~T~T, ~E~E> {
val a : `T`T
val x : A<`T`T, `E`E>
class X<~X.T~T> : A<`X.T`T, `E`E> {
val a : `X.T`T
val b : `X.E`E
~X.E~class E {}
}
}
\ No newline at end of file
idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java
浏览文件 @
3e2b41a2
...
...
@@ -74,6 +74,8 @@ public class ExpectedResolveData {
document
.
replaceString
(
start
,
matcher
.
end
(),
""
);
text
=
document
.
getText
();
}
// System.out.println("text = " + text);
}
public
void
checkResult
(
JetFile
file
)
{
...
...
@@ -133,7 +135,7 @@ public class ExpectedResolveData {
JetType
actualType
=
bindingContext
.
resolveTypeReference
(
typeReference
);
assertNotNull
(
"Type "
+
name
+
" not resolved for reference "
+
name
,
actualType
);
Class
Descriptor
expectedClass
=
lib
.
getLibraryScope
().
getClass
(
name
.
substring
(
5
));
Class
ifierDescriptor
expectedClass
=
lib
.
getLibraryScope
().
getClassifier
(
name
.
substring
(
5
));
assertNotNull
(
"Expected class not found: "
+
name
);
assertSame
(
"Type resolution mismatch: "
,
expectedClass
.
getTypeConstructor
(),
actualType
.
getConstructor
());
continue
;
...
...
@@ -164,7 +166,7 @@ public class ExpectedResolveData {
JetType
expressionType
=
bindingContext
.
getExpressionType
(
expression
);
TypeConstructor
expectedTypeConstructor
;
if
(
typeName
.
startsWith
(
"std::"
))
{
Class
Descriptor
expectedClass
=
lib
.
getLibraryScope
().
getClass
(
typeName
.
substring
(
5
));
Class
ifierDescriptor
expectedClass
=
lib
.
getLibraryScope
().
getClassifier
(
typeName
.
substring
(
5
));
assertNotNull
(
"Expected class not found: "
+
typeName
,
expectedClass
);
expectedTypeConstructor
=
expectedClass
.
getTypeConstructor
();
...
...
idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java
浏览文件 @
3e2b41a2
...
...
@@ -154,4 +154,8 @@ public class JetResolveTest extends ExtensibleResolveTestCase {
doTest
(
"/resolve/PrimaryConstructors.jet"
,
true
,
true
);
}
public
void
testClassifiers
()
throws
Exception
{
doTest
(
"/resolve/Classifiers.jet"
,
true
,
true
);
}
}
\ No newline at end of file
idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java
浏览文件 @
3e2b41a2
...
...
@@ -520,7 +520,7 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase {
public
JetScope
BASIC_SCOPE
=
new
JetScopeAdapter
(
library
.
getLibraryScope
())
{
@Override
public
Class
Descriptor
getClass
(
@NotNull
String
name
)
{
public
Class
ifierDescriptor
getClassifier
(
@NotNull
String
name
)
{
if
(
CLASSES
.
isEmpty
())
{
for
(
String
classDeclaration
:
CLASS_DECLARATIONS
)
{
JetClass
classElement
=
JetChangeUtil
.
createClass
(
getProject
(),
classDeclaration
);
...
...
@@ -532,7 +532,7 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase {
if
(
classDescriptor
!=
null
)
{
return
classDescriptor
;
}
return
super
.
getClass
(
name
);
return
super
.
getClass
ifier
(
name
);
}
@NotNull
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录