Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
03e1e5de
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,发现更多精彩内容 >>
提交
03e1e5de
编写于
11月 01, 2011
作者:
S
svtk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rename
上级
a3ef9f9b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
21 deletion
+21
-21
compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java
...rg/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java
+21
-21
未找到文件。
compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java
浏览文件 @
03e1e5de
...
...
@@ -304,8 +304,8 @@ public class JetFlowInformationProvider {
Collection
<
VariableDescriptor
>
declaredVariables
=
collectDeclaredVariables
(
subroutine
);
Map
<
VariableDescriptor
,
InitializationPoints
>
initialMapForStartInstruction
=
Maps
.
newHashMap
();
InitializationPoints
initialPointsForDeclaredVariable
=
new
InitializationPoints
(
tru
e
);
InitializationPoints
initialPointsForExternalVariable
=
new
InitializationPoints
(
fals
e
);
InitializationPoints
initialPointsForDeclaredVariable
=
new
InitializationPoints
(
fals
e
);
InitializationPoints
initialPointsForExternalVariable
=
new
InitializationPoints
(
tru
e
);
for
(
VariableDescriptor
variable
:
usedVariables
)
{
if
(
declaredVariables
.
contains
(
variable
))
{
...
...
@@ -337,13 +337,13 @@ public class JetFlowInformationProvider {
InitializationPoints
exitInitializationPoints
=
exitData
.
get
(
variableDescriptor
);
assert
exitInitializationPoints
!=
null
;
boolean
canBeUnitialized
=
exitInitializationPoints
.
canBeUni
nitialized
();
boolean
isInitialized
=
exitInitializationPoints
.
isI
nitialized
();
if
(
variableDescriptor
instanceof
PropertyDescriptor
)
{
if
(!
trace
.
get
(
BindingContext
.
BACKING_FIELD_REQUIRED
,
(
PropertyDescriptor
)
variableDescriptor
))
{
canBeUnitialized
=
fals
e
;
isInitialized
=
tru
e
;
}
}
if
(
canBeU
nitialized
)
{
if
(
!
isI
nitialized
)
{
trace
.
report
(
Errors
.
UNINITIALIZED_VARIABLE
.
on
((
JetSimpleNameExpression
)
element
,
variableDescriptor
));
}
}
...
...
@@ -357,19 +357,19 @@ public class JetFlowInformationProvider {
InitializationPoints
exitInitializationPoints
=
exitData
.
get
(
variableDescriptor
);
assert
exitInitializationPoints
!=
null
;
Set
<
JetElement
>
possiblePoints
=
enterInitializationPoints
.
getPossiblePoints
();
boolean
has
AnotherInitializer
=
!
possiblePoints
.
isEmpty
()
||
!
enterInitializationPoints
.
canBeUninitialized
;
boolean
has
Initializer
=
!
possiblePoints
.
isEmpty
()
||
enterInitializationPoints
.
isInitialized
()
;
if
(
possiblePoints
.
size
()
==
1
)
{
JetElement
initializer
=
possiblePoints
.
iterator
().
next
();
if
(
initializer
==
element
.
getParent
())
{
has
Another
Initializer
=
false
;
hasInitializer
=
false
;
}
}
JetSimpleNameExpression
expression
=
(
JetSimpleNameExpression
)
element
;
if
(
has
Another
Initializer
&&
!
variableDescriptor
.
isVar
())
{
if
(
hasInitializer
&&
!
variableDescriptor
.
isVar
())
{
trace
.
report
(
Errors
.
VAL_REASSIGNMENT
.
on
(
expression
,
variableDescriptor
));
}
if
(
inAnonymousInitializers
&&
variableDescriptor
instanceof
PropertyDescriptor
&&
enterInitializationPoints
.
canBeUninitialized
&&
!
exitInitializationPoints
.
canBeUninitialized
)
{
!
enterInitializationPoints
.
isInitialized
()
&&
exitInitializationPoints
.
isInitialized
()
)
{
if
(
expression
.
getReferencedNameElementType
()
!=
JetTokens
.
FIELD_IDENTIFIER
)
{
trace
.
report
(
Errors
.
INITIALIZATION_USING_BACKING_FIELD
.
on
(
expression
,
variableDescriptor
));
}
...
...
@@ -385,7 +385,7 @@ public class JetFlowInformationProvider {
VariableDescriptor
variable
=
entry
.
getKey
();
if
(
variable
instanceof
PropertyDescriptor
)
{
InitializationPoints
initializationPoints
=
entry
.
getValue
();
trace
.
record
(
BindingContext
.
IS_INITIALIZED
,
(
PropertyDescriptor
)
variable
,
!
initializationPoints
.
canBeUninitialized
);
trace
.
record
(
BindingContext
.
IS_INITIALIZED
,
(
PropertyDescriptor
)
variable
,
initializationPoints
.
isInitialized
()
);
}
}
}
...
...
@@ -488,22 +488,22 @@ public class JetFlowInformationProvider {
private
static
class
InitializationPoints
{
private
Set
<
JetElement
>
possiblePoints
=
Sets
.
newHashSet
();
private
boolean
canBeUni
nitialized
;
private
boolean
isI
nitialized
;
public
InitializationPoints
(
boolean
canBeUni
nitialized
)
{
this
.
canBeUninitialized
=
canBeUni
nitialized
;
public
InitializationPoints
(
boolean
isI
nitialized
)
{
this
.
isInitialized
=
isI
nitialized
;
}
public
InitializationPoints
(
JetElement
element
)
{
canBeUninitialized
=
fals
e
;
isInitialized
=
tru
e
;
possiblePoints
.
add
(
element
);
}
public
InitializationPoints
(
Set
<
InitializationPoints
>
edgesData
)
{
canBeUninitialized
=
fals
e
;
isInitialized
=
tru
e
;
for
(
InitializationPoints
edgeData
:
edgesData
)
{
if
(
edgeData
.
canBeUni
nitialized
)
{
canBeUninitialized
=
tru
e
;
if
(
!
edgeData
.
isI
nitialized
)
{
isInitialized
=
fals
e
;
}
possiblePoints
.
addAll
(
edgeData
.
possiblePoints
);
}
...
...
@@ -513,8 +513,8 @@ public class JetFlowInformationProvider {
return
possiblePoints
;
}
public
boolean
canBeUni
nitialized
()
{
return
canBeUni
nitialized
;
public
boolean
isI
nitialized
()
{
return
isI
nitialized
;
}
@Override
...
...
@@ -524,7 +524,7 @@ public class JetFlowInformationProvider {
InitializationPoints
that
=
(
InitializationPoints
)
o
;
if
(
canBeUninitialized
!=
that
.
canBeUni
nitialized
)
return
false
;
if
(
isInitialized
!=
that
.
isI
nitialized
)
return
false
;
if
(
possiblePoints
!=
null
?
!
possiblePoints
.
equals
(
that
.
possiblePoints
)
:
that
.
possiblePoints
!=
null
)
{
return
false
;
}
...
...
@@ -535,7 +535,7 @@ public class JetFlowInformationProvider {
@Override
public
int
hashCode
()
{
int
result
=
possiblePoints
!=
null
?
possiblePoints
.
hashCode
()
:
0
;
result
=
31
*
result
+
(
canBeUni
nitialized
?
1
:
0
);
result
=
31
*
result
+
(
isI
nitialized
?
1
:
0
);
return
result
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录