Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
c6756762
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,发现更多精彩内容 >>
提交
c6756762
编写于
2月 05, 2021
作者:
D
Dmitriy Dolovov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Commonizer] Refactoring: Clean-up in CirTreeMerger
上级
671ebc68
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
65 addition
and
103 deletion
+65
-103
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt
.../kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt
+4
-4
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNode.kt
...rains/kotlin/descriptors/commonizer/mergedtree/CirNode.kt
+24
-0
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNodeWithClassId.kt
...n/descriptors/commonizer/mergedtree/CirNodeWithClassId.kt
+0
-13
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNodeWithFqName.kt
...in/descriptors/commonizer/mergedtree/CirNodeWithFqName.kt
+0
-13
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNodeWithLiftingUp.kt
...descriptors/commonizer/mergedtree/CirNodeWithLiftingUp.kt
+0
-14
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirPackageNode.kt
...otlin/descriptors/commonizer/mergedtree/CirPackageNode.kt
+4
-4
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt
...kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt
+33
-55
未找到文件。
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirClassNode.kt
浏览文件 @
c6756762
...
@@ -16,12 +16,12 @@ class CirClassNode(
...
@@ -16,12 +16,12 @@ class CirClassNode(
override
val
targetDeclarations
:
CommonizedGroup
<
CirClass
>,
override
val
targetDeclarations
:
CommonizedGroup
<
CirClass
>,
override
val
commonDeclaration
:
NullableLazyValue
<
CirClass
>,
override
val
commonDeclaration
:
NullableLazyValue
<
CirClass
>,
override
val
classId
:
ClassId
override
val
classId
:
ClassId
)
:
CirNodeWithClassId
<
CirClass
,
CirClass
>
{
)
:
CirNodeWithClassId
<
CirClass
,
CirClass
>
,
CirNodeWithMembers
<
CirClass
,
CirClass
>
{
val
constructors
:
MutableMap
<
ConstructorApproximationKey
,
CirClassConstructorNode
>
=
THashMap
()
val
constructors
:
MutableMap
<
ConstructorApproximationKey
,
CirClassConstructorNode
>
=
THashMap
()
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
=
THashMap
()
override
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
=
THashMap
()
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
=
THashMap
()
override
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
=
THashMap
()
val
classes
:
MutableMap
<
Name
,
CirClassNode
>
=
THashMap
()
override
val
classes
:
MutableMap
<
Name
,
CirClassNode
>
=
THashMap
()
override
fun
<
T
,
R
>
accept
(
visitor
:
CirNodeVisitor
<
T
,
R
>,
data
:
T
):
R
=
override
fun
<
T
,
R
>
accept
(
visitor
:
CirNodeVisitor
<
T
,
R
>,
data
:
T
):
R
=
visitor
.
visitClassNode
(
this
,
data
)
visitor
.
visitClassNode
(
this
,
data
)
...
...
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNode.kt
浏览文件 @
c6756762
...
@@ -5,8 +5,14 @@
...
@@ -5,8 +5,14 @@
package
org.jetbrains.kotlin.descriptors.commonizer.mergedtree
package
org.jetbrains.kotlin.descriptors.commonizer.mergedtree
import
gnu.trove.THashMap
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirClassifier
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirDeclaration
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirDeclaration
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirLiftedUpDeclaration
import
org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import
org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import
org.jetbrains.kotlin.name.ClassId
import
org.jetbrains.kotlin.name.FqName
import
org.jetbrains.kotlin.name.Name
import
org.jetbrains.kotlin.storage.NullableLazyValue
import
org.jetbrains.kotlin.storage.NullableLazyValue
interface
CirNode
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
{
interface
CirNode
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
{
...
@@ -37,3 +43,21 @@ interface CirNode<T : CirDeclaration, R : CirDeclaration> {
...
@@ -37,3 +43,21 @@ interface CirNode<T : CirDeclaration, R : CirDeclaration> {
}
}
}
}
interface
CirNodeWithClassId
<
T
:
CirClassifier
,
R
:
CirClassifier
>
:
CirNode
<
T
,
R
>
{
val
classId
:
ClassId
}
interface
CirNodeWithFqName
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
:
CirNode
<
T
,
R
>
{
val
fqName
:
FqName
}
interface
CirNodeWithLiftingUp
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
:
CirNode
<
T
,
R
>
{
val
isLiftedUp
:
Boolean
get
()
=
(
commonDeclaration
()
as
?
CirLiftedUpDeclaration
)
?.
isLiftedUp
==
true
}
interface
CirNodeWithMembers
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
:
CirNode
<
T
,
R
>
{
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
val
classes
:
MutableMap
<
Name
,
CirClassNode
>
}
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNodeWithClassId.kt
已删除
100644 → 0
浏览文件 @
671ebc68
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package
org.jetbrains.kotlin.descriptors.commonizer.mergedtree
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirClassifier
import
org.jetbrains.kotlin.name.ClassId
interface
CirNodeWithClassId
<
T
:
CirClassifier
,
R
:
CirClassifier
>
:
CirNode
<
T
,
R
>
{
val
classId
:
ClassId
}
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNodeWithFqName.kt
已删除
100644 → 0
浏览文件 @
671ebc68
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package
org.jetbrains.kotlin.descriptors.commonizer.mergedtree
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirDeclaration
import
org.jetbrains.kotlin.name.FqName
interface
CirNodeWithFqName
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
:
CirNode
<
T
,
R
>
{
val
fqName
:
FqName
}
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirNodeWithLiftingUp.kt
已删除
100644 → 0
浏览文件 @
671ebc68
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package
org.jetbrains.kotlin.descriptors.commonizer.mergedtree
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirDeclaration
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirLiftedUpDeclaration
interface
CirNodeWithLiftingUp
<
T
:
CirDeclaration
,
R
:
CirDeclaration
>
:
CirNode
<
T
,
R
>
{
val
isLiftedUp
:
Boolean
get
()
=
(
commonDeclaration
()
as
?
CirLiftedUpDeclaration
)
?.
isLiftedUp
==
true
}
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirPackageNode.kt
浏览文件 @
c6756762
...
@@ -17,11 +17,11 @@ class CirPackageNode(
...
@@ -17,11 +17,11 @@ class CirPackageNode(
override
val
commonDeclaration
:
NullableLazyValue
<
CirPackage
>,
override
val
commonDeclaration
:
NullableLazyValue
<
CirPackage
>,
override
val
fqName
:
FqName
,
override
val
fqName
:
FqName
,
val
moduleName
:
Name
val
moduleName
:
Name
)
:
CirNodeWithFqName
<
CirPackage
,
CirPackage
>
{
)
:
CirNodeWithFqName
<
CirPackage
,
CirPackage
>
,
CirNodeWithMembers
<
CirPackage
,
CirPackage
>
{
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
=
THashMap
()
override
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
=
THashMap
()
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
=
THashMap
()
override
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
=
THashMap
()
val
classes
:
MutableMap
<
Name
,
CirClassNode
>
=
THashMap
()
override
val
classes
:
MutableMap
<
Name
,
CirClassNode
>
=
THashMap
()
val
typeAliases
:
MutableMap
<
Name
,
CirTypeAliasNode
>
=
THashMap
()
val
typeAliases
:
MutableMap
<
Name
,
CirTypeAliasNode
>
=
THashMap
()
override
fun
<
T
,
R
>
accept
(
visitor
:
CirNodeVisitor
<
T
,
R
>,
data
:
T
)
=
override
fun
<
T
,
R
>
accept
(
visitor
:
CirNodeVisitor
<
T
,
R
>,
data
:
T
)
=
...
...
native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt
浏览文件 @
c6756762
...
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.LeafTarget
...
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.LeafTarget
import
org.jetbrains.kotlin.descriptors.commonizer.ModulesProvider.ModuleInfo
import
org.jetbrains.kotlin.descriptors.commonizer.ModulesProvider.ModuleInfo
import
org.jetbrains.kotlin.descriptors.commonizer.CommonizerParameters
import
org.jetbrains.kotlin.descriptors.commonizer.CommonizerParameters
import
org.jetbrains.kotlin.descriptors.commonizer.TargetProvider
import
org.jetbrains.kotlin.descriptors.commonizer.TargetProvider
import
org.jetbrains.kotlin.descriptors.commonizer.cir.CirClass
import
org.jetbrains.kotlin.descriptors.commonizer.cir.factory.*
import
org.jetbrains.kotlin.descriptors.commonizer.cir.factory.*
import
org.jetbrains.kotlin.descriptors.commonizer.utils.intern
import
org.jetbrains.kotlin.descriptors.commonizer.utils.intern
import
org.jetbrains.kotlin.descriptors.commonizer.utils.internedClassId
import
org.jetbrains.kotlin.descriptors.commonizer.utils.internedClassId
...
@@ -18,7 +17,6 @@ import org.jetbrains.kotlin.name.ClassId
...
@@ -18,7 +17,6 @@ import org.jetbrains.kotlin.name.ClassId
import
org.jetbrains.kotlin.name.FqName
import
org.jetbrains.kotlin.name.FqName
import
org.jetbrains.kotlin.name.Name
import
org.jetbrains.kotlin.name.Name
import
org.jetbrains.kotlin.resolve.scopes.MemberScope
import
org.jetbrains.kotlin.resolve.scopes.MemberScope
import
org.jetbrains.kotlin.storage.NullableLazyValue
import
org.jetbrains.kotlin.storage.StorageManager
import
org.jetbrains.kotlin.storage.StorageManager
/**
/**
...
@@ -110,16 +108,15 @@ class CirTreeMerger(
...
@@ -110,16 +108,15 @@ class CirTreeMerger(
val
allDependeeModules
=
targetDependeeModules
+
dependeeModules
val
allDependeeModules
=
targetDependeeModules
+
dependeeModules
val
moduleDescriptors
:
Map
<
String
,
ModuleDescriptor
>
=
targetProvider
.
modulesProvider
.
loadModules
(
allDependeeModules
)
val
moduleDescriptors
:
Map
<
String
,
ModuleDescriptor
>
=
targetProvider
.
modulesProvider
.
loadModules
(
allDependeeModules
)
val
modules
:
MutableMap
<
Name
,
CirModuleNode
>
=
rootNode
.
modules
moduleDescriptors
.
forEach
{
(
name
,
moduleDescriptor
)
->
moduleDescriptors
.
forEach
{
(
name
,
moduleDescriptor
)
->
val
moduleInfo
=
commonModuleInfos
[
name
]
?:
return
@forEach
val
moduleInfo
=
commonModuleInfos
[
name
]
?:
return
@forEach
processModule
(
modules
,
targetIndex
,
moduleInfo
,
moduleDescriptor
)
processModule
(
rootNode
,
targetIndex
,
moduleInfo
,
moduleDescriptor
)
}
}
}
}
private
fun
processModule
(
private
fun
processModule
(
modules
:
MutableMap
<
Name
,
CirModuleNode
>
,
rootNode
:
CirRootNode
,
targetIndex
:
Int
,
targetIndex
:
Int
,
moduleInfo
:
ModuleInfo
,
moduleInfo
:
ModuleInfo
,
moduleDescriptor
:
ModuleDescriptor
moduleDescriptor
:
ModuleDescriptor
...
@@ -127,114 +124,97 @@ class CirTreeMerger(
...
@@ -127,114 +124,97 @@ class CirTreeMerger(
processCInteropModuleAttributes
(
moduleInfo
)
processCInteropModuleAttributes
(
moduleInfo
)
val
moduleName
:
Name
=
moduleDescriptor
.
name
.
intern
()
val
moduleName
:
Name
=
moduleDescriptor
.
name
.
intern
()
val
moduleNode
:
CirModuleNode
=
modules
.
getOrPut
(
moduleName
)
{
val
moduleNode
:
CirModuleNode
=
rootNode
.
modules
.
getOrPut
(
moduleName
)
{
buildModuleNode
(
storageManager
,
size
)
buildModuleNode
(
storageManager
,
size
)
}
}
moduleNode
.
targetDeclarations
[
targetIndex
]
=
CirModuleFactory
.
create
(
moduleDescriptor
)
moduleNode
.
targetDeclarations
[
targetIndex
]
=
CirModuleFactory
.
create
(
moduleDescriptor
)
val
packages
:
MutableMap
<
FqName
,
CirPackageNode
>
=
moduleNode
.
packages
moduleDescriptor
.
collectNonEmptyPackageMemberScopes
{
packageFqName
,
packageMemberScope
->
moduleDescriptor
.
collectNonEmptyPackageMemberScopes
{
packageFqName
,
packageMemberScope
->
processPackage
(
packages
,
targetIndex
,
packageFqName
.
intern
(),
packageMemberScope
,
moduleName
)
processPackage
(
moduleNode
,
targetIndex
,
packageFqName
.
intern
(),
packageMemberScope
,
moduleName
)
}
}
}
}
private
fun
processPackage
(
private
fun
processPackage
(
packages
:
MutableMap
<
FqName
,
CirPackageNode
>
,
moduleNode
:
CirModuleNode
,
targetIndex
:
Int
,
targetIndex
:
Int
,
packageFqName
:
FqName
,
packageFqName
:
FqName
,
packageMemberScope
:
MemberScope
,
packageMemberScope
:
MemberScope
,
moduleName
:
Name
moduleName
:
Name
)
{
)
{
val
packageNode
:
CirPackageNode
=
packages
.
getOrPut
(
packageFqName
)
{
val
packageNode
:
CirPackageNode
=
moduleNode
.
packages
.
getOrPut
(
packageFqName
)
{
buildPackageNode
(
storageManager
,
size
,
packageFqName
,
moduleName
)
buildPackageNode
(
storageManager
,
size
,
packageFqName
,
moduleName
)
}
}
packageNode
.
targetDeclarations
[
targetIndex
]
=
CirPackageFactory
.
create
(
packageFqName
)
packageNode
.
targetDeclarations
[
targetIndex
]
=
CirPackageFactory
.
create
(
packageFqName
)
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
=
packageNode
.
properties
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
=
packageNode
.
functions
val
classes
:
MutableMap
<
Name
,
CirClassNode
>
=
packageNode
.
classes
val
typeAliases
:
MutableMap
<
Name
,
CirTypeAliasNode
>
=
packageNode
.
typeAliases
packageMemberScope
.
collectMembers
(
packageMemberScope
.
collectMembers
(
PropertyCollector
{
propertyDescriptor
->
PropertyCollector
{
propertyDescriptor
->
processProperty
(
p
roperties
,
targetIndex
,
propertyDescriptor
,
null
)
processProperty
(
p
ackageNode
,
targetIndex
,
propertyDescriptor
)
},
},
FunctionCollector
{
functionDescriptor
->
FunctionCollector
{
functionDescriptor
->
processFunction
(
functions
,
targetIndex
,
functionDescriptor
,
null
)
processFunction
(
packageNode
,
targetIndex
,
functionDescriptor
)
},
},
ClassCollector
{
classDescriptor
->
ClassCollector
{
classDescriptor
->
processClass
(
classes
,
targetIndex
,
classDescriptor
,
null
)
{
className
->
processClass
(
packageNode
,
targetIndex
,
classDescriptor
)
{
className
->
internedClassId
(
packageFqName
,
className
)
internedClassId
(
packageFqName
,
className
)
}
}
},
},
TypeAliasCollector
{
typeAliasDescriptor
->
TypeAliasCollector
{
typeAliasDescriptor
->
processTypeAlias
(
typeAliases
,
targetIndex
,
typeAliasDescriptor
,
packageFqName
)
processTypeAlias
(
packageNode
,
targetIndex
,
typeAliasDescriptor
)
}
}
)
)
}
}
private
fun
processProperty
(
private
fun
processProperty
(
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>,
ownerNode
:
CirNodeWithMembers
<
*
,
*
>,
targetIndex
:
Int
,
targetIndex
:
Int
,
propertyDescriptor
:
PropertyDescriptor
,
propertyDescriptor
:
PropertyDescriptor
parentCommonDeclaration
:
NullableLazyValue
<
*
>?
)
{
)
{
val
propertyNode
:
CirPropertyNode
=
properties
.
getOrPut
(
PropertyApproximationKey
(
propertyDescriptor
))
{
val
propertyNode
:
CirPropertyNode
=
ownerNode
.
properties
.
getOrPut
(
PropertyApproximationKey
(
propertyDescriptor
))
{
buildPropertyNode
(
storageManager
,
size
,
classifiers
,
parentC
ommonDeclaration
)
buildPropertyNode
(
storageManager
,
size
,
classifiers
,
(
ownerNode
as
?
CirClassNode
)
?.
c
ommonDeclaration
)
}
}
propertyNode
.
targetDeclarations
[
targetIndex
]
=
CirPropertyFactory
.
create
(
propertyDescriptor
)
propertyNode
.
targetDeclarations
[
targetIndex
]
=
CirPropertyFactory
.
create
(
propertyDescriptor
)
}
}
private
fun
processFunction
(
private
fun
processFunction
(
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>,
ownerNode
:
CirNodeWithMembers
<
*
,
*
>,
targetIndex
:
Int
,
targetIndex
:
Int
,
functionDescriptor
:
SimpleFunctionDescriptor
,
functionDescriptor
:
SimpleFunctionDescriptor
parentCommonDeclaration
:
NullableLazyValue
<
*
>?
)
{
)
{
val
functionNode
:
CirFunctionNode
=
functions
.
getOrPut
(
FunctionApproximationKey
(
functionDescriptor
))
{
val
functionNode
:
CirFunctionNode
=
ownerNode
.
functions
.
getOrPut
(
FunctionApproximationKey
(
functionDescriptor
))
{
buildFunctionNode
(
storageManager
,
size
,
classifiers
,
parentC
ommonDeclaration
)
buildFunctionNode
(
storageManager
,
size
,
classifiers
,
(
ownerNode
as
?
CirClassNode
)
?.
c
ommonDeclaration
)
}
}
functionNode
.
targetDeclarations
[
targetIndex
]
=
CirFunctionFactory
.
create
(
functionDescriptor
)
functionNode
.
targetDeclarations
[
targetIndex
]
=
CirFunctionFactory
.
create
(
functionDescriptor
)
}
}
private
fun
processClass
(
private
fun
processClass
(
classes
:
MutableMap
<
Name
,
CirClassNode
>,
ownerNode
:
CirNodeWithMembers
<
*
,
*
>,
targetIndex
:
Int
,
targetIndex
:
Int
,
classDescriptor
:
ClassDescriptor
,
classDescriptor
:
ClassDescriptor
,
parentCommonDeclaration
:
NullableLazyValue
<
*
>?,
classIdFunction
:
(
Name
)
->
ClassId
classIdFunction
:
(
Name
)
->
ClassId
)
{
)
{
val
className
=
classDescriptor
.
name
.
intern
()
val
className
=
classDescriptor
.
name
.
intern
()
val
classId
=
classIdFunction
(
className
)
val
classId
=
classIdFunction
(
className
)
val
classNode
:
CirClassNode
=
classes
.
getOrPut
(
className
)
{
val
classNode
:
CirClassNode
=
ownerNode
.
classes
.
getOrPut
(
className
)
{
buildClassNode
(
storageManager
,
size
,
classifiers
,
parentC
ommonDeclaration
,
classId
)
buildClassNode
(
storageManager
,
size
,
classifiers
,
(
ownerNode
as
?
CirClassNode
)
?.
c
ommonDeclaration
,
classId
)
}
}
classNode
.
targetDeclarations
[
targetIndex
]
=
CirClassFactory
.
create
(
classDescriptor
)
classNode
.
targetDeclarations
[
targetIndex
]
=
CirClassFactory
.
create
(
classDescriptor
)
val
parentCommonDeclarationForMembers
:
NullableLazyValue
<
CirClass
>
=
classNode
.
commonDeclaration
val
constructors
:
MutableMap
<
ConstructorApproximationKey
,
CirClassConstructorNode
>
=
classNode
.
constructors
val
properties
:
MutableMap
<
PropertyApproximationKey
,
CirPropertyNode
>
=
classNode
.
properties
val
functions
:
MutableMap
<
FunctionApproximationKey
,
CirFunctionNode
>
=
classNode
.
functions
val
nestedClasses
:
MutableMap
<
Name
,
CirClassNode
>
=
classNode
.
classes
if
(
classDescriptor
.
kind
!=
ClassKind
.
ENUM_ENTRY
)
{
if
(
classDescriptor
.
kind
!=
ClassKind
.
ENUM_ENTRY
)
{
classDescriptor
.
constructors
.
forEach
{
constructorDescriptor
->
classDescriptor
.
constructors
.
forEach
{
constructorDescriptor
->
processClassConstructor
(
c
onstructors
,
targetIndex
,
constructorDescriptor
,
parentCommonDeclarationForMembers
)
processClassConstructor
(
c
lassNode
,
targetIndex
,
constructorDescriptor
)
}
}
}
}
classDescriptor
.
unsubstitutedMemberScope
.
collectMembers
(
classDescriptor
.
unsubstitutedMemberScope
.
collectMembers
(
PropertyCollector
{
propertyDescriptor
->
PropertyCollector
{
propertyDescriptor
->
processProperty
(
properties
,
targetIndex
,
propertyDescriptor
,
parentCommonDeclarationForMembers
)
processProperty
(
classNode
,
targetIndex
,
propertyDescriptor
)
},
},
FunctionCollector
{
functionDescriptor
->
FunctionCollector
{
functionDescriptor
->
processFunction
(
functions
,
targetIndex
,
functionDescriptor
,
parentCommonDeclarationForMembers
)
processFunction
(
classNode
,
targetIndex
,
functionDescriptor
)
},
},
ClassCollector
{
nestedClassDescriptor
->
ClassCollector
{
nestedClassDescriptor
->
processClass
(
nestedClasses
,
targetIndex
,
nestedClassDescriptor
,
parentCommonDeclarationForMembers
)
{
nestedClassName
->
processClass
(
classNode
,
targetIndex
,
nestedClassDescriptor
)
{
nestedClassName
->
internedClassId
(
classId
,
nestedClassName
)
internedClassId
(
classId
,
nestedClassName
)
}
}
}
}
...
@@ -242,27 +222,25 @@ class CirTreeMerger(
...
@@ -242,27 +222,25 @@ class CirTreeMerger(
}
}
private
fun
processClassConstructor
(
private
fun
processClassConstructor
(
c
onstructors
:
MutableMap
<
ConstructorApproximationKey
,
CirClassConstructorNode
>
,
c
lassNode
:
CirClassNode
,
targetIndex
:
Int
,
targetIndex
:
Int
,
constructorDescriptor
:
ClassConstructorDescriptor
,
constructorDescriptor
:
ClassConstructorDescriptor
parentCommonDeclaration
:
NullableLazyValue
<
*
>?
)
{
)
{
val
constructorNode
:
CirClassConstructorNode
=
constructors
.
getOrPut
(
ConstructorApproximationKey
(
constructorDescriptor
))
{
val
constructorNode
:
CirClassConstructorNode
=
c
lassNode
.
c
onstructors
.
getOrPut
(
ConstructorApproximationKey
(
constructorDescriptor
))
{
buildClassConstructorNode
(
storageManager
,
size
,
classifiers
,
parentC
ommonDeclaration
)
buildClassConstructorNode
(
storageManager
,
size
,
classifiers
,
classNode
.
c
ommonDeclaration
)
}
}
constructorNode
.
targetDeclarations
[
targetIndex
]
=
CirClassConstructorFactory
.
create
(
constructorDescriptor
)
constructorNode
.
targetDeclarations
[
targetIndex
]
=
CirClassConstructorFactory
.
create
(
constructorDescriptor
)
}
}
private
fun
processTypeAlias
(
private
fun
processTypeAlias
(
typeAliases
:
MutableMap
<
Name
,
CirTypeAliasNode
>
,
packageNode
:
CirPackageNode
,
targetIndex
:
Int
,
targetIndex
:
Int
,
typeAliasDescriptor
:
TypeAliasDescriptor
,
typeAliasDescriptor
:
TypeAliasDescriptor
packageFqName
:
FqName
)
{
)
{
val
typeAliasName
=
typeAliasDescriptor
.
name
.
intern
()
val
typeAliasName
=
typeAliasDescriptor
.
name
.
intern
()
val
typeAliasClassId
=
internedClassId
(
package
F
qName
,
typeAliasName
)
val
typeAliasClassId
=
internedClassId
(
package
Node
.
f
qName
,
typeAliasName
)
val
typeAliasNode
:
CirTypeAliasNode
=
typeAliases
.
getOrPut
(
typeAliasName
)
{
val
typeAliasNode
:
CirTypeAliasNode
=
packageNode
.
typeAliases
.
getOrPut
(
typeAliasName
)
{
buildTypeAliasNode
(
storageManager
,
size
,
classifiers
,
typeAliasClassId
)
buildTypeAliasNode
(
storageManager
,
size
,
classifiers
,
typeAliasClassId
)
}
}
typeAliasNode
.
targetDeclarations
[
targetIndex
]
=
CirTypeAliasFactory
.
create
(
typeAliasDescriptor
)
typeAliasNode
.
targetDeclarations
[
targetIndex
]
=
CirTypeAliasFactory
.
create
(
typeAliasDescriptor
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录