Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
5a16e435
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,发现更多精彩内容 >>
提交
5a16e435
编写于
10月 13, 2015
作者:
M
Mikhail Glukhikh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Synchronized is no more allowed on abstract functions
上级
ccf0c363
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
75 addition
and
0 deletion
+75
-0
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/declarationCheckers.kt
...brains/kotlin/resolve/jvm/checkers/declarationCheckers.kt
+15
-0
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java
...tlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java
+1
-0
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java
...g/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java
+1
-0
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt
...ns/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt
+1
-0
compiler/testData/diagnostics/testsWithStdLib/annotations/Synchronized.kt
...a/diagnostics/testsWithStdLib/annotations/Synchronized.kt
+23
-0
compiler/testData/diagnostics/testsWithStdLib/annotations/Synchronized.txt
.../diagnostics/testsWithStdLib/annotations/Synchronized.txt
+22
-0
compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java
...otlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java
+6
-0
core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java
...ors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java
+6
-0
未找到文件。
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/declarationCheckers.kt
浏览文件 @
5a16e435
...
...
@@ -143,6 +143,21 @@ public class VolatileAnnotationChecker : DeclarationChecker {
}
}
public
class
SynchronizedAnnotationChecker
:
DeclarationChecker
{
override
fun
check
(
declaration
:
JetDeclaration
,
descriptor
:
DeclarationDescriptor
,
diagnosticHolder
:
DiagnosticSink
,
bindingContext
:
BindingContext
)
{
val
synchronizedAnnotation
=
DescriptorUtils
.
getSynchronizedAnnotation
(
descriptor
)
if
(
synchronizedAnnotation
!=
null
&&
descriptor
is
FunctionDescriptor
&&
descriptor
.
modality
==
Modality
.
ABSTRACT
)
{
val
annotationEntry
=
DescriptorToSourceUtils
.
getSourceFromAnnotation
(
synchronizedAnnotation
)
?:
return
diagnosticHolder
.
report
(
ErrorsJvm
.
SYNCHRONIZED_ON_ABSTRACT
.
on
(
annotationEntry
))
}
}
}
public
class
OverloadsAnnotationChecker
:
DeclarationChecker
{
override
fun
check
(
declaration
:
JetDeclaration
,
...
...
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java
浏览文件 @
5a16e435
...
...
@@ -54,6 +54,7 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension {
MAP
.
put
(
ErrorsJvm
.
INAPPLICABLE_JVM_NAME
,
"''JvmName'' annotation is not applicable to this declaration"
);
MAP
.
put
(
ErrorsJvm
.
ILLEGAL_JVM_NAME
,
"Illegal JVM name"
);
MAP
.
put
(
ErrorsJvm
.
VOLATILE_ON_VALUE
,
"''Volatile'' annotation cannot be used on immutable properties"
);
MAP
.
put
(
ErrorsJvm
.
SYNCHRONIZED_ON_ABSTRACT
,
"''Synchronized'' annotation cannot be used on abstract functions"
);
MAP
.
put
(
ErrorsJvm
.
EXTERNAL_DECLARATION_CANNOT_BE_ABSTRACT
,
"External declaration can not be abstract"
);
MAP
.
put
(
ErrorsJvm
.
EXTERNAL_DECLARATION_CANNOT_HAVE_BODY
,
"External declaration can not have a body"
);
MAP
.
put
(
ErrorsJvm
.
EXTERNAL_DECLARATION_IN_INTERFACE
,
"Members of interfaces can not be external"
);
...
...
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java
浏览文件 @
5a16e435
...
...
@@ -51,6 +51,7 @@ public interface ErrorsJvm {
DiagnosticFactory1
<
JetAnnotationEntry
,
String
>
INAPPLICABLE_JVM_FIELD
=
DiagnosticFactory1
.
create
(
ERROR
);
DiagnosticFactory0
<
JetAnnotationEntry
>
VOLATILE_ON_VALUE
=
DiagnosticFactory0
.
create
(
ERROR
);
DiagnosticFactory0
<
JetAnnotationEntry
>
SYNCHRONIZED_ON_ABSTRACT
=
DiagnosticFactory0
.
create
(
ERROR
);
DiagnosticFactory0
<
JetDeclaration
>
OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS
=
DiagnosticFactory0
.
create
(
WARNING
,
DECLARATION_SIGNATURE
);
DiagnosticFactory0
<
JetDeclaration
>
OVERLOADS_ABSTRACT
=
DiagnosticFactory0
.
create
(
ERROR
,
DECLARATION_SIGNATURE
);
...
...
compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt
浏览文件 @
5a16e435
...
...
@@ -32,6 +32,7 @@ public object JvmPlatformConfigurator : PlatformConfigurator(
PlatformStaticAnnotationChecker
(),
JvmNameAnnotationChecker
(),
VolatileAnnotationChecker
(),
SynchronizedAnnotationChecker
(),
LocalFunInlineChecker
(),
ReifiedTypeParameterAnnotationChecker
(),
NativeFunChecker
(),
...
...
compiler/testData/diagnostics/testsWithStdLib/annotations/Synchronized.kt
0 → 100644
浏览文件 @
5a16e435
import
kotlin.jvm.Synchronized
interface
My
{
<!
SYNCHRONIZED_ON_ABSTRACT
!>
@Synchronized
<!>
fun
foo
()
@Synchronized
fun
bar
()
=
1
@Synchronized
fun
baz
():
String
{
return
"abc"
}
}
abstract
class
Your
{
<!
SYNCHRONIZED_ON_ABSTRACT
!>
@Synchronized
<!>
abstract
fun
foo
()
@Synchronized
fun
bar
()
=
1
@Synchronized
open
fun
baz
():
String
{
return
"xyz"
}
}
@Synchronized
fun
gav
()
=
1
compiler/testData/diagnostics/testsWithStdLib/annotations/Synchronized.txt
0 → 100644
浏览文件 @
5a16e435
package
@kotlin.jvm.Synchronized() public fun gav(): kotlin.Int
public interface My {
@kotlin.jvm.Synchronized() public open fun bar(): kotlin.Int
@kotlin.jvm.Synchronized() public open fun baz(): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.jvm.Synchronized() public abstract fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class Your {
public constructor Your()
@kotlin.jvm.Synchronized() public final fun bar(): kotlin.Int
@kotlin.jvm.Synchronized() public open fun baz(): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.jvm.Synchronized() public abstract fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java
浏览文件 @
5a16e435
...
...
@@ -103,6 +103,12 @@ public class JetDiagnosticsTestWithStdLibGenerated extends AbstractJetDiagnostic
doTest
(
fileName
);
}
@TestMetadata
(
"Synchronized.kt"
)
public
void
testSynchronized
()
throws
Exception
{
String
fileName
=
JetTestUtils
.
navigationMetadata
(
"compiler/testData/diagnostics/testsWithStdLib/annotations/Synchronized.kt"
);
doTest
(
fileName
);
}
@TestMetadata
(
"targetuse.kt"
)
public
void
testTargetuse
()
throws
Exception
{
String
fileName
=
JetTestUtils
.
navigationMetadata
(
"compiler/testData/diagnostics/testsWithStdLib/annotations/targetuse.kt"
);
...
...
core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java
浏览文件 @
5a16e435
...
...
@@ -55,6 +55,7 @@ public class DescriptorUtils {
public
static
final
FqName
JVM_NAME
=
new
FqName
(
"kotlin.jvm.JvmName"
);
public
static
final
FqName
PLATFORM_NAME
=
new
FqName
(
"kotlin.platform.platformName"
);
public
static
final
FqName
VOLATILE
=
new
FqName
(
"kotlin.jvm.Volatile"
);
public
static
final
FqName
SYNCHRONIZED
=
new
FqName
(
"kotlin.jvm.Synchronized"
);
private
DescriptorUtils
()
{
}
...
...
@@ -611,6 +612,11 @@ public class DescriptorUtils {
return
annotated
.
getAnnotations
().
findAnnotation
(
VOLATILE
);
}
@Nullable
public
static
AnnotationDescriptor
getSynchronizedAnnotation
(
@NotNull
Annotated
annotated
)
{
return
annotated
.
getAnnotations
().
findAnnotation
(
SYNCHRONIZED
);
}
@NotNull
public
static
SourceFile
getContainingSourceFile
(
@NotNull
DeclarationDescriptor
descriptor
)
{
if
(
descriptor
instanceof
PropertySetterDescriptor
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录