Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
6ca5ba36
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,发现更多精彩内容 >>
提交
6ca5ba36
编写于
12月 16, 2016
作者:
N
Nikolay Krasko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Don't call getClassDescriptor for local declarations (KT-15259)
#KT-15259 Open
上级
8fe9de1d
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
46 addition
and
3 deletion
+46
-3
compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java
...iler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java
+0
-1
idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/CodeFragmentAnalyzer.kt
...brains/kotlin/idea/caches/resolve/CodeFragmentAnalyzer.kt
+11
-2
idea/testData/checker/codeFragments/anonymousObject.kt
idea/testData/checker/codeFragments/anonymousObject.kt
+5
-0
idea/testData/checker/codeFragments/anonymousObject.kt.fragment
...estData/checker/codeFragments/anonymousObject.kt.fragment
+1
-0
idea/testData/checker/codeFragments/primaryConstructorLocal.kt
...testData/checker/codeFragments/primaryConstructorLocal.kt
+16
-0
idea/testData/checker/codeFragments/primaryConstructorLocal.kt.fragment
...checker/codeFragments/primaryConstructorLocal.kt.fragment
+1
-0
idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentHighlightingTestGenerated.java
...ugger/evaluate/CodeFragmentHighlightingTestGenerated.java
+12
-0
未找到文件。
compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiUtil.java
浏览文件 @
6ca5ba36
...
...
@@ -747,7 +747,6 @@ public class KtPsiUtil {
if
(((
KtParameter
)
declaration
).
hasValOrVar
()
&&
parent
!=
null
&&
parent
.
getParent
()
instanceof
KtPrimaryConstructor
)
{
return
getEnclosingElementForLocalDeclaration
(((
KtPrimaryConstructor
)
parent
.
getParent
()).
getContainingClassOrObject
(),
skipParameters
);
}
else
if
(
skipParameters
&&
parent
!=
null
&&
parent
.
getParent
()
instanceof
KtNamedFunction
)
{
declaration
=
(
KtNamedFunction
)
parent
.
getParent
();
}
...
...
idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/CodeFragmentAnalyzer.kt
浏览文件 @
6ca5ba36
...
...
@@ -16,6 +16,7 @@
package
org.jetbrains.kotlin.idea.caches.resolve
import
org.jetbrains.kotlin.descriptors.ClassDescriptor
import
org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
import
org.jetbrains.kotlin.idea.project.ResolveElementCache
import
org.jetbrains.kotlin.incremental.components.NoLookupLocation
...
...
@@ -91,9 +92,17 @@ class CodeFragmentAnalyzer(
val
scopeForContextElement
:
LexicalScope
?
val
dataFlowInfo
:
DataFlowInfo
fun
getClassDescriptor
(
classOrObject
:
KtClassOrObject
):
ClassDescriptor
?
{
if
(!
KtPsiUtil
.
isLocal
(
classOrObject
))
{
return
resolveSession
.
getClassDescriptor
(
classOrObject
,
NoLookupLocation
.
FROM_IDE
)
}
return
resolveToElement
(
classOrObject
)[
BindingContext
.
DECLARATION_TO_DESCRIPTOR
,
classOrObject
]
as
ClassDescriptor
?
}
when
(
context
)
{
is
KtPrimaryConstructor
->
{
val
descriptor
=
resolveSession
.
getClassDescriptor
(
context
.
getContainingClassOrObject
(),
NoLookupLocation
.
FROM_IDE
)
as
ClassDescriptorWithResolutionScopes
val
descriptor
=
(
getClassDescriptor
(
context
.
getContainingClassOrObject
())
as
?
ClassDescriptorWithResolutionScopes
)
?:
return
null
scopeForContextElement
=
descriptor
.
scopeForInitializerResolution
dataFlowInfo
=
DataFlowInfo
.
EMPTY
...
...
@@ -107,7 +116,7 @@ class CodeFragmentAnalyzer(
dataFlowInfo
=
DataFlowInfo
.
EMPTY
}
is
KtClassOrObject
->
{
val
descriptor
=
resolveSession
.
getClassDescriptor
(
context
,
NoLookupLocation
.
FROM_IDE
)
as
ClassDescriptorWithResolutionScopes
val
descriptor
=
(
getClassDescriptor
(
context
)
as
?
ClassDescriptorWithResolutionScopes
)
?:
return
null
scopeForContextElement
=
descriptor
.
scopeForMemberDeclarationResolution
dataFlowInfo
=
DataFlowInfo
.
EMPTY
...
...
idea/testData/checker/codeFragments/anonymousObject.kt
0 → 100644
浏览文件 @
6ca5ba36
val
global
=
2
fun
makeFace
()
=
object
:
ObjectFace
{
val
inObject
=
1
<
caret
>}
\ No newline at end of file
idea/testData/checker/codeFragments/anonymousObject.kt.fragment
0 → 100644
浏览文件 @
6ca5ba36
global + inObject
\ No newline at end of file
idea/testData/checker/codeFragments/primaryConstructorLocal.kt
0 → 100644
浏览文件 @
6ca5ba36
fun
test
()
{
val
local
=
12
class
A
(
a
:
Int
<
caret
>)
:
Base
(
1
)
{
val
c
=
1
init
{
val
d
=
1
val
e
=
1
}
}
}
open
class
Base
(
i
:
Int
)
\ No newline at end of file
idea/testData/checker/codeFragments/primaryConstructorLocal.kt.fragment
0 → 100644
浏览文件 @
6ca5ba36
local + a + c + <error>d</error> + <error>e</error>
\ No newline at end of file
idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentHighlightingTestGenerated.java
浏览文件 @
6ca5ba36
...
...
@@ -38,6 +38,12 @@ public class CodeFragmentHighlightingTestGenerated extends AbstractCodeFragmentH
KotlinTestUtils
.
assertAllTestsPresentByMetadata
(
this
.
getClass
(),
new
File
(
"idea/testData/checker/codeFragments"
),
Pattern
.
compile
(
"^(.+)\\.kt$"
),
TargetBackend
.
ANY
,
false
);
}
@TestMetadata
(
"anonymousObject.kt"
)
public
void
testAnonymousObject
()
throws
Exception
{
String
fileName
=
KotlinTestUtils
.
navigationMetadata
(
"idea/testData/checker/codeFragments/anonymousObject.kt"
);
doTest
(
fileName
);
}
@TestMetadata
(
"binaryExpression.kt"
)
public
void
testBinaryExpression
()
throws
Exception
{
String
fileName
=
KotlinTestUtils
.
navigationMetadata
(
"idea/testData/checker/codeFragments/binaryExpression.kt"
);
...
...
@@ -104,6 +110,12 @@ public class CodeFragmentHighlightingTestGenerated extends AbstractCodeFragmentH
doTest
(
fileName
);
}
@TestMetadata
(
"primaryConstructorLocal.kt"
)
public
void
testPrimaryConstructorLocal
()
throws
Exception
{
String
fileName
=
KotlinTestUtils
.
navigationMetadata
(
"idea/testData/checker/codeFragments/primaryConstructorLocal.kt"
);
doTest
(
fileName
);
}
@TestMetadata
(
"privateFunArgumentsResolve.kt"
)
public
void
testPrivateFunArgumentsResolve
()
throws
Exception
{
String
fileName
=
KotlinTestUtils
.
navigationMetadata
(
"idea/testData/checker/codeFragments/privateFunArgumentsResolve.kt"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录