Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
c870eccc
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,发现更多精彩内容 >>
提交
c870eccc
编写于
3月 13, 2012
作者:
A
Alex Tkachman
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix for KT-1515 wrong loading of annotations
上级
6b26d1ca
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
50 addition
and
14 deletion
+50
-14
compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java
...kend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java
+2
-1
compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java
...rg/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java
+6
-3
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+28
-7
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kt/PsiAnnotationUtils.java
...etbrains/jet/lang/resolve/java/kt/PsiAnnotationUtils.java
+3
-0
compiler/testData/codegen/regressions/kt1515.kt
compiler/testData/codegen/regressions/kt1515.kt
+4
-0
compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java
compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java
+4
-0
libraries/testlib/test/JavaClassTest.kt
libraries/testlib/test/JavaClassTest.kt
+2
-2
libraries/testlib/test/language/JavaClassTest.kt
libraries/testlib/test/language/JavaClassTest.kt
+1
-1
未找到文件。
compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java
浏览文件 @
c870eccc
...
...
@@ -81,7 +81,8 @@ public abstract class AnnotationCodegen {
CompileTimeConstant
<?>
compileTimeConstant
=
bindingContext
.
get
(
BindingContext
.
COMPILE_TIME_VALUE
,
valueArguments
.
get
(
0
));
assert
compileTimeConstant
!=
null
;
annotationVisitor
.
visit
(
entry
.
getKey
().
getName
(),
compileTimeConstant
.
getValue
());
Object
value
=
compileTimeConstant
.
getValue
();
annotationVisitor
.
visit
(
entry
.
getKey
().
getName
(),
value
);
}
annotationVisitor
.
visitEnd
();
...
...
compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java
浏览文件 @
c870eccc
...
...
@@ -72,8 +72,8 @@ public class IntrinsicMethods {
myProject
=
project
;
myStdLib
=
stdlib
;
namedMethods
.
put
(
"
\"kotlin.javaClass.function\"
"
,
new
JavaClassFunction
());
namedMethods
.
put
(
"
\"kotlin.javaClass.property\"
"
,
new
JavaClassProperty
());
namedMethods
.
put
(
"
kotlin.javaClass.function
"
,
new
JavaClassFunction
());
namedMethods
.
put
(
"
kotlin.javaClass.property
"
,
new
JavaClassProperty
());
List
<
String
>
primitiveCastMethods
=
OperatorConventions
.
NUMBER_CONVERSIONS
.
asList
();
for
(
String
method
:
primitiveCastMethods
)
{
...
...
@@ -246,7 +246,10 @@ public class IntrinsicMethods {
if
(
annotations
!=
null
)
{
for
(
AnnotationDescriptor
annotation
:
annotations
)
{
if
(
"Intrinsic"
.
equals
(
annotation
.
getType
().
getConstructor
().
getDeclarationDescriptor
().
getName
()))
{
intrinsicMethod
=
namedMethods
.
get
(
annotation
.
getValueArguments
().
get
(
0
).
getValue
());
Object
value
=
annotation
.
getValueArguments
().
get
(
0
).
getValue
();
intrinsicMethod
=
namedMethods
.
get
(
value
);
if
(
intrinsicMethod
!=
null
)
break
;
}
}
}
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
c870eccc
...
...
@@ -1522,13 +1522,34 @@ public class JavaDescriptorResolver {
}
annotation
.
setAnnotationType
(
clazz
.
getDefaultType
());
ArrayList
<
CompileTimeConstant
<?>>
valueArguments
=
new
ArrayList
<
CompileTimeConstant
<?>>();
if
(
"jet.runtime.Intrinsic"
.
equals
(
psiAnnotation
.
getQualifiedName
()))
{
// temporary hack
valueArguments
.
add
(
new
StringValue
(
psiAnnotation
.
findAttributeValue
(
"value"
).
getText
()));
annotation
.
setValueArguments
(
valueArguments
);
// TODO
}
else
annotation
.
setValueArguments
(
valueArguments
);
// TODO
PsiAnnotationParameterList
parameterList
=
psiAnnotation
.
getParameterList
();
for
(
PsiNameValuePair
psiNameValuePair
:
parameterList
.
getAttributes
())
{
PsiAnnotationMemberValue
value
=
psiNameValuePair
.
getValue
();
// todo
assert
value
instanceof
PsiLiteralExpression
;
Object
literalValue
=
((
PsiLiteralExpression
)
value
).
getValue
();
if
(
literalValue
instanceof
String
)
valueArguments
.
add
(
new
StringValue
((
String
)
literalValue
));
else
if
(
literalValue
instanceof
Byte
)
valueArguments
.
add
(
new
ByteValue
((
Byte
)
literalValue
));
else
if
(
literalValue
instanceof
Short
)
valueArguments
.
add
(
new
ShortValue
((
Short
)
literalValue
));
else
if
(
literalValue
instanceof
Character
)
valueArguments
.
add
(
new
CharValue
((
Character
)
literalValue
));
else
if
(
literalValue
instanceof
Integer
)
valueArguments
.
add
(
new
IntValue
((
Integer
)
literalValue
));
else
if
(
literalValue
instanceof
Long
)
valueArguments
.
add
(
new
LongValue
((
Long
)
literalValue
));
else
if
(
literalValue
instanceof
Float
)
valueArguments
.
add
(
new
FloatValue
((
Float
)
literalValue
));
else
if
(
literalValue
instanceof
Double
)
valueArguments
.
add
(
new
DoubleValue
((
Double
)
literalValue
));
else
if
(
literalValue
==
null
)
valueArguments
.
add
(
NullValue
.
NULL
);
}
annotation
.
setValueArguments
(
valueArguments
);
// TODO
return
annotation
;
}
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kt/PsiAnnotationUtils.java
浏览文件 @
c870eccc
...
...
@@ -27,6 +27,9 @@ import org.jetbrains.annotations.Nullable;
*/
public
class
PsiAnnotationUtils
{
private
PsiAnnotationUtils
()
{
}
@NotNull
public
static
String
getStringAttribute
(
@Nullable
PsiAnnotation
annotation
,
@NotNull
String
field
,
@NotNull
String
defaultValue
)
{
return
getAttribute
(
annotation
,
field
,
defaultValue
);
...
...
compiler/testData/codegen/regressions/kt1515.kt
0 → 100644
浏览文件 @
c870eccc
fun
box
():
String
{
val
c
=
javaClass
<
Runnable
>()
return
if
(
c
.
getName
().
sure
()
==
"java.lang.Runnable"
)
"OK"
else
"fail"
}
\ No newline at end of file
compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java
浏览文件 @
c870eccc
...
...
@@ -124,4 +124,8 @@ public class StdlibTest extends CodegenTestCase {
public
void
testKt1568
()
throws
Exception
{
blackBoxFile
(
"regressions/kt1568.kt"
);
}
public
void
testKt1515
()
throws
Exception
{
blackBoxFile
(
"regressions/kt1515.kt"
);
}
}
libraries/testlib/test/JavaClassTest.kt
浏览文件 @
c870eccc
...
...
@@ -8,7 +8,7 @@ class C()
class
JavaClassTest
()
:
TestCase
()
{
fun
testMe
()
{
assertEquals
(
"java.util.ArrayList"
,
java
.
util
.
ArrayList
<
Any
>().
javaClass
.
getName
())
//
assertEquals("java.util.ArrayList", javaClass<java.util.ArrayList<Any>>().getName())
//
assertEquals("testjc.C", javaClass<C>().getName())
assertEquals
(
"java.util.ArrayList"
,
javaClass
<
java
.
util
.
ArrayList
<
Any
>>().
getName
())
assertEquals
(
"testjc.C"
,
javaClass
<
C
>().
getName
())
}
}
\ No newline at end of file
libraries/testlib/test/language/JavaClassTest.kt
浏览文件 @
c870eccc
...
...
@@ -17,7 +17,7 @@ class JavaClassTest : TestCase() {
// TODO this function fails!
// see KT-1515
//
loadAsserter()
loadAsserter
()
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录