Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
731e3eba
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,体验更适合开发者的 AI 搜索 >>
提交
731e3eba
编写于
3月 24, 2021
作者:
V
Victor Petukhov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rename LV `ImprovementsAroundTypeEnhancement` into `TypeEnhancementImprovementsInStrictMode`
上级
df08ed2a
变更
31
隐藏空白更改
内联
并排
Showing
31 changed file
with
39 addition
and
39 deletion
+39
-39
compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt
...va/src/org/jetbrains/kotlin/frontend/java/di/injection.kt
+1
-1
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt
...ns/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt
+1
-1
compiler/testData/diagnostics/testsWithStdLib/java/checkEnhancedUpperBoundsWithEnabledImprovements.fir.kt
...va/checkEnhancedUpperBoundsWithEnabledImprovements.fir.kt
+1
-1
compiler/testData/diagnostics/testsWithStdLib/java/checkEnhancedUpperBoundsWithEnabledImprovements.kt
...b/java/checkEnhancedUpperBoundsWithEnabledImprovements.kt
+1
-1
compiler/testData/foreignAnnotations/java8Tests/typeEnhancementOnCompiledJava/ClassTypeParameterBound.kt
.../typeEnhancementOnCompiledJava/ClassTypeParameterBound.kt
+1
-1
compiler/testData/foreignAnnotations/java8Tests/typeEnhancementOnCompiledJava/ReturnType.kt
...ns/java8Tests/typeEnhancementOnCompiledJava/ReturnType.kt
+1
-1
compiler/testData/foreignAnnotations/java8Tests/typeEnhancementOnCompiledJava/ValueParameter.kt
...ava8Tests/typeEnhancementOnCompiledJava/ValueParameter.kt
+1
-1
compiler/testData/loadJava8/compiledJava/typeParameterAnnotations/Basic.java
...oadJava8/compiledJava/typeParameterAnnotations/Basic.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeParameterAnnotations/Basic_DisabledImprovements.java
.../typeParameterAnnotations/Basic_DisabledImprovements.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/BaseClassTypeArguments.java
...mpiledJava/typeUseAnnotations/BaseClassTypeArguments.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/Basic.java
...Data/loadJava8/compiledJava/typeUseAnnotations/Basic.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/Basic_DisabledImprovements.java
...edJava/typeUseAnnotations/Basic_DisabledImprovements.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/ClassTypeParameterBounds.java
...iledJava/typeUseAnnotations/ClassTypeParameterBounds.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/MethodReceiver.java
...Java8/compiledJava/typeUseAnnotations/MethodReceiver.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/MethodTypeParameterBounds.java
...ledJava/typeUseAnnotations/MethodTypeParameterBounds.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/ReturnType.java
...loadJava8/compiledJava/typeUseAnnotations/ReturnType.java
+1
-1
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/ValueArguments.java
...Java8/compiledJava/typeUseAnnotations/ValueArguments.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeParameterAnnotations/Basic.java
.../loadJava8/sourceJava/typeParameterAnnotations/Basic.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeParameterAnnotations/Basic_DisabledImprovements.java
.../typeParameterAnnotations/Basic_DisabledImprovements.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/BaseClassTypeArguments.java
...sourceJava/typeUseAnnotations/BaseClassTypeArguments.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/Basic.java
...stData/loadJava8/sourceJava/typeUseAnnotations/Basic.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/Basic_DisabledImprovements.java
...ceJava/typeUseAnnotations/Basic_DisabledImprovements.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/ClassTypeParameterBounds.java
...urceJava/typeUseAnnotations/ClassTypeParameterBounds.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/MethodReceiver.java
...adJava8/sourceJava/typeUseAnnotations/MethodReceiver.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/MethodTypeParameterBounds.java
...rceJava/typeUseAnnotations/MethodTypeParameterBounds.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/ReturnType.java
...a/loadJava8/sourceJava/typeUseAnnotations/ReturnType.java
+1
-1
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/ValueArguments.java
...adJava8/sourceJava/typeUseAnnotations/ValueArguments.java
+1
-1
compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt
...rc/org/jetbrains/kotlin/config/LanguageVersionSettings.kt
+1
-1
core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/context.kt
...rs.jvm/src/org/jetbrains/kotlin/load/java/lazy/context.kt
+6
-6
core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt
...lin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt
+2
-2
core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt
.../kotlin/load/java/typeEnhancement/signatureEnhancement.kt
+3
-3
未找到文件。
compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt
浏览文件 @
731e3eba
...
...
@@ -141,7 +141,7 @@ fun StorageComponentContainer.configureJavaSpecificComponents(
JavaResolverSettings
.
create
(
isReleaseCoroutines
=
languageVersionSettings
.
supportsFeature
(
LanguageFeature
.
ReleaseCoroutines
),
correctNullabilityForNotNullTypeParameter
=
languageVersionSettings
.
supportsFeature
(
LanguageFeature
.
ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
),
typeEnhancementImprovements
=
languageVersionSettings
.
supportsFeature
(
LanguageFeature
.
ImprovementsAroundTypeEnhancement
)
typeEnhancementImprovements
InStrictMode
=
languageVersionSettings
.
supportsFeature
(
LanguageFeature
.
TypeEnhancementImprovementsInStrictMode
)
)
)
...
...
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt
浏览文件 @
731e3eba
...
...
@@ -96,7 +96,7 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase(
)
{
override
fun
configureModuleComponents
(
container
:
StorageComponentContainer
,
languageVersionSettings
:
LanguageVersionSettings
)
{
container
.
useImplIf
<
WarningAwareUpperBoundChecker
>(
!
languageVersionSettings
.
supportsFeature
(
LanguageFeature
.
ImprovementsAroundTypeEnhancement
)
!
languageVersionSettings
.
supportsFeature
(
LanguageFeature
.
TypeEnhancementImprovementsInStrictMode
)
)
container
.
useImpl
<
JavaNullabilityChecker
>()
...
...
compiler/testData/diagnostics/testsWithStdLib/java/checkEnhancedUpperBoundsWithEnabledImprovements.fir.kt
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// FULL_JDK
...
...
compiler/testData/diagnostics/testsWithStdLib/java/checkEnhancedUpperBoundsWithEnabledImprovements.kt
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// FULL_JDK
...
...
compiler/testData/foreignAnnotations/java8Tests/typeEnhancementOnCompiledJava/ClassTypeParameterBound.kt
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
+ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
+ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// SKIP_TXT
...
...
compiler/testData/foreignAnnotations/java8Tests/typeEnhancementOnCompiledJava/ReturnType.kt
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
+ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
+ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
...
...
compiler/testData/foreignAnnotations/java8Tests/typeEnhancementOnCompiledJava/ValueParameter.kt
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
+ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
+ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !DIAGNOSTICS: -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS
// SKIP_TXT
...
...
compiler/testData/loadJava8/compiledJava/typeParameterAnnotations/Basic.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeParameterAnnotations/Basic_DisabledImprovements.java
浏览文件 @
731e3eba
// !LANGUAGE: -
ImprovementsAroundTypeEnhancement
// !LANGUAGE: -
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/BaseClassTypeArguments.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/Basic.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/Basic_DisabledImprovements.java
浏览文件 @
731e3eba
// !LANGUAGE: -
ImprovementsAroundTypeEnhancement
// !LANGUAGE: -
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/ClassTypeParameterBounds.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/MethodReceiver.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/MethodTypeParameterBounds.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/ReturnType.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/compiledJava/typeUseAnnotations/ValueArguments.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeParameterAnnotations/Basic.java
浏览文件 @
731e3eba
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeParameterAnnotations/Basic_DisabledImprovements.java
浏览文件 @
731e3eba
// !LANGUAGE: -
ImprovementsAroundTypeEnhancement
// !LANGUAGE: -
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/BaseClassTypeArguments.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/Basic.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/Basic_DisabledImprovements.java
浏览文件 @
731e3eba
// !LANGUAGE: -
ImprovementsAroundTypeEnhancement
// !LANGUAGE: -
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/ClassTypeParameterBounds.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/MethodReceiver.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/MethodTypeParameterBounds.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/ReturnType.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/testData/loadJava8/sourceJava/typeUseAnnotations/ValueArguments.java
浏览文件 @
731e3eba
// JAVAC_EXPECTED_FILE
// !LANGUAGE: +
ImprovementsAroundTypeEnhancement
// !LANGUAGE: +
TypeEnhancementImprovementsInStrictMode
package
test
;
...
...
compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt
浏览文件 @
731e3eba
...
...
@@ -161,7 +161,7 @@ enum class LanguageFeature(
* - preference of a type use annotation to annotation of another type: KT-24392
* (if @NotNull has TYPE_USE and METHOD target, then `@NotNull Integer []` -> `Array<Int>..Array<out Int>?` instead of `Array<Int>..Array<out Int>`)
*/
ImprovementsAroundTypeEnhancement
(
KOTLIN_1_6
),
TypeEnhancementImprovementsInStrictMode
(
KOTLIN_1_6
),
// Temporarily disabled, see KT-27084/KT-22379
SoundSmartcastFromLoopConditionForLoopAssignedVariables
(
sinceVersion
=
null
,
kind
=
BUG_FIX
),
...
...
core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/context.kt
浏览文件 @
731e3eba
...
...
@@ -81,7 +81,7 @@ class JavaResolverComponents(
interface
JavaResolverSettings
{
val
isReleaseCoroutines
:
Boolean
val
correctNullabilityForNotNullTypeParameter
:
Boolean
val
typeEnhancementImprovements
:
Boolean
val
typeEnhancementImprovements
InStrictMode
:
Boolean
object
Default
:
JavaResolverSettings
{
override
val
isReleaseCoroutines
:
Boolean
...
...
@@ -90,7 +90,7 @@ interface JavaResolverSettings {
override
val
correctNullabilityForNotNullTypeParameter
:
Boolean
get
()
=
false
override
val
typeEnhancementImprovements
:
Boolean
override
val
typeEnhancementImprovements
InStrictMode
:
Boolean
get
()
=
false
}
...
...
@@ -98,12 +98,12 @@ interface JavaResolverSettings {
fun
create
(
isReleaseCoroutines
:
Boolean
,
correctNullabilityForNotNullTypeParameter
:
Boolean
,
typeEnhancementImprovements
:
Boolean
typeEnhancementImprovements
InStrictMode
:
Boolean
):
JavaResolverSettings
=
object
:
JavaResolverSettings
{
override
val
isReleaseCoroutines
get
()
=
isReleaseCoroutines
override
val
correctNullabilityForNotNullTypeParameter
get
()
=
correctNullabilityForNotNullTypeParameter
override
val
typeEnhancementImprovements
get
()
=
typeEnhancementImprovements
override
val
typeEnhancementImprovements
InStrictMode
get
()
=
typeEnhancementImprovementsInStrictMode
}
}
}
...
...
@@ -175,10 +175,10 @@ private fun LazyJavaResolverContext.extractDefaultNullabilityQualifier(
return
null
}
val
areImprovements
Enabled
=
components
.
settings
.
typeEnhancementImprovements
val
areImprovements
InStrictMode
=
components
.
settings
.
typeEnhancementImprovementsInStrictMode
val
nullabilityQualifier
=
components
.
signatureEnhancement
.
extractNullability
(
typeQualifier
,
areImprovements
Enabled
,
typeParameterBounds
=
false
)
components
.
signatureEnhancement
.
extractNullability
(
typeQualifier
,
areImprovements
InStrictMode
,
typeParameterBounds
=
false
)
?.
copy
(
isForWarningOnly
=
jsr305State
.
isWarning
)
?:
return
null
return
JavaDefaultQualifiers
(
nullabilityQualifier
,
applicability
)
...
...
core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt
浏览文件 @
731e3eba
...
...
@@ -208,8 +208,8 @@ class LazyJavaClassDescriptor(
for
(
javaType
in
javaTypes
)
{
val
kotlinType
=
c
.
typeResolver
.
transformJavaType
(
javaType
,
TypeUsage
.
SUPERTYPE
.
toAttributes
())
val
areImprovements
Enabled
=
c
.
components
.
settings
.
typeEnhancementImprovements
val
enhancedKotlinType
=
if
(
areImprovements
Enabled
)
{
val
areImprovements
InStrictMode
=
c
.
components
.
settings
.
typeEnhancementImprovementsInStrictMode
val
enhancedKotlinType
=
if
(
areImprovements
InStrictMode
)
{
c
.
components
.
signatureEnhancement
.
enhanceSuperType
(
kotlinType
,
c
)
}
else
kotlinType
...
...
core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt
浏览文件 @
731e3eba
...
...
@@ -320,10 +320,10 @@ class SignatureEnhancement(
typeParameterForArgument
:
TypeParameterDescriptor
?,
isFromStarProjection
:
Boolean
):
JavaTypeQualifiers
{
val
areImprovements
Enabled
=
containerContext
.
components
.
settings
.
typeEnhancementImprovements
val
areImprovements
InStrictMode
=
containerContext
.
components
.
settings
.
typeEnhancementImprovementsInStrictMode
val
composedAnnotation
=
if
(
isHeadTypeConstructor
&&
typeContainer
!=
null
&&
typeContainer
!
is
TypeParameterDescriptor
&&
areImprovements
Enabled
)
{
if
(
isHeadTypeConstructor
&&
typeContainer
!=
null
&&
typeContainer
!
is
TypeParameterDescriptor
&&
areImprovements
InStrictMode
)
{
val
filteredContainerAnnotations
=
typeContainer
.
annotations
.
filter
{
val
(
_
,
targets
)
=
annotationTypeQualifierResolver
.
resolveAnnotation
(
it
)
?:
return
@filter
false
/*
...
...
@@ -357,7 +357,7 @@ class SignatureEnhancement(
val
(
nullabilityFromBoundsForTypeBasedOnTypeParameter
,
isTypeParameterWithNotNullableBounds
)
=
nullabilityInfoBoundsForTypeParameterUsage
()
val
annotationsNullability
=
composedAnnotation
.
extractNullability
(
areImprovements
Enabled
,
typeParameterBounds
)
val
annotationsNullability
=
composedAnnotation
.
extractNullability
(
areImprovements
InStrictMode
,
typeParameterBounds
)
?.
takeUnless
{
isFromStarProjection
}
val
nullabilityInfo
=
annotationsNullability
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录