Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
652be4ed
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,发现更多精彩内容 >>
提交
652be4ed
编写于
4月 09, 2012
作者:
P
Pavel V. Talanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert misleading whitespace changes.
上级
62efa952
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
73 addition
and
98 deletion
+73
-98
compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java
...ackend/src/org/jetbrains/jet/codegen/GenerationState.java
+9
-20
compiler/backend/src/org/jetbrains/jet/codegen/GenerationUtils.java
...ackend/src/org/jetbrains/jet/codegen/GenerationUtils.java
+4
-4
compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java
...iler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java
+20
-33
compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java
.../tests/org/jetbrains/jet/resolve/ExpectedResolveData.java
+31
-33
idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java
...rains/jet/plugin/libraries/JetSourceNavigationHelper.java
+2
-1
idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java
...rg/jetbrains/jet/plugin/refactoring/JetNameSuggester.java
+3
-3
idea/src/org/jetbrains/jet/plugin/refactoring/introduceVariable/JetIntroduceVariableHandler.java
...toring/introduceVariable/JetIntroduceVariableHandler.java
+4
-4
未找到文件。
compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java
浏览文件 @
652be4ed
...
...
@@ -54,18 +54,12 @@ public class GenerationState {
this
(
project
,
builderFactory
,
Progress
.
DEAF
,
analyzeExhaust
,
files
);
}
public
GenerationState
(
Project
project
,
ClassBuilderFactory
builderFactory
,
Progress
progress
,
@NotNull
AnalyzeExhaust
exhaust
,
@NotNull
List
<
JetFile
>
files
)
{
public
GenerationState
(
Project
project
,
ClassBuilderFactory
builderFactory
,
Progress
progress
,
@NotNull
AnalyzeExhaust
exhaust
,
@NotNull
List
<
JetFile
>
files
)
{
this
.
project
=
project
;
this
.
progress
=
progress
;
this
.
analyzeExhaust
=
exhaust
;
this
.
files
=
files
;
this
.
injector
=
new
InjectorForJvmCodegen
(
analyzeExhaust
.
getStandardLibrary
(),
analyzeExhaust
.
getBindingContext
(),
this
.
files
,
project
,
this
,
builderFactory
);
this
.
injector
=
new
InjectorForJvmCodegen
(
analyzeExhaust
.
getStandardLibrary
(),
analyzeExhaust
.
getBindingContext
(),
this
.
files
,
project
,
this
,
builderFactory
);
}
@NotNull
...
...
@@ -90,13 +84,11 @@ public class GenerationState {
}
public
ClassBuilder
forClassImplementation
(
ClassDescriptor
aClass
)
{
return
getFactory
().
newVisitor
(
getInjector
().
getJetTypeMapper
().
mapType
(
aClass
.
getDefaultType
(),
OwnerKind
.
IMPLEMENTATION
).
getInternalName
()
+
".class"
);
return
getFactory
().
newVisitor
(
getInjector
().
getJetTypeMapper
().
mapType
(
aClass
.
getDefaultType
(),
OwnerKind
.
IMPLEMENTATION
).
getInternalName
()
+
".class"
);
}
public
ClassBuilder
forTraitImplementation
(
ClassDescriptor
aClass
)
{
return
getFactory
().
newVisitor
(
getInjector
().
getJetTypeMapper
().
mapType
(
aClass
.
getDefaultType
(),
OwnerKind
.
TRAIT_IMPL
).
getInternalName
()
+
".class"
);
return
getFactory
().
newVisitor
(
getInjector
().
getJetTypeMapper
().
mapType
(
aClass
.
getDefaultType
(),
OwnerKind
.
TRAIT_IMPL
).
getInternalName
()
+
".class"
);
}
public
Pair
<
String
,
ClassBuilder
>
forAnonymousSubclass
(
JetExpression
expression
)
{
...
...
@@ -142,17 +134,14 @@ public class GenerationState {
closure
.
cv
=
nameAndVisitor
.
getSecond
();
closure
.
name
=
nameAndVisitor
.
getFirst
();
final
CodegenContext
objectContext
=
closure
.
context
.
intoAnonymousClass
(
closure
,
analyzeExhaust
.
getBindingContext
().
get
(
BindingContext
.
CLASS
,
objectDeclaration
),
OwnerKind
.
IMPLEMENTATION
,
injector
.
getJetTypeMapper
());
closure
,
analyzeExhaust
.
getBindingContext
().
get
(
BindingContext
.
CLASS
,
objectDeclaration
),
OwnerKind
.
IMPLEMENTATION
,
injector
.
getJetTypeMapper
());
new
ImplementationBodyCodegen
(
objectDeclaration
,
objectContext
,
nameAndVisitor
.
getSecond
(),
this
).
generate
();
ConstructorDescriptor
constructorDescriptor
=
analyzeExhaust
.
getBindingContext
().
get
(
BindingContext
.
CONSTRUCTOR
,
objectDeclaration
);
CallableMethod
callableMethod
=
injector
.
getJetTypeMapper
().
mapToCallableMethod
(
constructorDescriptor
,
OwnerKind
.
IMPLEMENTATION
,
injector
.
getJetTypeMapper
().
hasThis0
(
constructorDescriptor
.
getContainingDeclaration
()));
return
new
GeneratedAnonymousClassDescriptor
(
nameAndVisitor
.
first
,
callableMethod
.
getSignature
().
getAsmMethod
(),
objectContext
.
outerWasUsed
,
null
);
constructorDescriptor
,
OwnerKind
.
IMPLEMENTATION
,
injector
.
getJetTypeMapper
().
hasThis0
(
constructorDescriptor
.
getContainingDeclaration
()));
return
new
GeneratedAnonymousClassDescriptor
(
nameAndVisitor
.
first
,
callableMethod
.
getSignature
().
getAsmMethod
(),
objectContext
.
outerWasUsed
,
null
);
}
public
String
createText
()
{
...
...
@@ -162,8 +151,8 @@ public class GenerationState {
List
<
String
>
files
=
factory
.
files
();
for
(
String
file
:
files
)
{
// if (!file.startsWith("kotlin/")) {
answer
.
append
(
"@"
).
append
(
file
).
append
(
'\n'
);
answer
.
append
(
factory
.
asText
(
file
));
answer
.
append
(
"@"
).
append
(
file
).
append
(
'\n'
);
answer
.
append
(
factory
.
asText
(
file
));
// }
}
...
...
compiler/backend/src/org/jetbrains/jet/codegen/GenerationUtils.java
浏览文件 @
652be4ed
...
...
@@ -34,11 +34,11 @@ public class GenerationUtils {
}
public
static
GenerationState
compileFileGetGenerationState
(
JetFile
psiFile
)
{
final
AnalyzeExhaust
analyzeExhaust
=
AnalyzerFacadeForJVM
.
analyzeOneFileWithJavaIntegrationAndCheckForErrors
(
psiFile
,
JetControlFlowDataTraceFactory
.
EMPTY
);
GenerationState
state
=
new
GenerationState
(
psiFile
.
getProject
(),
ClassBuilderFactories
.
binaries
(
false
),
analyzeExhaust
,
Collections
.
singletonList
(
psiFile
));
final
AnalyzeExhaust
analyzeExhaust
=
AnalyzerFacadeForJVM
.
analyzeOneFileWithJavaIntegrationAndCheckForErrors
(
psiFile
,
JetControlFlowDataTraceFactory
.
EMPTY
);
GenerationState
state
=
new
GenerationState
(
psiFile
.
getProject
(),
ClassBuilderFactories
.
binaries
(
false
),
analyzeExhaust
,
Collections
.
singletonList
(
psiFile
));
state
.
compileCorrectFiles
(
CompilationErrorHandler
.
THROW_EXCEPTION
);
return
state
;
}
}
compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java
浏览文件 @
652be4ed
...
...
@@ -37,13 +37,12 @@ import java.util.Collections;
*/
public
abstract
class
CodegenTestCase
extends
JetLiteFixture
{
protected
static
void
assertThrows
(
Method
foo
,
Class
<?
extends
Throwable
>
exceptionClass
,
Object
instance
,
Object
...
args
)
throws
IllegalAccessException
{
protected
static
void
assertThrows
(
Method
foo
,
Class
<?
extends
Throwable
>
exceptionClass
,
Object
instance
,
Object
...
args
)
throws
IllegalAccessException
{
boolean
caught
=
false
;
try
{
foo
.
invoke
(
instance
,
args
);
}
catch
(
InvocationTargetException
ex
)
{
catch
(
InvocationTargetException
ex
)
{
caught
=
exceptionClass
.
isInstance
(
ex
.
getTargetException
());
}
assertTrue
(
caught
);
...
...
@@ -61,17 +60,16 @@ public abstract class CodegenTestCase extends JetLiteFixture {
}
protected
void
loadText
(
final
String
text
)
{
myFile
=
(
JetFile
)
createFile
(
"a.jet"
,
text
);
myFile
=
(
JetFile
)
createFile
(
"a.jet"
,
text
);
}
@Override
protected
String
loadFile
(
final
String
name
)
{
try
{
final
String
content
=
doLoadFile
(
JetParsingTest
.
getTestDataDir
()
+
"/codegen/"
,
name
);
myFile
=
(
JetFile
)
createFile
(
name
,
content
);
myFile
=
(
JetFile
)
createFile
(
name
,
content
);
return
content
;
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
...
...
@@ -89,12 +87,10 @@ public abstract class CodegenTestCase extends JetLiteFixture {
String
actual
;
try
{
actual
=
blackBox
();
}
catch
(
NoClassDefFoundError
e
)
{
}
catch
(
NoClassDefFoundError
e
)
{
System
.
out
.
println
(
generateToText
());
throw
e
;
}
catch
(
Throwable
e
)
{
}
catch
(
Throwable
e
)
{
System
.
out
.
println
(
generateToText
());
throw
new
RuntimeException
(
e
);
}
...
...
@@ -112,10 +108,9 @@ public abstract class CodegenTestCase extends JetLiteFixture {
String
fqName
=
NamespaceCodegen
.
getJVMClassName
(
JetPsiUtil
.
getFQName
(
myFile
),
true
).
replace
(
"/"
,
"."
);
Class
<?>
namespaceClass
=
loader
.
loadClass
(
fqName
);
Method
method
=
namespaceClass
.
getMethod
(
"box"
);
return
(
String
)
method
.
invoke
(
null
);
}
finally
{
loader
.
dispose
();
return
(
String
)
method
.
invoke
(
null
);
}
finally
{
loader
.
dispose
();
}
}
...
...
@@ -128,8 +123,7 @@ public abstract class CodegenTestCase extends JetLiteFixture {
}
private
GenerationState
generateCommon
(
ClassBuilderFactory
classBuilderFactory
)
{
final
AnalyzeExhaust
analyzeExhaust
=
AnalyzerFacadeForJVM
.
analyzeOneFileWithJavaIntegrationAndCheckForErrors
(
myFile
,
JetControlFlowDataTraceFactory
.
EMPTY
);
final
AnalyzeExhaust
analyzeExhaust
=
AnalyzerFacadeForJVM
.
analyzeOneFileWithJavaIntegrationAndCheckForErrors
(
myFile
,
JetControlFlowDataTraceFactory
.
EMPTY
);
GenerationState
state
=
new
GenerationState
(
getProject
(),
classBuilderFactory
,
analyzeExhaust
,
Collections
.
singletonList
(
myFile
));
state
.
compileCorrectFiles
(
CompilationErrorHandler
.
THROW_EXCEPTION
);
return
state
;
...
...
@@ -149,11 +143,9 @@ public abstract class CodegenTestCase extends JetLiteFixture {
String
fqName
=
NamespaceCodegen
.
getJVMClassName
(
JetPsiUtil
.
getFQName
(
myFile
),
true
).
replace
(
"/"
,
"."
);
try
{
return
createClassLoader
(
state
).
loadClass
(
fqName
);
}
catch
(
ClassNotFoundException
e
)
{
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
MalformedURLException
e
)
{
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
}
return
null
;
...
...
@@ -162,10 +154,8 @@ public abstract class CodegenTestCase extends JetLiteFixture {
protected
Class
loadClass
(
String
fqName
,
@NotNull
ClassFileFactory
state
)
{
try
{
return
createClassLoader
(
state
).
loadClass
(
fqName
);
}
catch
(
ClassNotFoundException
e
)
{
}
catch
(
MalformedURLException
e
)
{
}
catch
(
ClassNotFoundException
e
)
{
}
catch
(
MalformedURLException
e
)
{
}
fail
(
"No classfile was generated for: "
+
fqName
);
...
...
@@ -178,8 +168,7 @@ public abstract class CodegenTestCase extends JetLiteFixture {
ClassBuilderFactory
classBuilderFactory
=
ClassBuilderFactories
.
binaries
(
false
);
return
generateCommon
(
classBuilderFactory
).
getFactory
();
}
catch
(
RuntimeException
e
)
{
}
catch
(
RuntimeException
e
)
{
System
.
out
.
println
(
generateToText
());
throw
e
;
}
...
...
@@ -200,12 +189,10 @@ public abstract class CodegenTestCase extends JetLiteFixture {
r
=
method
;
}
if
(
r
==
null
)
{
if
(
r
==
null
)
throw
new
AssertionError
();
}
return
r
;
}
catch
(
Error
e
)
{
}
catch
(
Error
e
)
{
System
.
out
.
println
(
generateToText
());
throw
e
;
}
...
...
@@ -233,11 +220,11 @@ public abstract class CodegenTestCase extends JetLiteFixture {
protected
static
void
assertIsCurrentTime
(
long
returnValue
)
{
long
currentTime
=
System
.
currentTimeMillis
();
long
diff
=
Math
.
abs
(
returnValue
-
currentTime
);
assertTrue
(
"Difference with current time: "
+
diff
+
" (this test is a bad one: it may fail even if the generated code is correct)"
,
diff
<=
1L
);
assertTrue
(
"Difference with current time: "
+
diff
+
" (this test is a bad one: it may fail even if the generated code is correct)"
,
diff
<=
1L
);
}
protected
Class
loadImplementationClass
(
@NotNull
ClassFileFactory
codegens
,
final
String
name
)
{
return
loadClass
(
name
,
codegens
);
}
}
compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java
浏览文件 @
652be4ed
...
...
@@ -35,9 +35,9 @@ import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import
org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM
;
import
org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode
;
import
org.jetbrains.jet.lang.types.ErrorUtils
;
import
org.jetbrains.jet.lang.types.lang.JetStandardLibrary
;
import
org.jetbrains.jet.lang.types.JetType
;
import
org.jetbrains.jet.lang.types.TypeConstructor
;
import
org.jetbrains.jet.lang.types.lang.JetStandardLibrary
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -139,13 +139,11 @@ public abstract class ExpectedResolveData {
JetStandardLibrary
lib
=
JetStandardLibrary
.
getInstance
();
AnalyzeExhaust
analyzeExhaust
=
AnalyzerFacadeForJVM
.
analyzeFilesWithJavaIntegration
(
project
,
files
,
Predicates
.<
PsiFile
>
alwaysTrue
(),
JetControlFlowDataTraceFactory
.
EMPTY
,
CompilerSpecialMode
.
REGULAR
);
Predicates
.<
PsiFile
>
alwaysTrue
(),
JetControlFlowDataTraceFactory
.
EMPTY
,
CompilerSpecialMode
.
REGULAR
);
BindingContext
bindingContext
=
analyzeExhaust
.
getBindingContext
();
for
(
Diagnostic
diagnostic
:
bindingContext
.
getDiagnostics
())
{
if
(
diagnostic
instanceof
UnresolvedReferenceDiagnostic
)
{
UnresolvedReferenceDiagnostic
unresolvedReferenceDiagnostic
=
(
UnresolvedReferenceDiagnostic
)
diagnostic
;
UnresolvedReferenceDiagnostic
unresolvedReferenceDiagnostic
=
(
UnresolvedReferenceDiagnostic
)
diagnostic
;
unresolvedReferences
.
add
(
unresolvedReferenceDiagnostic
.
getPsiElement
());
}
}
...
...
@@ -176,35 +174,35 @@ public abstract class ExpectedResolveData {
JetReferenceExpression
referenceExpression
=
PsiTreeUtil
.
getParentOfType
(
element
,
JetReferenceExpression
.
class
);
if
(
"!"
.
equals
(
name
))
{
assertTrue
(
"Must have been unresolved: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
unresolvedReferences
.
contains
(
referenceExpression
));
"Must have been unresolved: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
unresolvedReferences
.
contains
(
referenceExpression
));
continue
;
}
if
(
"!!"
.
equals
(
name
))
{
assertTrue
(
"Must have been resolved to multiple descriptors: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
bindingContext
.
get
(
AMBIGUOUS_REFERENCE_TARGET
,
referenceExpression
)
!=
null
);
"Must have been resolved to multiple descriptors: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
bindingContext
.
get
(
AMBIGUOUS_REFERENCE_TARGET
,
referenceExpression
)
!=
null
);
continue
;
}
else
if
(
"!null"
.
equals
(
name
))
{
assertTrue
(
"Must have been resolved to null: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)
==
null
"Must have been resolved to null: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)
==
null
);
continue
;
}
else
if
(
"!error"
.
equals
(
name
))
{
assertTrue
(
"Must have been resolved to error: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
ErrorUtils
.
isError
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
))
"Must have been resolved to error: "
+
renderReferenceInContext
(
referenceExpression
)
+
" but was resolved to "
+
DescriptorRenderer
.
TEXT
.
render
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
)),
ErrorUtils
.
isError
(
bindingContext
.
get
(
REFERENCE_TARGET
,
referenceExpression
))
);
continue
;
}
...
...
@@ -252,30 +250,30 @@ public abstract class ExpectedResolveData {
if
(
expected
instanceof
JetParameter
||
actual
instanceof
JetParameter
)
{
DeclarationDescriptor
expectedDescriptor
;
if
(
name
.
startsWith
(
"$"
))
{
expectedDescriptor
=
bindingContext
.
get
(
BindingContext
.
PRIMARY_CONSTRUCTOR_PARAMETER
,
(
JetParameter
)
expected
);
expectedDescriptor
=
bindingContext
.
get
(
BindingContext
.
PRIMARY_CONSTRUCTOR_PARAMETER
,
(
JetParameter
)
expected
);
}
else
{
expectedDescriptor
=
bindingContext
.
get
(
BindingContext
.
DECLARATION_TO_DESCRIPTOR
,
expected
);
if
(
expectedDescriptor
==
null
)
{
expectedDescriptor
=
bindingContext
.
get
(
BindingContext
.
CONSTRUCTOR
,
(
JetElement
)
expected
);
expectedDescriptor
=
bindingContext
.
get
(
BindingContext
.
CONSTRUCTOR
,
(
JetElement
)
expected
);
}
}
DeclarationDescriptor
actualDescriptor
=
bindingContext
.
get
(
REFERENCE_TARGET
,
reference
);
if
(
actualDescriptor
instanceof
VariableAsFunctionDescriptor
)
{
VariableAsFunctionDescriptor
descriptor
=
(
VariableAsFunctionDescriptor
)
actualDescriptor
;
VariableAsFunctionDescriptor
descriptor
=
(
VariableAsFunctionDescriptor
)
actualDescriptor
;
actualDescriptor
=
descriptor
.
getVariableDescriptor
();
}
assertEquals
(
"Reference `"
+
name
+
"`"
+
renderReferenceInContext
(
reference
)
+
" is resolved into "
+
actualName
+
"."
,
expectedDescriptor
,
actualDescriptor
);
"Reference `"
+
name
+
"`"
+
renderReferenceInContext
(
reference
)
+
" is resolved into "
+
actualName
+
"."
,
expectedDescriptor
,
actualDescriptor
);
}
else
{
assertEquals
(
"Reference `"
+
name
+
"`"
+
renderReferenceInContext
(
reference
)
+
" is resolved into "
+
actualName
+
"."
,
expected
,
actual
);
"Reference `"
+
name
+
"`"
+
renderReferenceInContext
(
reference
)
+
" is resolved into "
+
actualName
+
"."
,
expected
,
actual
);
}
}
...
...
@@ -307,8 +305,7 @@ public abstract class ExpectedResolveData {
expectedTypeConstructor
=
classDescriptor
.
getTypeConstructor
();
}
else
if
(
declaration
instanceof
JetTypeParameter
)
{
TypeParameterDescriptor
typeParameterDescriptor
=
bindingContext
.
get
(
BindingContext
.
TYPE_PARAMETER
,
(
JetTypeParameter
)
declaration
);
TypeParameterDescriptor
typeParameterDescriptor
=
bindingContext
.
get
(
BindingContext
.
TYPE_PARAMETER
,
(
JetTypeParameter
)
declaration
);
expectedTypeConstructor
=
typeParameterDescriptor
.
getTypeConstructor
();
}
else
{
...
...
@@ -328,13 +325,14 @@ public abstract class ExpectedResolveData {
PsiElement
parent
=
statement
.
getParent
();
if
(!(
parent
instanceof
JetExpression
))
break
;
if
(
parent
instanceof
JetBlockExpression
)
break
;
statement
=
(
JetExpression
)
parent
;
statement
=
(
JetExpression
)
parent
;
}
JetDeclaration
declaration
=
PsiTreeUtil
.
getParentOfType
(
referenceExpression
,
JetDeclaration
.
class
);
return
referenceExpression
.
getText
()
+
" at "
+
DiagnosticUtils
.
atLocation
(
referenceExpression
)
+
" in "
+
statement
.
getText
()
+
(
declaration
==
null
?
""
:
" in "
+
declaration
.
getText
());
" in "
+
statement
.
getText
()
+
(
declaration
==
null
?
""
:
" in "
+
declaration
.
getText
());
}
private
static
<
T
>
T
getAncestorOfType
(
Class
<
T
>
type
,
PsiElement
element
)
{
...
...
@@ -342,7 +340,7 @@ public abstract class ExpectedResolveData {
element
=
element
.
getParent
();
}
@SuppressWarnings
({
"unchecked"
,
"UnnecessaryLocalVariable"
})
T
result
=
(
T
)
element
;
T
result
=
(
T
)
element
;
return
result
;
}
}
idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java
浏览文件 @
652be4ed
...
...
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import
org.jetbrains.jet.lang.psi.*
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.resolve.FqName
;
import
org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM
;
import
org.jetbrains.jet.lang.resolve.scopes.JetScope
;
import
org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor
;
import
org.jetbrains.jet.lang.types.JetType
;
...
...
@@ -66,7 +67,7 @@ public class JetSourceNavigationHelper {
}
final
List
<
JetFile
>
libraryFiles
=
findAllSourceFilesWhichContainIdentifier
(
declaration
);
for
(
JetFile
libraryFile
:
libraryFiles
)
{
BindingContext
bindingContext
=
AnalyzeSingleFileUtil
.
analyzeSingleFileWithCache
(
libraryFile
).
getBindingContext
(
);
BindingContext
bindingContext
=
AnalyzeSingleFileUtil
.
getContextForSingleFile
(
libraryFile
);
D
descriptor
=
bindingContext
.
get
(
slice
,
fqName
);
if
(
descriptor
!=
null
)
{
return
new
Tuple2
<
BindingContext
,
D
>(
bindingContext
,
descriptor
);
...
...
idea/src/org/jetbrains/jet/plugin/refactoring/JetNameSuggester.java
浏览文件 @
652be4ed
...
...
@@ -22,6 +22,7 @@ import com.intellij.util.ArrayUtil;
import
org.jetbrains.jet.lang.descriptors.ClassDescriptor
;
import
org.jetbrains.jet.lang.psi.*
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM
;
import
org.jetbrains.jet.lang.types.ErrorUtils
;
import
org.jetbrains.jet.lang.types.JetType
;
import
org.jetbrains.jet.lang.types.TypeUtils
;
...
...
@@ -29,13 +30,12 @@ import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import
org.jetbrains.jet.lang.types.lang.JetStandardLibrary
;
import
org.jetbrains.jet.lexer.JetLexer
;
import
org.jetbrains.jet.lexer.JetTokens
;
import
org.jetbrains.jet.plugin.project.AnalyzeSingleFileUtil
;
import
java.util.ArrayList
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
static
org
.
jetbrains
.
jet
.
plugin
.
project
.
AnalyzeSingleFileUtil
.
getContextForSingleFile
;
/**
* User: Alefas
* Date: 31.01.12
...
...
@@ -68,7 +68,7 @@ public class JetNameSuggester {
public
static
String
[]
suggestNames
(
JetExpression
expression
,
JetNameValidator
validator
)
{
ArrayList
<
String
>
result
=
new
ArrayList
<
String
>();
BindingContext
bindingContext
=
getContextForSingleFile
((
JetFile
)
expression
.
getContainingFile
());
BindingContext
bindingContext
=
AnalyzeSingleFileUtil
.
getContextForSingleFile
((
JetFile
)
expression
.
getContainingFile
());
JetType
jetType
=
bindingContext
.
get
(
BindingContext
.
EXPRESSION_TYPE
,
expression
);
if
(
jetType
!=
null
)
{
addNamesForType
(
result
,
jetType
,
validator
);
...
...
idea/src/org/jetbrains/jet/plugin/refactoring/introduceVariable/JetIntroduceVariableHandler.java
浏览文件 @
652be4ed
...
...
@@ -37,17 +37,17 @@ import org.jetbrains.annotations.Nullable;
import
org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
;
import
org.jetbrains.jet.lang.psi.*
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM
;
import
org.jetbrains.jet.lang.types.JetType
;
import
org.jetbrains.jet.lang.types.NamespaceType
;
import
org.jetbrains.jet.lang.types.checker.JetTypeChecker
;
import
org.jetbrains.jet.lang.types.lang.JetStandardLibrary
;
import
org.jetbrains.jet.lexer.JetTokens
;
import
org.jetbrains.jet.plugin.project.AnalyzeSingleFileUtil
;
import
org.jetbrains.jet.plugin.refactoring.*
;
import
java.util.*
;
import
static
org
.
jetbrains
.
jet
.
plugin
.
project
.
AnalyzeSingleFileUtil
.
getContextForSingleFile
;
/**
* User: Alefas
* Date: 25.01.12
...
...
@@ -99,7 +99,7 @@ public class JetIntroduceVariableHandler extends JetIntroduceHandlerBase {
return
;
}
}
BindingContext
bindingContext
=
getContextForSingleFile
((
JetFile
)
expression
.
getContainingFile
());
BindingContext
bindingContext
=
AnalyzeSingleFileUtil
.
getContextForSingleFile
((
JetFile
)
expression
.
getContainingFile
());
final
JetType
expressionType
=
bindingContext
.
get
(
BindingContext
.
EXPRESSION_TYPE
,
expression
);
//can be null or error type
if
(
expressionType
instanceof
NamespaceType
)
{
showErrorHint
(
project
,
editor
,
JetRefactoringBundle
.
message
(
"cannot.refactor.namespace.expression"
));
...
...
@@ -370,7 +370,7 @@ public class JetIntroduceVariableHandler extends JetIntroduceHandlerBase {
final
ArrayList
<
JetExpression
>
result
=
new
ArrayList
<
JetExpression
>();
final
BindingContext
bindingContext
=
getContextForSingleFile
((
JetFile
)
expression
.
getContainingFile
());
final
BindingContext
bindingContext
=
AnalyzeSingleFileUtil
.
getContextForSingleFile
((
JetFile
)
expression
.
getContainingFile
());
JetVisitorVoid
visitor
=
new
JetVisitorVoid
()
{
@Override
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录