Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
bea37569
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,发现更多精彩内容 >>
提交
bea37569
编写于
6月 09, 2020
作者:
D
Denis Zharkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
FIR: Fix processOverriddenFunctions implementations
上级
28627e97
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
98 addition
and
4 deletion
+98
-4
compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorsComplex.kt
...tests/testData/resolve/properties/javaAccessorsComplex.kt
+38
-0
compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorsComplex.txt
...ests/testData/resolve/properties/javaAccessorsComplex.txt
+33
-0
compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java
...org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java
+5
-0
compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java
.../kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java
+5
-0
compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt
...brains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt
+16
-3
compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirTypeScope.kt
.../tree/src/org/jetbrains/kotlin/fir/scopes/FirTypeScope.kt
+1
-1
未找到文件。
compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorsComplex.kt
0 → 100644
浏览文件 @
bea37569
// FILE: JA.java
public
interface
JA
<
E
>
{
public
E
getFoo
();
}
// FILE: main.kt
interface
KB
<
F
>
{
override
fun
getFoo
():
F
override
fun
getBar
():
F
}
interface
D1
:
JA
<
String
>,
KB
<
String
>
interface
E1
:
D1
{
override
fun
getFoo
():
String
override
fun
getBar
():
String
}
interface
D2
:
KB
<
String
>,
JA
<
String
>
interface
E2
:
D2
{
override
fun
getFoo
():
String
override
fun
getBar
():
String
}
fun
main
(
d1
:
D1
,
e1
:
E1
,
d2
:
D2
,
e2
:
E2
,
)
{
d1
.
foo
d1
.<!
UNRESOLVED_REFERENCE
!>
bar
<!>
e1
.
foo
e1
.<!
UNRESOLVED_REFERENCE
!>
bar
<!>
d2
.
foo
d2
.<!
UNRESOLVED_REFERENCE
!>
bar
<!>
e2
.
foo
e2
.<!
UNRESOLVED_REFERENCE
!>
bar
<!>
}
compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorsComplex.txt
0 → 100644
浏览文件 @
bea37569
FILE: main.kt
public abstract interface KB<F> : R|kotlin/Any| {
public abstract override fun getFoo(): R|F|
public abstract override fun getBar(): R|F|
}
public abstract interface D1 : R|JA<kotlin/String>|, R|KB<kotlin/String>| {
}
public abstract interface E1 : R|D1| {
public abstract override fun getFoo(): R|kotlin/String|
public abstract override fun getBar(): R|kotlin/String|
}
public abstract interface D2 : R|KB<kotlin/String>|, R|JA<kotlin/String>| {
}
public abstract interface E2 : R|D2| {
public abstract override fun getFoo(): R|kotlin/String|
public abstract override fun getBar(): R|kotlin/String|
}
public final fun main(d1: R|D1|, e1: R|E1|, d2: R|D2|, e2: R|E2|): R|kotlin/Unit| {
R|<local>/d1|.R|/D1.foo|
R|<local>/d1|.<Unresolved name: bar>#
R|<local>/e1|.R|/E1.foo|
R|<local>/e1|.<Unresolved name: bar>#
R|<local>/d2|.R|/D2.foo|
R|<local>/d2|.<Unresolved name: bar>#
R|<local>/e2|.R|/E2.foo|
R|<local>/e2|.<Unresolved name: bar>#
}
compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java
浏览文件 @
bea37569
...
...
@@ -1732,6 +1732,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest {
runTest
(
"compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorConversion.kt"
);
}
@TestMetadata
(
"javaAccessorsComplex.kt"
)
public
void
testJavaAccessorsComplex
()
throws
Exception
{
runTest
(
"compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorsComplex.kt"
);
}
@TestMetadata
(
"noBackingFieldForExtension.kt"
)
public
void
testNoBackingFieldForExtension
()
throws
Exception
{
runTest
(
"compiler/fir/analysis-tests/testData/resolve/properties/noBackingFieldForExtension.kt"
);
...
...
compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java
浏览文件 @
bea37569
...
...
@@ -1732,6 +1732,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos
runTest
(
"compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorConversion.kt"
);
}
@TestMetadata
(
"javaAccessorsComplex.kt"
)
public
void
testJavaAccessorsComplex
()
throws
Exception
{
runTest
(
"compiler/fir/analysis-tests/testData/resolve/properties/javaAccessorsComplex.kt"
);
}
@TestMetadata
(
"noBackingFieldForExtension.kt"
)
public
void
testNoBackingFieldForExtension
()
throws
Exception
{
runTest
(
"compiler/fir/analysis-tests/testData/resolve/properties/noBackingFieldForExtension.kt"
);
...
...
compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt
浏览文件 @
bea37569
...
...
@@ -41,6 +41,8 @@ class FirTypeIntersectionScope private constructor(
private
val
typeContext
=
ConeTypeCheckerContext
(
isErrorTypeEqualsToAnything
=
false
,
isStubTypeEqualsToAnything
=
false
,
session
)
private
val
overriddenSymbols
=
mutableMapOf
<
FirCallableSymbol
<
*
>,
Collection
<
FirCallableSymbol
<
*
>>>()
override
fun
processFunctionsByName
(
name
:
Name
,
processor
:
(
FirFunctionSymbol
<
*
>)
->
Unit
)
{
if
(!
processCallablesByName
(
name
,
processor
,
absentFunctions
,
FirScope
::
processFunctionsByName
))
{
super
.
processFunctionsByName
(
name
,
processor
)
...
...
@@ -81,9 +83,11 @@ class FirTypeIntersectionScope private constructor(
membersByScope
.
singleOrNull
()
?.
let
{
members
->
for
(
member
in
members
)
{
overriddenSymbols
[
member
]
=
listOf
(
member
)
processor
(
member
)
}
return
false
}
...
...
@@ -94,7 +98,7 @@ class FirTypeIntersectionScope private constructor(
val
extractedOverrides
=
extractBothWaysOverridable
(
maxByVisibility
,
allMembers
)
val
mostSpecific
=
selectMostSpecificMember
(
extractedOverrides
)
overriddenSymbols
[
mostSpecific
]
=
extractedOverrides
processor
(
mostSpecific
)
}
...
...
@@ -245,8 +249,17 @@ class FirTypeIntersectionScope private constructor(
functionSymbol
:
FirFunctionSymbol
<
*
>,
processor
:
(
FirFunctionSymbol
<
*
>)
->
ProcessorAction
):
ProcessorAction
{
for
(
scope
in
scopes
)
{
if
(!
scope
.
processOverriddenFunctions
(
functionSymbol
,
processor
))
return
ProcessorAction
.
STOP
@Suppress
(
"UNCHECKED_CAST"
)
val
directOverriddenSymbols
=
overriddenSymbols
[
functionSymbol
]
as
Collection
<
FirFunctionSymbol
<
*
>>?
?:
return
ProcessorAction
.
NEXT
for
(
directOverridden
in
directOverriddenSymbols
)
{
// TODO: Preserve the scope where directOverridden came from
for
(
scope
in
scopes
)
{
if
(!
processor
(
directOverridden
))
return
ProcessorAction
.
STOP
if
(!
scope
.
processOverriddenFunctions
(
directOverridden
,
processor
))
return
ProcessorAction
.
STOP
}
}
return
ProcessorAction
.
NEXT
...
...
compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirTypeScope.kt
浏览文件 @
bea37569
...
...
@@ -34,6 +34,6 @@ abstract class FirTypeScope : FirScope() {
if
(!
baseScope
.
processOverriddenFunctions
(
overridden
,
processor
))
return
ProcessorAction
.
STOP
}
return
ProcessorAction
.
NEXT
return
baseScope
.
processOverriddenFunctions
(
functionSymbol
,
processor
)
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录