Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
90c8e353
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,发现更多精彩内容 >>
提交
90c8e353
编写于
12月 19, 2016
作者:
D
Denis Zharkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Minor. Drop unused parts
上级
a9e9f36e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
2 addition
and
77 deletion
+2
-77
compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/coroutineCodegenUtil.kt
...tbrains/kotlin/codegen/coroutines/coroutineCodegenUtil.kt
+2
-77
未找到文件。
compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/coroutineCodegenUtil.kt
浏览文件 @
90c8e353
...
...
@@ -26,7 +26,8 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
import
org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
import
org.jetbrains.kotlin.load.java.JvmAbi
import
org.jetbrains.kotlin.name.Name
import
org.jetbrains.kotlin.psi.*
import
org.jetbrains.kotlin.psi.KtExpression
import
org.jetbrains.kotlin.psi.KtPsiFactory
import
org.jetbrains.kotlin.resolve.BindingContext
import
org.jetbrains.kotlin.resolve.BindingTraceContext
import
org.jetbrains.kotlin.resolve.DelegatingBindingTrace
...
...
@@ -36,14 +37,11 @@ import org.jetbrains.kotlin.resolve.calls.model.MutableDataFlowInfoForArguments
import
org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import
org.jetbrains.kotlin.resolve.calls.model.ResolvedCallImpl
import
org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
import
org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind
import
org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
import
org.jetbrains.kotlin.resolve.calls.util.CallMaker
import
org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import
org.jetbrains.kotlin.resolve.jvm.AsmTypes
import
org.jetbrains.kotlin.types.KotlinTypeFactory
import
org.jetbrains.kotlin.types.TypeConstructorSubstitution
import
org.jetbrains.kotlin.types.TypeSubstitutor
import
org.jetbrains.kotlin.types.typeUtil.asTypeProjection
import
org.jetbrains.kotlin.util.OperatorNameConventions
import
org.jetbrains.org.objectweb.asm.Opcodes
...
...
@@ -112,79 +110,6 @@ fun ResolvedCall<*>.replaceSuspensionFunctionWithRealDescriptor(
return
ResolvedCallWithRealDescriptor
(
newCall
,
thisExpression
)
}
data class
HandleResultCallContext
(
val
resolvedCall
:
ResolvedCall
<
*
>,
val
exceptionExpression
:
KtExpression
,
val
continuationThisExpression
:
KtExpression
)
fun
createResolvedCallForHandleExceptionCall
(
callElement
:
KtElement
,
handleExceptionFunction
:
SimpleFunctionDescriptor
,
coroutineLambdaDescriptor
:
FunctionDescriptor
):
HandleResultCallContext
{
val
psiFactory
=
KtPsiFactory
(
callElement
)
val
exceptionArgument
=
CallMaker
.
makeValueArgument
(
psiFactory
.
createExpression
(
"exception"
))
val
continuationThisArgument
=
CallMaker
.
makeValueArgument
(
psiFactory
.
createExpression
(
"this"
))
val
resolvedCall
=
createFakeResolvedCall
(
callElement
,
coroutineLambdaDescriptor
,
handleExceptionFunction
,
listOf
(
exceptionArgument
,
continuationThisArgument
)
)
return
HandleResultCallContext
(
resolvedCall
,
exceptionArgument
.
getArgumentExpression
()
!!
,
continuationThisArgument
.
getArgumentExpression
()
!!
)
}
private
fun
createFakeResolvedCall
(
element
:
KtElement
,
coroutineLambdaDescriptor
:
FunctionDescriptor
,
descriptor
:
SimpleFunctionDescriptor
,
valueArguments
:
List
<
ValueArgument
>
):
ResolvedCallImpl
<
SimpleFunctionDescriptor
>
{
val
call
=
CallMaker
.
makeCall
(
element
,
null
,
null
,
null
,
valueArguments
)
val
resolvedCall
=
ResolvedCallImpl
(
call
,
descriptor
,
coroutineLambdaDescriptor
.
extensionReceiverParameter
!!
.
value
,
null
,
ExplicitReceiverKind
.
NO_EXPLICIT_RECEIVER
,
null
,
DelegatingBindingTrace
(
BindingTraceContext
().
bindingContext
,
"Temporary trace for handleException resolution"
),
TracingStrategy
.
EMPTY
,
MutableDataFlowInfoForArguments
.
WithoutArgumentsCheck
(
DataFlowInfo
.
EMPTY
))
descriptor
.
valueParameters
.
zip
(
valueArguments
).
forEach
{
resolvedCall
.
recordValueArgument
(
it
.
first
,
ExpressionValueArgument
(
it
.
second
))
}
resolvedCall
.
setResultingSubstitutor
(
TypeSubstitutor
.
EMPTY
)
return
resolvedCall
}
data class
InterceptResumeCallContext
(
val
resolvedCall
:
ResolvedCall
<
*
>,
val
thisExpression
:
KtExpression
)
fun
createResolvedCallForInterceptResume
(
coroutineLambda
:
KtFunctionLiteral
,
interceptResume
:
SimpleFunctionDescriptor
,
coroutineLambdaDescriptor
:
FunctionDescriptor
):
InterceptResumeCallContext
{
val
psiFactory
=
KtPsiFactory
(
coroutineLambda
)
val
isInline
=
interceptResume
.
isInline
val
thisExpression
=
psiFactory
.
createExpression
(
"this"
)
val
blockArgument
=
CallMaker
.
makeValueArgument
(
if
(
isInline
)
coroutineLambda
.
parent
as
KtExpression
else
thisExpression
)
val
resolvedCall
=
createFakeResolvedCall
(
coroutineLambda
,
coroutineLambdaDescriptor
,
interceptResume
,
listOf
(
blockArgument
))
return
InterceptResumeCallContext
(
resolvedCall
,
thisExpression
)
}
fun
ResolvedCall
<*>.
isSuspensionPoint
(
bindingContext
:
BindingContext
)
=
bindingContext
[
BindingContext
.
ENCLOSING_SUSPEND_LAMBDA_FOR_SUSPENSION_POINT
,
call
]
!=
null
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录