Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
309b6b3e
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,发现更多精彩内容 >>
提交
309b6b3e
编写于
1月 24, 2012
作者:
S
Stepan Koltsov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix erased parameters codegen and parsing
上级
74575986
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
40 addition
and
15 deletion
+40
-15
compiler/backend/src/org/jetbrains/jet/codegen/BothSignatureWriter.java
...nd/src/org/jetbrains/jet/codegen/BothSignatureWriter.java
+2
-2
compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java
...ackend/src/org/jetbrains/jet/codegen/FunctionCodegen.java
+6
-0
compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java
.../backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java
+1
-1
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
...tbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
+8
-6
compiler/testData/readKotlinBinaryClass/constructor/ConstructorWithTypeParametersEAndOnePValueParameter.kt
...or/ConstructorWithTypeParametersEAndOnePValueParameter.kt
+3
-0
compiler/testData/readKotlinBinaryClass/fun/genericWithTypeVariables/FunParamParamErased.kt
...Class/fun/genericWithTypeVariables/FunParamParamErased.kt
+3
-0
stdlib/src/org/jetbrains/jet/rt/TypeInfoParser.java
stdlib/src/org/jetbrains/jet/rt/TypeInfoParser.java
+1
-1
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureAdapter.java
...c/org/jetbrains/jet/rt/signature/JetSignatureAdapter.java
+1
-1
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureExceptionsAdapter.java
...rains/jet/rt/signature/JetSignatureExceptionsAdapter.java
+1
-1
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureReader.java
...rc/org/jetbrains/jet/rt/signature/JetSignatureReader.java
+7
-1
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureVisitor.java
...c/org/jetbrains/jet/rt/signature/JetSignatureVisitor.java
+3
-1
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureWriter.java
...rc/org/jetbrains/jet/rt/signature/JetSignatureWriter.java
+4
-1
未找到文件。
compiler/backend/src/org/jetbrains/jet/codegen/BothSignatureWriter.java
浏览文件 @
309b6b3e
...
...
@@ -232,11 +232,11 @@ public class BothSignatureWriter {
writeAsmType0
(
asmType
);
}
public
void
writeFormalTypeParameter
(
final
String
name
,
Variance
variance
)
{
public
void
writeFormalTypeParameter
(
final
String
name
,
Variance
variance
,
boolean
reified
)
{
checkTopLevel
();
signatureVisitor
().
visitFormalTypeParameter
(
name
);
jetSignatureWriter
.
visitFormalTypeParameter
(
name
,
JetSignatureUtils
.
translateVariance
(
variance
));
jetSignatureWriter
.
visitFormalTypeParameter
(
name
,
JetSignatureUtils
.
translateVariance
(
variance
)
,
reified
);
generic
=
true
;
}
...
...
compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java
浏览文件 @
309b6b3e
...
...
@@ -130,6 +130,9 @@ public class FunctionCodegen {
av
.
visitEnd
();
}
for
(
final
TypeParameterDescriptor
typeParameterDescriptor
:
typeParameters
)
{
if
(!
typeParameterDescriptor
.
isReified
())
{
continue
;
}
AnnotationVisitor
av
=
mv
.
visitParameterAnnotation
(
start
++,
JvmStdlibNames
.
JET_TYPE_PARAMETER
.
getDescriptor
(),
true
);
av
.
visit
(
JvmStdlibNames
.
JET_TYPE_PARAMETER_NAME_FIELD
,
typeParameterDescriptor
.
getName
());
av
.
visitEnd
();
...
...
@@ -171,6 +174,9 @@ public class FunctionCodegen {
add
++;
for
(
final
TypeParameterDescriptor
typeParameterDescriptor
:
typeParameters
)
{
if
(!
typeParameterDescriptor
.
isReified
())
{
continue
;
}
int
slot
=
frameMap
.
enterTemp
();
add
++;
codegen
.
addTypeParameter
(
typeParameterDescriptor
,
StackValue
.
local
(
slot
,
JetTypeMapper
.
TYPE_TYPEINFO
));
...
...
compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java
浏览文件 @
309b6b3e
...
...
@@ -495,7 +495,7 @@ public class JetTypeMapper {
}
private
void
writeFormalTypeParameter
(
TypeParameterDescriptor
typeParameterDescriptor
,
BothSignatureWriter
signatureVisitor
)
{
signatureVisitor
.
writeFormalTypeParameter
(
typeParameterDescriptor
.
getName
(),
typeParameterDescriptor
.
getVariance
());
signatureVisitor
.
writeFormalTypeParameter
(
typeParameterDescriptor
.
getName
(),
typeParameterDescriptor
.
getVariance
()
,
typeParameterDescriptor
.
isReified
()
);
classBound:
{
...
...
compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java
浏览文件 @
309b6b3e
...
...
@@ -375,12 +375,13 @@ public class JavaDescriptorResolver {
private
final
DeclarationDescriptor
containingDeclaration
;
private
final
PsiTypeParameterListOwner
psiOwner
;
private
final
String
name
;
private
final
boolean
reified
;
private
final
int
index
;
private
final
TypeInfoVariance
variance
;
private
final
TypeVariableResolver
typeVariableResolver
;
protected
JetSignatureTypeParameterVisitor
(
DeclarationDescriptor
containingDeclaration
,
PsiTypeParameterListOwner
psiOwner
,
String
name
,
int
index
,
TypeInfoVariance
variance
,
TypeVariableResolver
typeVariableResolver
)
String
name
,
boolean
reified
,
int
index
,
TypeInfoVariance
variance
,
TypeVariableResolver
typeVariableResolver
)
{
if
(
name
.
isEmpty
())
{
throw
new
IllegalStateException
();
...
...
@@ -389,6 +390,7 @@ public class JavaDescriptorResolver {
this
.
containingDeclaration
=
containingDeclaration
;
this
.
psiOwner
=
psiOwner
;
this
.
name
=
name
;
this
.
reified
=
reified
;
this
.
index
=
index
;
this
.
variance
=
variance
;
this
.
typeVariableResolver
=
typeVariableResolver
;
...
...
@@ -425,7 +427,7 @@ public class JavaDescriptorResolver {
TypeParameterDescriptor
typeParameter
=
TypeParameterDescriptor
.
createForFurtherModification
(
containingDeclaration
,
Collections
.<
AnnotationDescriptor
>
emptyList
(),
// TODO: wrong
true
,
// TODO: wrong
reified
,
JetSignatureUtils
.
translateVariance
(
variance
),
name
,
index
);
...
...
@@ -462,8 +464,8 @@ public class JavaDescriptorResolver {
private
int
formalTypeParameterIndex
=
0
;
@Override
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
final
TypeInfoVariance
variance
)
{
return
new
JetSignatureTypeParameterVisitor
(
classDescriptor
,
clazz
,
name
,
formalTypeParameterIndex
++,
variance
,
new
MyTypeVariableResolver
())
{
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
final
TypeInfoVariance
variance
,
boolean
reified
)
{
return
new
JetSignatureTypeParameterVisitor
(
classDescriptor
,
clazz
,
name
,
reified
,
formalTypeParameterIndex
++,
variance
,
new
MyTypeVariableResolver
())
{
@Override
protected
void
done
(
TypeParameterDescriptor
typeParameterDescriptor
)
{
r
.
add
(
typeParameterDescriptor
);
...
...
@@ -1269,9 +1271,9 @@ public class JavaDescriptorResolver {
private
int
formalTypeParameterIndex
=
0
;
@Override
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
final
TypeInfoVariance
variance
)
{
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
final
TypeInfoVariance
variance
,
boolean
reified
)
{
return
new
JetSignatureTypeParameterVisitor
(
functionDescriptor
,
method
,
name
,
formalTypeParameterIndex
++,
variance
,
new
MyTypeVariableResolver
())
{
return
new
JetSignatureTypeParameterVisitor
(
functionDescriptor
,
method
,
name
,
reified
,
formalTypeParameterIndex
++,
variance
,
new
MyTypeVariableResolver
())
{
@Override
protected
void
done
(
TypeParameterDescriptor
typeParameterDescriptor
)
{
r
.
add
(
typeParameterDescriptor
);
...
...
compiler/testData/readKotlinBinaryClass/constructor/ConstructorWithTypeParametersEAndOnePValueParameter.kt
0 → 100644
浏览文件 @
309b6b3e
package
test
class
OneTypeParameterErased
<
P
,
erased
Q
>(
q
:
Q
)
compiler/testData/readKotlinBinaryClass/fun/genericWithTypeVariables/FunParamParamErased.kt
0 → 100644
浏览文件 @
309b6b3e
package
test
fun
<
erased
P
>
funParamParam
(
a
:
Int
,
b
:
P
)
=
1
stdlib/src/org/jetbrains/jet/rt/TypeInfoParser.java
浏览文件 @
309b6b3e
...
...
@@ -74,7 +74,7 @@ class TypeInfoParser {
new
JetSignatureReader
(
annotationValue
).
accept
(
new
JetSignatureExceptionsAdapter
()
{
@Override
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
final
TypeInfoVariance
variance
)
{
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
final
TypeInfoVariance
variance
,
boolean
reified
)
{
// TODO: nullability
...
...
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureAdapter.java
浏览文件 @
309b6b3e
...
...
@@ -7,7 +7,7 @@ import jet.typeinfo.TypeInfoVariance;
*/
public
class
JetSignatureAdapter
implements
JetSignatureVisitor
{
@Override
public
JetSignatureVisitor
visitFormalTypeParameter
(
String
name
,
TypeInfoVariance
variance
)
{
public
JetSignatureVisitor
visitFormalTypeParameter
(
String
name
,
TypeInfoVariance
variance
,
boolean
reified
)
{
return
this
;
}
...
...
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureExceptionsAdapter.java
浏览文件 @
309b6b3e
...
...
@@ -7,7 +7,7 @@ import jet.typeinfo.TypeInfoVariance;
*/
public
class
JetSignatureExceptionsAdapter
implements
JetSignatureVisitor
{
@Override
public
JetSignatureVisitor
visitFormalTypeParameter
(
String
name
,
TypeInfoVariance
variance
)
{
public
JetSignatureVisitor
visitFormalTypeParameter
(
String
name
,
TypeInfoVariance
variance
,
boolean
reified
)
{
throw
new
IllegalStateException
();
}
...
...
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureReader.java
浏览文件 @
309b6b3e
...
...
@@ -49,6 +49,12 @@ public class JetSignatureReader {
pos
=
1
;
do
{
TypeInfoVariance
variance
;
boolean
reified
=
true
;
if
(
signature
.
substring
(
pos
).
startsWith
(
"erased "
))
{
reified
=
false
;
pos
+=
"erased "
.
length
();
}
if
(
signature
.
substring
(
pos
).
startsWith
(
"in "
))
{
variance
=
TypeInfoVariance
.
IN
;
pos
+=
"in "
.
length
();
...
...
@@ -67,7 +73,7 @@ public class JetSignatureReader {
if
(
typeParameterName
.
isEmpty
())
{
throw
new
IllegalStateException
(
"incorrect signature: "
+
signature
);
}
JetSignatureVisitor
parameterVisitor
=
v
.
visitFormalTypeParameter
(
typeParameterName
,
variance
);
JetSignatureVisitor
parameterVisitor
=
v
.
visitFormalTypeParameter
(
typeParameterName
,
variance
,
reified
);
pos
=
end
+
1
;
c
=
signature
.
charAt
(
pos
);
...
...
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureVisitor.java
浏览文件 @
309b6b3e
...
...
@@ -28,9 +28,11 @@ public interface JetSignatureVisitor {
/**
* Visits a formal type parameter.
*
* TODO should not store reified flag in signature
*
* @param name the name of the formal parameter.
*/
JetSignatureVisitor
visitFormalTypeParameter
(
String
name
,
TypeInfoVariance
variance
);
JetSignatureVisitor
visitFormalTypeParameter
(
String
name
,
TypeInfoVariance
variance
,
boolean
reified
);
void
visitFormalTypeParameterEnd
();
...
...
stdlib/src/org/jetbrains/jet/rt/signature/JetSignatureWriter.java
浏览文件 @
309b6b3e
...
...
@@ -43,11 +43,14 @@ public class JetSignatureWriter implements JetSignatureVisitor {
// ------------------------------------------------------------------------
@Override
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
TypeInfoVariance
variance
)
{
public
JetSignatureVisitor
visitFormalTypeParameter
(
final
String
name
,
TypeInfoVariance
variance
,
boolean
reified
)
{
if
(!
hasFormals
)
{
hasFormals
=
true
;
buf
.
append
(
'<'
);
}
if
(!
reified
)
{
buf
.
append
(
"erased "
);
}
switch
(
variance
)
{
case
OUT:
buf
.
append
(
"out "
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录