Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
5eb483b7
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,发现更多精彩内容 >>
提交
5eb483b7
编写于
2月 20, 2012
作者:
S
Stepan Koltsov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better error reporting on incomplete hierarchy in JDR
上级
b36da4da
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
44 addition
and
3 deletion
+44
-3
compiler/cli/src/org/jetbrains/jet/compiler/CompileSession.java
...er/cli/src/org/jetbrains/jet/compiler/CompileSession.java
+33
-1
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+9
-2
compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java
...nd/src/org/jetbrains/jet/lang/resolve/BindingContext.java
+2
-0
未找到文件。
compiler/cli/src/org/jetbrains/jet/compiler/CompileSession.java
浏览文件 @
5eb483b7
...
...
@@ -27,18 +27,25 @@ import org.jetbrains.annotations.NotNull;
import
org.jetbrains.jet.codegen.ClassBuilderFactory
;
import
org.jetbrains.jet.codegen.ClassFileFactory
;
import
org.jetbrains.jet.codegen.GenerationState
;
import
org.jetbrains.jet.codegen.JetTypeMapper
;
import
org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory
;
import
org.jetbrains.jet.lang.descriptors.ClassDescriptor
;
import
org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor
;
import
org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
;
import
org.jetbrains.jet.lang.descriptors.ModuleDescriptor
;
import
org.jetbrains.jet.lang.diagnostics.Diagnostic
;
import
org.jetbrains.jet.lang.diagnostics.Severity
;
import
org.jetbrains.jet.lang.diagnostics.SimpleDiagnosticFactory
;
import
org.jetbrains.jet.lang.psi.JetFile
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.resolve.java.AnalyzerFacade
;
import
org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
;
import
org.jetbrains.jet.plugin.JetFileType
;
import
java.io.File
;
import
java.io.PrintStream
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
...
...
@@ -137,8 +144,33 @@ public class CompileSession {
reportSyntaxErrors
(
errorCollector
);
analyzeAndReportSemanticErrors
(
errorCollector
);
boolean
hasIncompleteHierarchyErrors
;
Collection
<
ClassDescriptor
>
incompletes
=
myBindingContext
.
getKeys
(
BindingContext
.
INCOMPLETE_HIERARCHY
);
if
(!
incompletes
.
isEmpty
())
{
out
.
println
(
"following classes have incomplete hierarchies:"
);
for
(
ClassDescriptor
incomplete
:
incompletes
)
{
out
.
println
(
" "
+
fqName
(
incomplete
));
}
hasIncompleteHierarchyErrors
=
true
;
}
else
{
hasIncompleteHierarchyErrors
=
false
;
}
errorCollector
.
flushTo
(
out
);
return
!
errorCollector
.
hasErrors
;
return
!
errorCollector
.
hasErrors
&&
!
hasIncompleteHierarchyErrors
;
}
/**
* @see JetTypeMapper#getFQName(DeclarationDescriptor)
*/
private
String
fqName
(
ClassOrNamespaceDescriptor
descriptor
)
{
DeclarationDescriptor
containingDeclaration
=
descriptor
.
getContainingDeclaration
();
if
(
containingDeclaration
==
null
||
containingDeclaration
instanceof
ModuleDescriptor
||
containingDeclaration
.
getName
().
equals
(
JavaDescriptorResolver
.
JAVA_ROOT
))
{
return
descriptor
.
getName
();
}
else
{
return
fqName
((
ClassOrNamespaceDescriptor
)
containingDeclaration
)
+
"."
+
descriptor
.
getName
();
}
}
private
void
analyzeAndReportSemanticErrors
(
ErrorCollector
errorCollector
)
{
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
5eb483b7
...
...
@@ -309,7 +309,7 @@ public class JavaDescriptorResolver {
TypeVariableResolverFromTypeDescriptors
resolverForTypeParameters
=
new
TypeVariableResolverFromTypeDescriptors
(
classData
.
getTypeParameters
(),
null
);
// TODO: ugly hack: tests crash if initializeTypeParameters called with class containing proper supertypes
supertypes
.
addAll
(
getSupertypes
(
new
PsiClassWrapper
(
psiClass
),
classData
.
getTypeParameters
()));
supertypes
.
addAll
(
getSupertypes
(
new
PsiClassWrapper
(
psiClass
),
classData
.
classDescriptor
,
classData
.
getTypeParameters
()));
if
(
psiClass
.
isInterface
())
{
//classData.classDescriptor.setSuperclassType(JetStandardClasses.getAnyType()); // TODO : Make it java.lang.Object
...
...
@@ -669,7 +669,7 @@ public class JavaDescriptorResolver {
}
}
private
Collection
<?
extends
JetType
>
getSupertypes
(
PsiClassWrapper
psiClass
,
List
<
TypeParameterDescriptor
>
typeParameters
)
{
private
Collection
<?
extends
JetType
>
getSupertypes
(
PsiClassWrapper
psiClass
,
ClassDescriptor
classDescriptor
,
List
<
TypeParameterDescriptor
>
typeParameters
)
{
final
List
<
JetType
>
result
=
new
ArrayList
<
JetType
>();
if
(
psiClass
.
getJetClass
().
signature
().
length
()
>
0
)
{
...
...
@@ -703,6 +703,13 @@ public class JavaDescriptorResolver {
transformSupertypeList
(
result
,
psiClass
.
getPsiClass
().
getExtendsListTypes
(),
new
TypeVariableResolverFromTypeDescriptors
(
typeParameters
,
null
));
transformSupertypeList
(
result
,
psiClass
.
getPsiClass
().
getImplementsListTypes
(),
new
TypeVariableResolverFromTypeDescriptors
(
typeParameters
,
null
));
}
for
(
JetType
supertype
:
result
)
{
if
(
ErrorUtils
.
isErrorType
(
supertype
))
{
semanticServices
.
getTrace
().
record
(
BindingContext
.
INCOMPLETE_HIERARCHY
,
classDescriptor
);
}
}
if
(
result
.
isEmpty
())
{
result
.
add
(
JetStandardClasses
.
getAnyType
());
}
...
...
compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java
浏览文件 @
5eb483b7
...
...
@@ -171,6 +171,8 @@ public interface BindingContext {
WritableSlice
<
String
,
ClassDescriptor
>
FQNAME_TO_CLASS_DESCRIPTOR
=
new
BasicWritableSlice
<
String
,
ClassDescriptor
>(
DO_NOTHING
,
true
);
WritableSlice
<
String
,
NamespaceDescriptor
>
FQNAME_TO_NAMESPACE_DESCRIPTOR
=
new
BasicWritableSlice
<
String
,
NamespaceDescriptor
>(
DO_NOTHING
);
WritableSlice
<
ClassDescriptor
,
Boolean
>
INCOMPLETE_HIERARCHY
=
Slices
.
createCollectiveSetSlice
();
@SuppressWarnings
(
"UnusedDeclaration"
)
@Deprecated
// This field is needed only for the side effects of its initializer
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录