Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
4ef1e111
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,发现更多精彩内容 >>
提交
4ef1e111
编写于
1月 28, 2021
作者:
J
Jinseong Jeon
提交者:
Dmitriy Novozhilov
2月 03, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
FIR LT: introduce positioning strategies for specific modifiers
上级
0dd5b945
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
74 addition
and
26 deletion
+74
-26
compiler/fir/analysis-tests/testData/resolve/diagnostics/conflictingProjection.kt
...sts/testData/resolve/diagnostics/conflictingProjection.kt
+18
-18
compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt
...rg/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt
+7
-7
compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt
...ir/analysis/diagnostics/LightTreePositioningStrategies.kt
+18
-0
compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/SourceElementPositioningStrategies.kt
...nalysis/diagnostics/SourceElementPositioningStrategies.kt
+30
-0
compiler/testData/diagnostics/tests/typealias/parameterRestrictions.fir.kt
.../diagnostics/tests/typealias/parameterRestrictions.fir.kt
+1
-1
未找到文件。
compiler/fir/analysis-tests/testData/resolve/diagnostics/conflictingProjection.kt
浏览文件 @
4ef1e111
...
...
@@ -18,37 +18,37 @@ typealias A1<K> = None<K>
typealias
A2
<
K
>
=
None
<
in
K
>
typealias
A3
<
K
>
=
None
<
out
K
>
typealias
A4
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
None
<
K
>
typealias
A5
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
None
<
in
K
>
typealias
A6
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
None
<
out
K
>
typealias
A4
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
None
<
K
>
typealias
A5
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
None
<
in
K
>
typealias
A6
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
None
<
out
K
>
typealias
A7
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
None
<
K
>
typealias
A8
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
None
<
in
K
>
typealias
A9
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
None
<
out
K
>
typealias
A7
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
None
<
K
>
typealias
A8
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
None
<
in
K
>
typealias
A9
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
None
<
out
K
>
typealias
A10
<
K
>
=
In
<
K
>
typealias
A11
<
K
>
=
In
<
in
K
>
typealias
A12
<
K
>
=
<!
CONFLICTING_PROJECTION
!>
In
<
out
K
><!>
typealias
A13
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
In
<
K
>
typealias
A14
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
In
<
in
K
>
typealias
A15
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
<!
CONFLICTING_PROJECTION
!>
In
<
out
K
><!>
typealias
A13
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
In
<
K
>
typealias
A14
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
In
<
in
K
>
typealias
A15
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
<!
CONFLICTING_PROJECTION
!>
In
<
out
K
><!>
typealias
A16
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
In
<
K
>
typealias
A17
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
In
<
in
K
>
typealias
A18
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
<!
CONFLICTING_PROJECTION
!>
In
<
out
K
><!>
typealias
A16
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
In
<
K
>
typealias
A17
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
In
<
in
K
>
typealias
A18
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
<!
CONFLICTING_PROJECTION
!>
In
<
out
K
><!>
typealias
A19
<
K
>
=
Out
<
K
>
typealias
A20
<
K
>
=
<!
CONFLICTING_PROJECTION
!>
Out
<
in
K
><!>
typealias
A21
<
K
>
=
Out
<
out
K
>
typealias
A22
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
Out
<
K
>
typealias
A23
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
<!
CONFLICTING_PROJECTION
!>
Out
<
in
K
><!>
typealias
A24
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
K
<
!
>
>
=
Out
<
out
K
>
typealias
A22
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
Out
<
K
>
typealias
A23
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
<!
CONFLICTING_PROJECTION
!>
Out
<
in
K
><!>
typealias
A24
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
K
>
=
Out
<
out
K
>
typealias
A25
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
Out
<
K
>
typealias
A26
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
<!
CONFLICTING_PROJECTION
!>
Out
<
in
K
><!>
typealias
A27
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
K
<
!
>
>
=
Out
<
out
K
>
typealias
A25
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
Out
<
K
>
typealias
A26
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
<!
CONFLICTING_PROJECTION
!>
Out
<
in
K
><!>
typealias
A27
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
K
>
=
Out
<
out
K
>
class
Outer
<
T
>
{
inner
class
Intermediate
<
K
>
{
...
...
compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt
浏览文件 @
4ef1e111
...
...
@@ -107,7 +107,7 @@ object FirErrors {
val
REDUNDANT_MODIFIER
by
error2
<
FirSourceElement
,
PsiElement
,
KtModifierKeywordToken
,
KtModifierKeywordToken
>()
val
DEPRECATED_MODIFIER_PAIR
by
error2
<
FirSourceElement
,
PsiElement
,
KtModifierKeywordToken
,
KtModifierKeywordToken
>()
val
INCOMPATIBLE_MODIFIERS
by
error2
<
FirSourceElement
,
PsiElement
,
KtModifierKeywordToken
,
KtModifierKeywordToken
>()
val
REDUNDANT_OPEN_IN_INTERFACE
by
warning0
<
FirSourceElement
,
KtModifierListOwner
>(
SourceElementPositioningStrategies
.
MODALITY
_MODIFIER
)
val
REDUNDANT_OPEN_IN_INTERFACE
by
warning0
<
FirSourceElement
,
KtModifierListOwner
>(
SourceElementPositioningStrategies
.
OPEN
_MODIFIER
)
// Applicability
val
NONE_APPLICABLE
by
error1
<
FirSourceElement
,
PsiElement
,
Collection
<
AbstractFirBasedSymbol
<
*
>>>()
...
...
@@ -131,7 +131,7 @@ object FirErrors {
val
ILLEGAL_PROJECTION_USAGE
by
error0
<
FirSourceElement
,
PsiElement
>()
val
TYPE_PARAMETERS_IN_ENUM
by
error0
<
FirSourceElement
,
PsiElement
>()
val
CONFLICTING_PROJECTION
by
error1
<
FirSourceElement
,
PsiElement
,
String
>()
val
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
by
error0
<
FirSourceElement
,
PsiElement
>(
)
val
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
by
error0
<
FirSourceElement
,
KtTypeParameter
>(
SourceElementPositioningStrategies
.
VARIANCE_MODIFIER
)
val
CATCH_PARAMETER_WITH_DEFAULT_VALUE
by
error0
<
FirSourceElement
,
PsiElement
>()
val
REIFIED_TYPE_IN_CATCH_CLAUSE
by
error0
<
FirSourceElement
,
PsiElement
>()
val
TYPE_PARAMETER_IN_CATCH_CLAUSE
by
error0
<
FirSourceElement
,
PsiElement
>()
...
...
@@ -152,10 +152,10 @@ object FirErrors {
val
LOCAL_INTERFACE_NOT_ALLOWED
by
error1
<
FirSourceElement
,
KtNamedDeclaration
,
Name
>(
SourceElementPositioningStrategies
.
DECLARATION_NAME
)
// Functions
val
ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS
by
error2
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
MODALITY
_MODIFIER
)
val
ABSTRACT_FUNCTION_WITH_BODY
by
error1
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
MODALITY
_MODIFIER
)
val
ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS
by
error2
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
ABSTRACT
_MODIFIER
)
val
ABSTRACT_FUNCTION_WITH_BODY
by
error1
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
ABSTRACT
_MODIFIER
)
val
NON_ABSTRACT_FUNCTION_WITH_NO_BODY
by
error1
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
DECLARATION_SIGNATURE
)
val
PRIVATE_FUNCTION_WITH_NO_BODY
by
error1
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
VISIBILITY
_MODIFIER
)
val
PRIVATE_FUNCTION_WITH_NO_BODY
by
error1
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
PRIVATE
_MODIFIER
)
val
NON_MEMBER_FUNCTION_NO_BODY
by
error1
<
FirSourceElement
,
KtFunction
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
DECLARATION_SIGNATURE
)
val
FUNCTION_DECLARATION_WITH_NO_NAME
by
error0
<
FirSourceElement
,
KtFunction
>(
SourceElementPositioningStrategies
.
DECLARATION_SIGNATURE
)
...
...
@@ -165,8 +165,8 @@ object FirErrors {
val
USELESS_VARARG_ON_PARAMETER
by
warning0
<
FirSourceElement
,
KtParameter
>()
// Properties & accessors
val
ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS
by
error2
<
FirSourceElement
,
KtModifierListOwner
,
FirMemberDeclaration
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
MODALITY
_MODIFIER
)
val
PRIVATE_PROPERTY_IN_INTERFACE
by
error0
<
FirSourceElement
,
KtProperty
>(
SourceElementPositioningStrategies
.
VISIBILITY
_MODIFIER
)
val
ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS
by
error2
<
FirSourceElement
,
KtModifierListOwner
,
FirMemberDeclaration
,
FirMemberDeclaration
>(
SourceElementPositioningStrategies
.
ABSTRACT
_MODIFIER
)
val
PRIVATE_PROPERTY_IN_INTERFACE
by
error0
<
FirSourceElement
,
KtProperty
>(
SourceElementPositioningStrategies
.
PRIVATE
_MODIFIER
)
val
ABSTRACT_PROPERTY_WITH_INITIALIZER
by
error0
<
FirSourceElement
,
KtExpression
>()
// TODO: val MUST_BE_INITIALIZED by error0<FirSourceElement, KtProperty>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE)
...
...
compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt
浏览文件 @
4ef1e111
...
...
@@ -262,6 +262,24 @@ object LightTreePositioningStrategies {
val
MODALITY_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
MODALITY_MODIFIERS
)
val
ABSTRACT_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
TokenSet
.
create
(
KtTokens
.
ABSTRACT_KEYWORD
))
val
OPEN_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
TokenSet
.
create
(
KtTokens
.
OPEN_KEYWORD
))
val
OVERRIDE_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
TokenSet
.
create
(
KtTokens
.
OVERRIDE_KEYWORD
))
val
PRIVATE_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
TokenSet
.
create
(
KtTokens
.
PRIVATE_KEYWORD
))
val
LATEINIT_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
TokenSet
.
create
(
KtTokens
.
LATEINIT_KEYWORD
))
val
VARIANCE_MODIFIER
:
LightTreePositioningStrategy
=
ModifierSetBasedLightTreePositioningStrategy
(
TokenSet
.
create
(
KtTokens
.
IN_KEYWORD
,
KtTokens
.
OUT_KEYWORD
))
val
OPERATOR
:
LightTreePositioningStrategy
=
object
:
LightTreePositioningStrategy
()
{
override
fun
mark
(
node
:
LighterASTNode
,
...
...
compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/SourceElementPositioningStrategies.kt
浏览文件 @
4ef1e111
...
...
@@ -53,6 +53,36 @@ object SourceElementPositioningStrategies {
PositioningStrategies
.
MODALITY_MODIFIER
)
val
ABSTRACT_MODIFIER
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
ABSTRACT_MODIFIER
,
PositioningStrategies
.
ABSTRACT_MODIFIER
)
val
OPEN_MODIFIER
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
OPEN_MODIFIER
,
PositioningStrategies
.
OPEN_MODIFIER
)
val
OVERRIDE_MODIFIER
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
OVERRIDE_MODIFIER
,
PositioningStrategies
.
OVERRIDE_MODIFIER
)
val
PRIVATE_MODIFIER
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
PRIVATE_MODIFIER
,
PositioningStrategies
.
PRIVATE_MODIFIER
)
val
LATEINIT_MODIFIER
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
LATEINIT_MODIFIER
,
PositioningStrategies
.
LATEINIT_MODIFIER
)
val
VARIANCE_MODIFIER
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
VARIANCE_MODIFIER
,
PositioningStrategies
.
VARIANCE_MODIFIER
)
val
OPERATOR
=
SourceElementPositioningStrategy
(
LightTreePositioningStrategies
.
OPERATOR
,
PositioningStrategies
.
OPERATOR
...
...
compiler/testData/diagnostics/tests/typealias/parameterRestrictions.fir.kt
浏览文件 @
4ef1e111
// !DIAGNOSTICS: -UNUSED_TYPEALIAS_PARAMETER
typealias
WithVariance
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
X
<
!
>,
<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
Y
<
!
>
>
=
Int
typealias
WithVariance
<<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
in
<
!
>
X
,
<
!
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
!
>
out
<
!
>
Y
>
=
Int
typealias
WithBounds1
<
T
:
T
>
=
Int
typealias
WithBounds2
<
X
:
Y
,
Y
:
X
>
=
Int
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录