Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
a2e11821
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,发现更多精彩内容 >>
提交
a2e11821
编写于
4月 30, 2012
作者:
S
Svetlana Isakova
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
resolvedCalls set instead of multiMap stored in ResolutionTask
上级
a8f959fe
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
27 deletion
+26
-27
compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java
.../org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java
+22
-23
idea/src/org/jetbrains/jet/plugin/internal/resolvewindow/ResolveToolwindow.java
.../jet/plugin/internal/resolvewindow/ResolveToolwindow.java
+4
-4
未找到文件。
compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java
浏览文件 @
a2e11821
...
...
@@ -16,7 +16,6 @@
package
org.jetbrains.jet.lang.resolve.calls
;
import
com.google.common.collect.LinkedHashMultimap
;
import
com.google.common.collect.Multimap
;
import
com.google.common.collect.Sets
;
import
com.intellij.lang.ASTNode
;
...
...
@@ -39,6 +38,7 @@ import org.jetbrains.jet.lexer.JetTokens;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
import
static
org
.
jetbrains
.
jet
.
lang
.
diagnostics
.
Errors
.*;
import
static
org
.
jetbrains
.
jet
.
lang
.
resolve
.
BindingContext
.*;
...
...
@@ -48,9 +48,9 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.*;
*
* @author abreslav
*/
public
class
ResolutionTask
<
D
extends
CallableDescriptor
>
extends
ResolutionContext
{
public
class
ResolutionTask
<
D
extends
CallableDescriptor
,
F
extends
D
>
extends
ResolutionContext
{
private
final
Collection
<
ResolutionCandidate
<
D
>>
candidates
;
private
final
Multimap
<
ResolutionCandidate
<
D
>,
ResolvedCallImpl
<
D
>>
resolvedCallMap
=
LinkedHashMultimap
.
create
();
private
final
Set
<
ResolvedCallWithTrace
<
F
>>
resolvedCalls
=
Sets
.
newLinkedHashSet
();
/*package*/
final
JetReferenceExpression
reference
;
private
DescriptorCheckStrategy
checkingStrategy
;
...
...
@@ -71,8 +71,8 @@ public class ResolutionTask<D extends CallableDescriptor> extends ResolutionCont
}
@NotNull
public
Multimap
<
ResolutionCandidate
<
D
>,
ResolvedCallImpl
<
D
>>
getResolvedCallMap
()
{
return
resolvedCall
Map
;
public
Set
<
ResolvedCallWithTrace
<
F
>>
getResolvedCalls
()
{
return
resolvedCall
s
;
}
public
void
setCheckingStrategy
(
DescriptorCheckStrategy
strategy
)
{
...
...
@@ -86,8 +86,8 @@ public class ResolutionTask<D extends CallableDescriptor> extends ResolutionCont
return
true
;
}
public
ResolutionTask
<
D
>
withTrace
(
BindingTrace
newTrace
)
{
ResolutionTask
<
D
>
newTask
=
new
ResolutionTask
<
D
>(
candidates
,
reference
,
newTrace
,
scope
,
call
,
expectedType
,
dataFlowInfo
);
public
ResolutionTask
<
D
,
F
>
withTrace
(
BindingTrace
newTrace
)
{
ResolutionTask
<
D
,
F
>
newTask
=
new
ResolutionTask
<
D
,
F
>(
candidates
,
reference
,
newTrace
,
scope
,
call
,
expectedType
,
dataFlowInfo
);
newTask
.
setCheckingStrategy
(
checkingStrategy
);
return
newTask
;
}
...
...
@@ -98,22 +98,15 @@ public class ResolutionTask<D extends CallableDescriptor> extends ResolutionCont
public
final
TracingStrategy
tracing
=
new
TracingStrategy
()
{
@Override
public
<
D
extends
CallableDescriptor
>
void
bindReference
(
@NotNull
BindingTrace
trace
,
@NotNull
ResolvedCallImpl
<
D
>
resolvedCall
)
{
D
descriptor
=
resolvedCall
.
getCandidateDescriptor
();
// if (descriptor instanceof VariableAsFunctionDescriptor) {
// VariableAsFunctionDescriptor variableAsFunctionDescriptor = (VariableAsFunctionDescriptor) descriptor;
// trace.record(REFERENCE_TARGET, reference, variableAsFunctionDescriptor.getVariableDescriptor());
// }
// else {
// }
public
<
D
extends
CallableDescriptor
>
void
bindResolvedCall
(
@NotNull
BindingTrace
trace
,
@NotNull
ResolvedCallWithTrace
<
D
>
resolvedCall
)
{
trace
.
record
(
REFERENCE_TARGET
,
reference
,
resolvedCall
.
getResultingDescriptor
());
trace
.
record
(
RESOLVED_CALL
,
call
.
getCalleeExpression
(),
resolvedCall
);
trace
.
record
(
REFERENCE_TARGET
,
reference
,
descriptor
);
}
@Override
public
<
D
extends
CallableDescriptor
>
void
recordAmbiguity
(
BindingTrace
trace
,
Collection
<
ResolvedCall
Impl
<
D
>>
candidates
)
{
public
<
D
extends
CallableDescriptor
>
void
recordAmbiguity
(
BindingTrace
trace
,
Collection
<
ResolvedCall
WithTrace
<
D
>>
candidates
)
{
Collection
<
D
>
descriptors
=
Sets
.
newHashSet
();
for
(
ResolvedCall
Impl
<
D
>
candidate
:
candidates
)
{
for
(
ResolvedCall
WithTrace
<
D
>
candidate
:
candidates
)
{
descriptors
.
add
(
candidate
.
getCandidateDescriptor
());
}
trace
.
record
(
AMBIGUOUS_REFERENCE_TARGET
,
reference
,
descriptors
);
...
...
@@ -155,7 +148,14 @@ public class ResolutionTask<D extends CallableDescriptor> extends ResolutionCont
@Override
public
void
noReceiverAllowed
(
@NotNull
BindingTrace
trace
)
{
trace
.
report
(
NO_RECEIVER_ADMITTED
.
on
(
reference
));
if
(
reference
instanceof
JetSimpleNameExpression
)
{
//todo temporary hack
//should be stored that the reference is unresolved (and not trace the candidate descriptor)
trace
.
report
(
UNRESOLVED_REFERENCE
.
on
(
reference
));
}
else
{
trace
.
report
(
NO_RECEIVER_ADMITTED
.
on
(
reference
));
}
}
@Override
...
...
@@ -170,12 +170,12 @@ public class ResolutionTask<D extends CallableDescriptor> extends ResolutionCont
}
@Override
public
<
D
extends
CallableDescriptor
>
void
ambiguity
(
@NotNull
BindingTrace
trace
,
@NotNull
Collection
<
ResolvedCall
Impl
<
D
>>
descriptors
)
{
public
<
D
extends
CallableDescriptor
>
void
ambiguity
(
@NotNull
BindingTrace
trace
,
@NotNull
Collection
<
ResolvedCall
WithTrace
<
D
>>
descriptors
)
{
trace
.
report
(
OVERLOAD_RESOLUTION_AMBIGUITY
.
on
(
call
.
getCallElement
(),
descriptors
));
}
@Override
public
<
D
extends
CallableDescriptor
>
void
noneApplicable
(
@NotNull
BindingTrace
trace
,
@NotNull
Collection
<
ResolvedCall
Impl
<
D
>>
descriptors
)
{
public
<
D
extends
CallableDescriptor
>
void
noneApplicable
(
@NotNull
BindingTrace
trace
,
@NotNull
Collection
<
ResolvedCall
WithTrace
<
D
>>
descriptors
)
{
trace
.
report
(
NONE_APPLICABLE
.
on
(
reference
,
descriptors
));
}
...
...
@@ -233,8 +233,7 @@ public class ResolutionTask<D extends CallableDescriptor> extends ResolutionCont
@Override
public
void
invisibleMember
(
@NotNull
BindingTrace
trace
,
@NotNull
DeclarationDescriptor
descriptor
)
{
JetExpression
expression
=
call
.
getCalleeExpression
();
trace
.
report
(
INVISIBLE_MEMBER
.
on
(
expression
!=
null
?
expression
:
call
.
getCallElement
(),
descriptor
,
descriptor
.
getContainingDeclaration
()));
trace
.
report
(
INVISIBLE_MEMBER
.
on
(
call
.
getCallElement
(),
descriptor
,
descriptor
.
getContainingDeclaration
()));
}
};
}
idea/src/org/jetbrains/jet/plugin/internal/resolvewindow/ResolveToolwindow.java
浏览文件 @
a2e11821
...
...
@@ -192,9 +192,9 @@ public class ResolveToolwindow extends JPanel implements Disposable {
StringBuilder
result
=
new
StringBuilder
();
if
(
debugInfo
!=
null
)
{
List
<?
extends
ResolutionTask
<?
extends
CallableDescriptor
>>
resolutionTasks
=
debugInfo
.
get
(
TASKS
);
for
(
ResolutionTask
<?
extends
CallableDescriptor
>
resolutionTask
:
resolutionTasks
)
{
for
(
ResolvedCall
Impl
<?
extends
CallableDescriptor
>
resolvedCall
:
resolutionTask
.
getResolvedCallMap
().
value
s
())
{
List
<?
extends
ResolutionTask
<?
extends
CallableDescriptor
,
?
>>
resolutionTasks
=
debugInfo
.
get
(
TASKS
);
for
(
ResolutionTask
<?
extends
CallableDescriptor
,
?
>
resolutionTask
:
resolutionTasks
)
{
for
(
ResolvedCall
WithTrace
<?
extends
CallableDescriptor
>
resolvedCall
:
resolutionTask
.
getResolvedCall
s
())
{
renderResolutionLogForCall
(
debugInfo
,
resolvedCall
,
result
);
}
}
...
...
@@ -212,7 +212,7 @@ public class ResolveToolwindow extends JPanel implements Disposable {
return
result
.
toString
();
}
private
void
renderResolutionLogForCall
(
Data
debugInfo
,
ResolvedCall
Impl
<?
extends
CallableDescriptor
>
resolvedCall
,
StringBuilder
result
)
{
private
void
renderResolutionLogForCall
(
Data
debugInfo
,
ResolvedCall
WithTrace
<?
extends
CallableDescriptor
>
resolvedCall
,
StringBuilder
result
)
{
result
.
append
(
"Trying to call "
).
append
(
resolvedCall
.
getCandidateDescriptor
()).
append
(
"\n"
);
StringBuilder
errors
=
debugInfo
.
getByKey
(
ERRORS
,
resolvedCall
);
if
(
errors
!=
null
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录