Compare commits

..

234 Commits

Author SHA1 Message Date
Natalia Ukhorskaya
ef3add1005 Merge branch 'master' into android_studio
Conflicts:
   update_dependencies.xml
2014-02-17 11:25:04 +04:00
Pavel V. Talanov
4c57aa9f23 Generate Injectors: minor, remove redundant GenerateInjectors class 2014-02-14 16:47:23 +04:00
Pavel V. Talanov
f8a8bbe9b0 Generate Injectors: add ability to specify that a field is a context
Context field's properties can injected into other components
Use it in GenerateInjectors.kt
2014-02-14 16:47:22 +04:00
Pavel V. Talanov
6c77ea91c5 Generate Injectors: simplify and remove redundancy 2014-02-14 16:47:21 +04:00
Pavel V. Talanov
00cbd11b84 Share "Generate Injectors" run configurations 2014-02-14 16:47:20 +04:00
Pavel V. Talanov
1ab4c2763f Generate Injectors: rewrite facade to Kotlin 2014-02-14 16:47:19 +04:00
Pavel V. Talanov
73dd8a051a Remove useless InjectorForJvmCodegen 2014-02-14 16:47:18 +04:00
Pavel V. Talanov
b37c57cf2b Minor: remove redundant implementations of ResolutionContext#self 2014-02-14 16:47:17 +04:00
Evgeny Gerashchenko
5a1f98041e Simplified kotlinc tests. 2014-02-13 20:46:29 +04:00
Evgeny Gerashchenko
aeade9e68d Regenerated default protobuf. 2014-02-13 20:46:28 +04:00
Evgeny Gerashchenko
846ee2c8ac Introduced protobuf generating script.
It generates two variants: lite (for runtime usage) and debug (for
tests).
2014-02-13 20:46:28 +04:00
Alexander Udalov
8b918ef1aa Add regression tests for obsolete issues
#KT-1291 Obsolete
 #KT-2895 Obsolete
 #KT-3060 Obsolete
 #KT-3298 Obsolete
 #KT-3613 Obsolete
 #KT-3862 Obsolete
2014-02-13 04:43:53 +04:00
Natalia Ukhorskaya
320c23494f Add method to MockPsiDocumentManager to update kotlin plugin to IDEA 13.1 (134.1007) 2014-02-12 22:10:42 +04:00
Alexander Udalov
0b08d03bd6 Minor refactorings in codegen contexts
Add assertions, nullability annotations, fix formatting, etc.
2014-02-12 19:32:59 +04:00
Alexander Udalov
a98434263b Add regression test for outdated issue
#KT-3738 Obsolete
2014-02-12 19:17:55 +04:00
Alexander Udalov
35c7c4afd8 Fix capturing outer this in some cases in JVM codegen
When property initializer of some inner entity (e.g. anonymous object) contains
a reference to some outer entity (say, a property of the outer class), we need
to make sure we called "lookupInContext" on this entity's owner class, so that
"setCaptureThis" was called on the appropriate closure

 #KT-4176 Fixed
2014-02-12 19:17:55 +04:00
Natalia Ukhorskaya
7bf26283b2 Add implementation of PsiDocumentManager to update kotlin plugin to IDEA 13.1 (134.1007) 2014-02-12 18:00:44 +04:00
Svetlana Isakova
70374ea9be KT-4529 Lambdas are analyzed improperly in an infix call nested inside a println
#KT-4529 Fixed
2014-02-12 14:47:10 +04:00
Svetlana Isakova
2ebe8fd6a2 improvements after review in constraint system tests 2014-02-12 12:48:15 +04:00
Svetlana Isakova
4c1c9f8407 do not record smart cast to not nullable type separately 2014-02-12 12:48:14 +04:00
Svetlana Isakova
9063b3803e record smartcast to the most specific type 2014-02-12 12:48:14 +04:00
Svetlana Isakova
9832676701 generate constraint system tests
more tests added
2014-02-12 12:48:13 +04:00
Svetlana Isakova
791fa22abb KT-4405 Control-flow analysis is not performed for some local declarations #KT-4405 Fixed 2014-02-12 12:48:13 +04:00
Svetlana Isakova
aa713ef1f6 generate pseudocode for property accessor only if the property is local
otherwise check it independently like a function
2014-02-12 12:48:12 +04:00
Svetlana Isakova
1c4db84d92 do not try properties named 'invoke' when resolve 'invoke' 2014-02-12 12:48:12 +04:00
Svetlana Isakova
b51e3dc464 added ConstraintSystemTest 2014-02-12 12:48:11 +04:00
Svetlana Isakova
9d493b6f7b generate CHECK_CAST for smartcasted 'this' 2014-02-12 12:48:11 +04:00
Svetlana Isakova
9ed57a5767 removed AutoCastReceiver
check subtype for receiver by AutoCastUtils.isSubTypeByAutoCast directly
 #KT-4403 Fixed
 #KT-4415 Fixed
2014-02-12 12:48:10 +04:00
Svetlana Isakova
5ef320173c generate pseudocode for functions in local classes
#KT-4405 In progress
 #KT-3501 Fixed
2014-02-11 21:07:10 +04:00
Svetlana Isakova
f74fbf9f8b added readme file about diagnostic tests directives 2014-02-11 21:07:09 +04:00
Svetlana Isakova
1446feff20 removed unnecessary more accept(JetVisitorVoid) methods 2014-02-11 21:07:09 +04:00
Svetlana Isakova
cfb97bf0b9 made JetVisitorVoid extends JetVisitor<Void, Void> 2014-02-11 21:07:09 +04:00
Svetlana Isakova
64e13114e2 store unsubstituted descriptor as REFERENCE_TARGET 2014-02-11 21:07:09 +04:00
Svetlana Isakova
8868da8c5f KT-4372 Invalid error position and failing to resolve invoke with receiver from other module #KT-4372 Fixed 2014-02-11 21:07:09 +04:00
Svetlana Isakova
e95e505b5d asserts changed to LOG.error 2014-02-11 21:07:08 +04:00
Svetlana Isakova
c5d9757b94 added renderers for constraint system and type bounds
moved classes
2014-02-11 21:07:08 +04:00
Svetlana Isakova
45abab2a2c KT-4341 No resolved call for right-hand side of equals expression
#KT-4341 Fixed
2014-02-11 21:07:08 +04:00
Svetlana Isakova
aca21f78d5 check incomplete equality 2014-02-11 21:07:08 +04:00
Pavel V. Talanov
80183c88cf Do not normalize visibilities for fake overrides
#KT-4525 Fixed
2014-02-11 20:13:11 +04:00
Mikhael Bogdanov
eab7f5539b Fixed dependency to kotlin runtime (dist version) 2014-02-11 17:36:01 +04:00
Pavel V. Talanov
4a3ccc4eac JDR: do not create package fragment for class statics if class cannot be resolved
This keeps behaviour consistent in rare cases when JavaClass can be found but not resolved
As of now this can happen in IDE if we take PsiClass from index but file structure is wrong so we can't resolve the class
Add test which documents this case
2014-02-11 17:17:34 +04:00
Pavel V. Talanov
4501adf5f1 AbstractInsertImportOnPasteTest: use test framework to create correct file structure for java files 2014-02-11 17:17:33 +04:00
Pavel V. Talanov
e3ae7afac3 Add validation for binding between java classes and corresponding package fragments 2014-02-11 17:17:06 +04:00
Pavel V. Talanov
e4a0221abc Remove PackageFragmentDescriptor#getProvider method
PackageFragmentProvider should be hidden from the client of PackageFramentDescriptor
2014-02-11 17:17:05 +04:00
Pavel V. Talanov
cd6a71ef81 Refactor JDR: add explicit binding between java classes and packages for their statics
Get rid of Kind in JavaPackageFragmentDescriptor and create subclass which exposes additional function
Add method in JavaClassDescriptor to get correponding package fragment
Remove JavaDescriptorResolver from context
2014-02-11 17:17:04 +04:00
Pavel V. Talanov
00a5e7ab15 Refactor JDR: remove some of the usages of JavaDescriptorResolver class 2014-02-11 17:17:03 +04:00
Pavel V. Talanov
16a2a5cd62 Refactor JDR: minor extract function in LazyJavaPackageFragmentProvider 2014-02-11 17:17:02 +04:00
Pavel V. Talanov
2fe2a50b14 Refactor JDR: use JavaResolverCache in LazyJavaPackageFragmentProvider directly
Remove LazyJavaClassResolverWithCache
This actually can affect behaviour because JavaResolverCache has slightly different logic (uses CLASS key in BindingContext as opposed to FQNAME_TO_CLASS_DESCRIPTOR)
2014-02-11 17:17:01 +04:00
Pavel V. Talanov
18d088cb71 Refactor JDR: create LazyJavaPackageFragmentProvider in injector 2014-02-11 17:17:00 +04:00
Pavel V. Talanov
737f538ea7 Minor: use orEmpty() instead of ?: listOf() in LazyJavaPackageFragmentProvider 2014-02-11 17:16:59 +04:00
Pavel V. Talanov
4153182fd2 Refactor JDR: minor, extract class 2014-02-11 17:16:58 +04:00
Zalim Bashorov
37154e42d2 JS backend: fixed smartcast when a call have implicit this or receiver. 2014-02-11 13:50:16 +04:00
Alexey Sedunov
40eaf49a8c Support find usages for declarations with multiple overridden Java methods (e.g. J -> J -> K) 2014-02-10 18:57:56 +04:00
Aleksei Sedunov
0e451bd35e Add assertion message 2014-02-10 12:25:53 +04:00
Alexey Sedunov
d549257bfc Allow to find usages of Java class via references to its constructor #KT-4521 Fixed 2014-02-10 12:25:52 +04:00
Pradyoth Kukkapalli
8b6bd8a184 New Intention Action: Replace an infix function call with a dot qualified method call. 2014-02-09 09:05:19 -08:00
Tuomas Tynkkynen
64f67f30f0 Prevent smartSelectExpression from breaking up 'this@outerClass'
The previous commit made JetThisExpression not implement
JetStatementExpression. This had the side effect that
smartSelectExpression over a label-qualified this expression
(e.g 'this@outerClass') would now also list a plain 'this'
as a potential expression. Restore the old behaviour by adding an
explicit check for JetThisExpression.
2014-02-09 17:22:30 +04:00
Tuomas Tynkkynen
9ce40cd17b Fix unnecessary parenthesis around 'this' in refactorings
Operator priority calculation for 'this' expressions was incorrect in
JetPsiUtil.getPriority(): it would return a very low value for
a JetThisExpression, causing the IDE to report that parenthesis
are necessary in an expression like '(this)[1]'.

Fix this by making JetThisExpression not implement
JetStatementExpression by removing the implements clause from
JetLabelQualifiedInstanceExpression and adding it to all other
subclasses of JetLabelQualifiedInstanceExpression.

Fixes KT-4513.
2014-02-09 17:22:27 +04:00
Tuomas Tynkkynen
85c46019d3 Add test suite for smart expression selector
Add test suite for smart expression selector (the small expression list
popup in e.g. Extract Variable.)

The test file format is similar to that in JetNameSuggesterTest: a .kt
file with the usual <caret> marker specifying the place where the smart
selector will be run. Then, the last comment in the file should contain
the expected outcome.
2014-02-09 17:22:24 +04:00
Tuomas Tynkkynen
815ca2fe57 Separate GUI logic from smartSelectExpression
Previously smartSelectExpression did both the determination of suitable
expressions and displaying the GUI. Separate the actual logic into a new
method, getSmartSelectSuggestions so that smart selection can be tested
in the future.
2014-02-09 17:22:19 +04:00
Tuomas Tynkkynen
7429cc8819 Make JetTestUtils.getLastCommentInFile() to allow trailing newline
Many editors add a trailing newline when saving. Allow them in
getLastCommentInFile.
2014-02-09 17:22:10 +04:00
Tuomas Tynkkynen
420a08167b Extract JetTestUtils.getLastCommentInFile()
JetNameSuggesterTest contains useful code for getting the last comment
of a file. Extract it to JetTestUtils.getLastCommentInFile() so other
tests can use it as well.
2014-02-09 17:22:07 +04:00
Alexander Udalov
cb2733a0ae Fix built-ins serializer to work with any packages
Make it serialize data for all packages found in sources and not only
KotlinBuiltIns.FQ_NAME, i.e. "jet". This is required to migrate built-ins from
package "jet" to "kotlin"
2014-02-09 04:17:35 +04:00
Andrey Breslav
9229062926 Do not annotate bare type parameters as @Nullable
This is to account for the case of, say

     class Function<R> { fun invoke(): R }

it would be a shame to put @Nullable on the return type of the function, and force all callers to check for null,
so we put no annotations
2014-02-07 16:41:12 -08:00
Mikhael Bogdanov
e0ca1abe4b KT-3706 Inconsistent stack height in try catch finally in function
KT-4134 Incorrect bytecode is generated for

 #KT-3706 Fixed
 #KT-4134 Fixed
2014-02-07 13:45:22 +04:00
Nikolay Krasko
7b07b748cb Refactoring: remove unused method 2014-02-06 15:52:04 +04:00
Nikolay Krasko
1d884912a0 Minor: call overloaded constructor 2014-02-06 15:52:04 +04:00
Nikolay Krasko
10dec22feb Minor: Add 'memoized' to dictionary 2014-02-06 15:52:03 +04:00
Nikolay Krasko
876040cb53 Minor: fix warnings and formatting 2014-02-06 15:52:03 +04:00
Nikolay Krasko
3b3f9f7022 Rewrite KotlinImportListRenderer to Java to make it compilable with both JDK 1.6 and JDK 1.7
In JDK 1.7 JList has generic parameter
2014-02-06 15:52:02 +04:00
Nikolay Krasko
e46c19b3f8 Test for correct references to java classes 2014-02-06 15:52:02 +04:00
Nikolay Krasko
e36c0130a0 Test for reference to kotlin compiled inner class 2014-02-06 15:52:01 +04:00
Nikolay Krasko
3ceed45c09 Test for resolving references from package which is declared both in binaries and sources 2014-02-06 15:52:01 +04:00
Erokhin Stanislav
a7eb143cff JS backend: Fix aliasing in CallTranslator for cases noReceiver & receiverObject & add hack for thisObject 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
5d4cb1e065 JS backend: Fix safe call side effects 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
7f8c17d6af JS backend: drop CallType 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
e9b1ae7cb1 JS backend: Move CallTranslator to new package & create CallTranslator object 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
47ed126aa4 JS backend: Move CallInfo extension to separate file. 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
a4436806f7 JS backend: cosmetic changes & class for cases remake to object 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
97955776c4 JS backend: simplify DelegatePropertyAccessIntrinsic 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
5a343841d9 JS backend: add debug info for CallInfo 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
4d287c96d6 JS backend: In CallInfo: receiver1, receiver2 -> ExplicitReceivers. Drop CallInfo.nullableReceiverForSafeCall, move constructSafeCall to extension for CallInfo 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
257d13e90b JS backend: cosmetic changes & remake fakeCall 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
f268f69cbf JS backend: Fix cached array access (KT-740-2) 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
5c9bda0f6e JS backend: Migrate type of alias from JsName to JsExpression 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
ae6fdcc673 JS backend: Fix cache receiver in VariableAccess (KT-740-1) 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
2f1b44ed9e JS backend: Dropped old CallTranslator 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
2d50858289 JS backend: Use new CallTranslator for build main and test calls 2014-02-06 14:01:11 +04:00
Erokhin Stanislav
39f3a6ec4c JS backend: Migrate FunctionIntrinsic to CallInfo 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
4e9187779d JS backend: Optimized CallInfo classes structure 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
7a0f359aa0 JS backend: Use new CallTranslator for ArrayAccessTranslator 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
46a045f969 JS backend: Fix Delegate property - use new CallTranslator 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
42437eb755 JS backend: fix native spread call 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
4bffff43aa JS backend: Use newCallTranslator for several Translators 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
75dd459bdf JS backend: Fix tracked used descriptors 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
4617e730d6 JS backend: Use new call translator in CallExpressionTranslator and move invoke intrinsic to FunctionCallCases 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
a1edc0368a JS backend: simplify canBePropertyAccess method 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
31668406cd JS backend: drop old property access translator 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
402a9f6c81 JS backend: Use new CallBuilder for property access 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
4527c56f6d JS backend: Fix super property access call 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
392da838ca JS backend: Add support for safe call 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
083e789692 JS backend: Add DelegatePropertyAccessIntrinsic 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
740307e94a JS backend: Add VariableCallCases (not all cases supported) 2014-02-06 14:01:10 +04:00
Erokhin Stanislav
16f97d5c97 JS backend: Add FunctionCallCases 2014-02-06 14:01:09 +04:00
Erokhin Stanislav
ee54e50138 JS backend: Add api for call builder and CallCaseDispatcher 2014-02-06 14:01:09 +04:00
Erokhin Stanislav
21f56365b8 JS backend: Create new CallInfo 2014-02-06 14:01:09 +04:00
Erokhin Stanislav
a500925945 Add notNull annotations to VariableAsFunctionResolvedCall 2014-02-06 14:01:09 +04:00
Evgeny Gerashchenko
ce7e0a7457 Fixed problem with overriding method with non-trivial raw type (when erased type parameter has upper bound)
Also added cases for the code which was changed.
2014-02-06 13:52:59 +04:00
Zalim Bashorov
2d31d62163 JS lib: drop es5 shims. 2014-02-06 12:21:12 +04:00
Zalim Bashorov
0812dc8731 JS backend: fixed name clash when override native class. 2014-02-06 12:21:12 +04:00
Zalim Bashorov
bdce3412e3 JS backend: add workaround for mangling Any methods(equals, hashCode and toString) always. 2014-02-06 12:21:12 +04:00
Zalim Bashorov
bc273ddd75 JS backend: fixed using the stable mangling for extra cases. 2014-02-06 12:21:12 +04:00
Zalim Bashorov
2fe5f63924 JS backend: rename test mangling -> manglingStability. And make it independent of structure of generated code. 2014-02-06 12:21:12 +04:00
Zalim Bashorov
77277ce197 JS backend: removed the unnecessary main function from some tests. 2014-02-06 12:21:12 +04:00
Andrey Breslav
8dc9aecbf8 DescriptorSearchRule removed 2014-02-05 18:12:01 +04:00
Andrey Breslav
aa0dde3a78 Old implementation of JavaDescriptorResolver deleted 2014-02-05 18:12:01 +04:00
Andrey Breslav
9f918d48b5 JavaDescriptorResolver always uses lazy mode 2014-02-05 18:12:01 +04:00
Andrey Breslav
76c722b81c Utilities moved closer to their usages and rewritten to Kotlin 2014-02-05 18:12:00 +04:00
Andrey Breslav
e119ca27ca AnnotationLoadingUtil created. Relevant code/constants moved there 2014-02-05 18:11:51 +04:00
Andrey Breslav
aed1ccf771 getKotlinBuiltinClassDescriptor() moved to DescriptorResolverUtils 2014-02-05 18:07:35 +04:00
Andrey Breslav
3d1f2c25e2 resolveCompileTimeConstantValue() rewritten to Kotlin 2014-02-05 18:07:35 +04:00
Andrey Breslav
6aca05023a OBJECT_FQ_NAME moved to DescriptorResolverUtils 2014-02-05 18:07:35 +04:00
Andrey Breslav
ab3b8d63df ExternalAnnotationResolver is enough to look for external annotations 2014-02-05 18:07:35 +04:00
Pavel V. Talanov
6c96d235ec Tests: add complex tests for references to libraries
These tests check that that complex references (var p by delegate, for in collection, array[index]) are resolved correctly when target descriptors have type parameters
See 41f9dcba91

 #KT-4505 Fixed
2014-02-05 17:15:14 +04:00
Alexey Sedunov
7e1c9194f1 Implement navigation to references from Call Hierarchy view
#KT-4518 Fixed
2014-02-05 16:28:16 +04:00
Pavel V. Talanov
c6c1389144 Imports on copy/paste UI: do not show misleading icon in dialog 2014-02-05 12:42:19 +04:00
Pavel V. Talanov
ccaf87bc17 Imports on copy/paste: Check whether import is needed before showing the user
Minor: rename ImportInsertHelper.doNeedImport -> needImport
2014-02-05 11:43:05 +04:00
Pavel V. Talanov
61153c87e0 Insert imports on copy/paste
Introduce KotlinCopyPasteReferenceProcessor
2014-02-04 20:19:52 +04:00
Pavel V. Talanov
2f55959578 Refactor: rewrite JetReferenceContributor to kotlin
Add additional utilities to track what psi elements are capable of holding references
2014-02-04 17:09:45 +04:00
Pavel V. Talanov
41f9dcba91 Refactor: unite two hierarchies or reference, use common code across all references
Jet*Reference#getTargetDescriptors() no longer returns nullable value (convention is dropped)
Use ResolvedCall#getCandidateDescriptor() instead of ResolvedCall#getResultingDescriptor() because unsubstituted descriptors are expected
Add JetReference#resolveMap() function
2014-02-04 17:09:44 +04:00
Pavel V. Talanov
f06cef684e Refactor: introduce JetReference, rename: JetPsiReference -> AbstractJetReference
Add resolveToDescriptors() to JetReference trait
Rewrite JetPsiReference to kotlin
2014-02-04 17:09:43 +04:00
Pavel V. Talanov
cdc6e1b5ba Refactor: move utilities to a separate file 2014-02-04 17:09:42 +04:00
Pavel V. Talanov
8e19ba9851 Fix JetSimpleNameExpression#getReceiver
Correct behaviour for unary, binary expressions and type references
Add instanceof checks in TipsManager so it's clear it only takes care of certain types of JetSimpleNameExpression
2014-02-04 17:09:41 +04:00
Pavel V. Talanov
b7e6717936 Kotlin code style: keywords on new line 2014-02-04 17:09:40 +04:00
Pavel V. Talanov
11c1e29287 Copy paste: annotations for IDEA classes and corresponding changes in ConvertJavaCopyPastePostProcessor 2014-02-04 17:09:39 +04:00
Pavel V. Talanov
7daf7374f8 Minor: JavaCopyPastePostProcessor -> ConvertJavaCopyPastePostProcessor for clarity 2014-02-04 17:09:38 +04:00
Pavel V. Talanov
4638806d11 Shorten references: Do not lookup packages when searching for conflicting declarations
Minor: use JetTreeVisitor
2014-02-04 17:09:37 +04:00
Andrey Breslav
30f49f3c9a Invalidate per-file cache on exceptions 2014-02-04 15:24:27 +04:00
Andrey Breslav
e60bd514fa StorageManager&ExceptionTracker delivered where needed
- GlobalContext introduced to group the two
- Caches track exceptions
2014-02-04 15:24:27 +04:00
Andrey Breslav
364182e3f0 Unneeded public parameters made private 2014-02-04 15:23:15 +04:00
Andrey Breslav
2da51a49dc Invalidate ResolveElementCache on exceptions from storage manager 2014-02-04 15:23:15 +04:00
Andrey Breslav
a90dbc48ef Information about LockBasedStorageManager instances added to assertions 2014-02-04 15:23:14 +04:00
Alexey Sedunov
950e8d521b Remove unjustified assertion 2014-02-04 14:42:39 +04:00
Alexey Sedunov
2ea1a89e4c Specify type explicitly: Add tests 2014-02-04 14:42:37 +04:00
Alexey Sedunov
c251e2dfcb Use lazy analysis in DataFlowValueRenderingTest 2014-02-04 14:42:35 +04:00
Alexey Sedunov
2d72f60f04 Use lazy analysis in live templates 2014-02-04 14:42:34 +04:00
Alexey Sedunov
60fb461842 Go to Super: Use lazy analysis 2014-02-04 14:42:32 +04:00
Alexey Sedunov
7c1e28a748 Override/Implement methods: Use lazy analysis 2014-02-04 14:42:31 +04:00
Alexey Sedunov
bfbcaba0b0 Use lazy analysis in intention actions 2014-02-04 12:59:23 +04:00
Alexey Sedunov
a43404d7eb Change Signature: Use lazy analysis 2014-02-04 12:59:21 +04:00
Alexey Sedunov
ac984b0566 Fix warnings 2014-02-04 12:59:16 +04:00
Alexey Sedunov
ec4c83dc91 Introduce Variable: Use lazy analysis
#KT-3651 Fixed
2014-02-04 12:59:14 +04:00
Alexey Sedunov
a4d6fd9cd5 Call Hierarchy: Use lazy analysis
#KT-4492 Fixed
2014-02-04 12:59:12 +04:00
Alexey Sedunov
0ee950f428 Use lazy analysis in usage type provider 2014-02-04 12:45:57 +04:00
Alexey Sedunov
bfa2b9ba35 Use lazy analysis in Safe Delete 2014-02-04 12:45:56 +04:00
Nikolay Krasko
f526129ca4 Refactoring: use injector for creating lazy resolve session 2014-02-04 12:31:38 +04:00
Nikolay Krasko
b8ddb658fb Refactoring: hide fact of using injector inside lazy resolve session 2014-02-04 12:31:38 +04:00
Nikolay Krasko
36d5e580b4 Refactoring: remove unnecessary constructors (prepare for injectors) 2014-02-04 12:31:37 +04:00
Nikolay Krasko
9aac846798 Refactoring: remove unused jvmInternalName from KotlinPackageLightClassData 2014-02-04 12:31:37 +04:00
Nikolay Krasko
45be6b081d Minor: add public modifier 2014-02-04 12:31:36 +04:00
Nikolay Krasko
5f71511788 Test for "KT-3769 Find usages gives no result for overrides"
#KT-3769 Obsolete
2014-02-04 12:31:36 +04:00
Alexander Udalov
540a06d45d Add -ea to java invocations in build.xml
Also fail if "builtins" target failed to complete successfully
2014-02-03 20:45:20 +04:00
Evgeny Gerashchenko
284124569d Fixed super signature generation when JetObject is explicit.
#KT-4485 fixed
2014-02-03 17:53:07 +04:00
Alexander Udalov
640dac834f Suppress "nothing to override" on equals, hashCode, toString
This is needed to smoothly make equals, hashCode and toString members of Any
instead of being extensions, as they are now: according to our bootstrapping
process, the same compiler code will be built twice, by old compiler (with
extensions) and by new compiler (with members). In the resulting code
'override' should be on all these members in all classes, so the old compiler
should be able to compile such code
2014-02-03 16:26:17 +04:00
Natalia Ukhorskaya
2b382ef719 Find main function when configuring classpath in Run Configuration
#KT-4482 Fixed Exception in thread "main" java.lang.ClassNotFoundException
2014-02-03 13:53:47 +04:00
Natalia Ukhorskaya
420349bb95 Refactoring in CompileTimeChecker 2014-02-03 13:53:46 +04:00
Alexey Sedunov
d7f0e02b16 Simplify function 2014-02-03 13:47:05 +04:00
Alexey Sedunov
95187cd035 Avoid usage duplication for declarations with multiple light elements 2014-02-03 13:47:05 +04:00
Alexey Sedunov
fbb1c2921b Safe Delete: Add support of default and by-name parameters 2014-02-03 13:47:04 +04:00
Alexey Sedunov
775baf1faf Translate KotlinJavaSafeDeleteDelegate to Kotlin 2014-02-03 13:47:03 +04:00
Alexey Sedunov
7f74ea5081 Translate KotlinSafeDeleteProcessor to Kotlin 2014-02-03 13:47:02 +04:00
Alexey Sedunov
f80fa8515a Implement parameterIndex() function 2014-02-03 13:47:02 +04:00
Alexey Sedunov
e52da4fce0 Support JetParameter in element description provider 2014-02-03 13:47:01 +04:00
Alexey Sedunov
a6697a52ef Support getOrigin() for class constructor parameters 2014-02-03 13:47:00 +04:00
Alexey Sedunov
460babbd6f Support generalized light element conversion 2014-02-03 13:46:59 +04:00
Alexey Sedunov
374682e404 Extract utility methods from KotlinSafeDeleteProcessor 2014-02-03 13:46:59 +04:00
Zalim Bashorov
8a1ffeea70 JS backend: consider functions which renamed by annotations in simple mangling. 2014-02-03 13:31:24 +04:00
Zalim Bashorov
5c0eeb59f6 JS backend: dropped unnecessary intrinsics in StringFIF. Added tests for CharSequence.size, CharSequence.length, CharSequence.length() and CharSequence.isEmpty(). 2014-02-03 13:31:24 +04:00
Zalim Bashorov
1f1da542b7 JS: minor fix in debug helper. 2014-02-03 13:31:24 +04:00
Zalim Bashorov
95084f9e0e Js stdlib: fixed the ArrayList implementation and added tests for indexOf, addAll, remove(by ref), removeAll, retainAll, containsAll. 2014-02-03 13:31:23 +04:00
Zalim Bashorov
0cb016b187 JS stdlib: drop unnecessary code. 2014-02-03 13:31:23 +04:00
Zalim Bashorov
b8559744b0 Js backend: minor fix in test closureInNestedFunctions 2014-02-03 13:31:23 +04:00
Zalim Bashorov
529d7374b8 Stdlib: enabled test List::withIndices. 2014-02-03 13:31:23 +04:00
Zalim Bashorov
edb930fd76 JS stdlib: added missed tests for Set and fixed HashSet implementations. Implemented Set::iterator, AbstractCollection::removeAll, AbstractCollection::retainAll, AbstractCollection::containsAll.
#KT-4390 fixed
2014-02-03 13:31:23 +04:00
Zalim Bashorov
ceab4347ec JS stdlib: added missed tests for Map and fix HashMap implementation. 2014-02-03 13:31:23 +04:00
Zalim Bashorov
15a727c6ed JS backend: dropped unnecessary tests which checked implementation details of kotlin js runtime. 2014-02-03 13:31:23 +04:00
Zalim Bashorov
a37f5f57e6 JS backend: fix tests after mangling. 2014-02-03 13:31:23 +04:00
Zalim Bashorov
0374ce96b7 JS backend: introduce the stable mangling for functions which belong to the public API or not final. 2014-02-03 13:31:22 +04:00
Zalim Bashorov
0af1ae360f JS backend: use name of containing declaration when naming local and literal functions. 2014-02-03 13:31:22 +04:00
Zalim Bashorov
1e9defaad3 JS backend: fixed getting qualified reference as JsNameRef for PackageFragmentDescriptor. 2014-02-03 13:31:22 +04:00
Zalim Bashorov
fa552859be JS backend: introduce constants for default test package(foo) and default test function(box). 2014-02-03 13:31:22 +04:00
Zalim Bashorov
5d94c7e83c JS backend: fix closure this in extension (literal) function. 2014-02-03 13:31:22 +04:00
Zalim Bashorov
ca4d347658 JS backend: minor -- move test for KT-2388 to ClosureTest. 2014-02-03 13:31:22 +04:00
Zalim Bashorov
c77a1b0fb9 JS backend: fix recursive closure local function by inner function or lambda.
#KT-4257 fixed
2014-02-03 13:31:21 +04:00
Zalim Bashorov
1f17b55c27 JS backend: minor refactoring -- make LiteralFunctionTranslator stateful. 2014-02-03 13:31:21 +04:00
Zalim Bashorov
25c43e7bfc JS backend: refactoring:
- make static LiteralFunctionTranslator#translate;
    - use TranslationContext#define instead  of  direct use DefinitionPlace.
2014-02-03 13:31:21 +04:00
Zalim Bashorov
9e97f9615b JS backend: Minor changes -- added @NotNull to some methods of InnerDeclarationTranslator. 2014-02-03 13:31:21 +04:00
Zalim Bashorov
948827aa06 JS backend: refactoring LiteralFunctionTranslator -- make possible to store translation state and create an instance for each translation instead of one instance for all translations.
Introduced DefinitionPlace class and make creating a new definition place more safety.
2014-02-03 13:31:21 +04:00
Zalim Bashorov
1c3c2b2f77 JS backend: minor refactoring in LiteralFunctionTranslator 2014-02-03 13:31:21 +04:00
Zalim Bashorov
24c9d802c2 JS backend: made some asserts in AliasingContext and InnerDeclarationTranslator more informative. 2014-02-03 13:31:20 +04:00
Andrey Breslav
a993dfa177 Merge pull request #350 from voddan/patch-4
A small confusing typo
2014-02-02 18:22:26 -08:00
Daniil
c60523c0c6 A small confusing typo
Here was an out-of-date error message. It could confuse developers about the function literal syntax.

"To specify it explicitly use the {(p : Type) => ...} notation"
2014-02-02 17:25:10 +03:00
Alexander Udalov
7cf587c493 Delete outdated j2k.ipr and Makefile from j2k 2014-01-31 16:46:18 +04:00
Alexander Udalov
1107ae9a11 Revert hack for annotations on built-ins
This reverts commit 5cae5c0338
2014-01-31 16:46:18 +04:00
Alexander Udalov
320a583de8 Check that lazy resolve works correctly on built-ins
This test is needed because BuiltInsSerializer uses lazy resolve to load and
serialize built-ins. We need to make sure that lazy resolve works exactly like
deserialization
2014-01-31 16:46:18 +04:00
Alexander Udalov
e28819b42e Revert "Using default renderer in LoadBuiltinsTest."
This reverts commit 1d21ebf882.

Conflicts:
	compiler/testData/builtin-classes.txt
	core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java

Reverting a part of this (related to the field 'prettyFunctionTypes') because
will need to add a test that deserialized built-ins (obtained by
KotlinBuiltIns.getInstance()) are consistent with lazy resolved built-ins. This
test would break because while DescriptorRenderer renders pretty function types
it compares descriptors to the ones from KotlinBuiltIns, but in case of lazy
resolve descriptors created for built-ins would be different from
KotlinBuiltIns, so renderer wouldn't correctly render a function type
2014-01-31 16:46:18 +04:00
Alexander Udalov
c39338798b Delete outdated hack in Unit 2014-01-31 16:46:18 +04:00
Alexander Udalov
1538191c66 Fix variance in Progression and Range 2014-01-31 16:46:17 +04:00
Alexander Udalov
4a0bfa5434 Remove outdated hack in DeclarationResolver 2014-01-31 16:46:17 +04:00
Alexander Udalov
7edc4b0ff7 Add GenerateBuiltInsTest
Tests that generated sources of built-ins (Functions, Ranges, etc.) are
up-to-date
2014-01-31 16:46:17 +04:00
Alexander Udalov
71d956a568 Refactor built-ins source generators 2014-01-31 16:46:17 +04:00
Alexander Udalov
1f15e57918 Change built-ins generators package from 'runtime' to 'builtins' 2014-01-31 16:46:17 +04:00
Alexander Udalov
1c9d614137 Add copyright and auto-generation notice to built-in sources 2014-01-31 16:46:17 +04:00
Alexander Udalov
877d9f2220 Update year to 2014 in generated files 2014-01-31 16:46:16 +04:00
Alexander Udalov
75ab8ac5ec Don't try to generate optimized "in" for LongRange
#KT-4097 Fixed
2014-01-31 16:46:14 +04:00
Alexander Udalov
9b01f01e17 Refactor codegen of "in" expression
Use generateIn() twice, for binary expressions and for when clauses
2014-01-31 16:46:14 +04:00
Nikolay Krasko
1832973491 Assertion messages added 2014-01-31 14:52:15 +04:00
Nikolay Krasko
eb2f3eee4d Refactoring: remove warning 2014-01-31 14:52:15 +04:00
Nikolay Krasko
2bcedf45df Refactoring: remove unused method 2014-01-31 14:52:14 +04:00
Nikolay Krasko
9a6ac60a5f Minor: formatting and warnings 2014-01-31 14:52:14 +04:00
Nikolay Krasko
7546a6dc41 Suppressing warnings + update copyright date 2014-01-31 14:52:13 +04:00
Andrey Breslav
d3d2209452 Rename: CancelableResolveSession -> ResolveSessionForBodies 2014-01-30 21:03:53 +04:00
Andrey Breslav
7a6657d2e8 Resolve sessions use exception tracking from StorageManager 2014-01-30 21:03:53 +04:00
Andrey Breslav
0f4994f8b0 Created LockBasedStorageManagerWithExceptionTracking 2014-01-30 21:03:53 +04:00
Andrey Breslav
26ecf7666d Wrap storage manager inside resolve session 2014-01-30 21:03:53 +04:00
Andrey Breslav
210827b1d5 ExceptionUtils rewritten in Kotlin 2014-01-30 21:03:53 +04:00
Andrey Breslav
d0787795b6 StorageManager supports centralized exception handling 2014-01-30 21:03:52 +04:00
Andrey Breslav
5378bded1e Minor: reorder methods and constructors 2014-01-30 21:03:52 +04:00
Evgeny Gerashchenko
836077916b Fixed tests after adding JetObject to generic signature. 2014-01-29 21:51:53 +04:00
Evgeny Gerashchenko
8212d591c4 Don't show selection popup when there is only one expression candidate. 2014-01-29 18:58:18 +04:00
Evgeny Gerashchenko
abf352cebd KT-4485 getGenericInterfaces vs getInterfaces for kotlin classes
#KT-4485 fixed
2014-01-29 17:57:50 +04:00
Zalim Bashorov
a2a6d987a4 Fix unresolved conflicts in update_dependencies.xml. 2013-12-21 18:16:38 +04:00
Zalim Bashorov
60694b2627 Merge master into android_studio 2013-12-19 23:46:41 +04:00
Nikolay Krasko
3f785bdc31 Downgrade to idea 132.1045 to be compatible with Android Studio 0.3.7 2013-12-09 15:08:58 +04:00
1097 changed files with 40563 additions and 15838 deletions

View File

@@ -45,7 +45,7 @@
<element id="module-output" name="util.runtime" />
</element>
</element>
<element id="library" level="project" name="kotlin-runtime" />
<element id="file-copy" path="$PROJECT_DIR$/dist/kotlinc/lib/kotlin-runtime.jar" />
</element>
<element id="directory" name="kotlinc">
<element id="dir-copy" path="$PROJECT_DIR$/dist/kotlinc" />

View File

@@ -246,6 +246,10 @@
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="jet">
<option name="ELSE_ON_NEW_LINE" value="true" />
<option name="WHILE_ON_NEW_LINE" value="true" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
</codeStyleSettings>

View File

@@ -4,6 +4,7 @@
<w>accessors</w>
<w>goto</w>
<w>kdoc</w>
<w>memoized</w>
<w>redeclarations</w>
<w>subclassed</w>
<w>subgraph</w>

View File

@@ -3,6 +3,8 @@
<words>
<w>builtins</w>
<w>klass</w>
<w>protoc</w>
<w>ubuntu</w>
</words>
</dictionary>
</component>

View File

@@ -4,11 +4,11 @@
<root url="file://$PROJECT_DIR$/annotations" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/guava-12.0.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/guava-14.0.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/guava-12.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/guava-14.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -1,11 +1,11 @@
<component name="libraryTable">
<library name="protobuf-java">
<CLASSES>
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/protobuf-2.4.1.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/protobuf-2.5.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/protobuf-java-2.4.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/protobuf-java-2.5.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -0,0 +1,17 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Generate Injectors" type="JetRunConfigurationType" factoryName="Kotlin">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.jet.generators.injectors.InjectorsPackage" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="generators" />
<envs />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@@ -1,11 +0,0 @@
<root>
<item name='com.intellij.CommonBundle java.lang.String getNoButtonText()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.CommonBundle java.lang.String getOkButtonText()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.CommonBundle java.lang.String getYesButtonText()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>

View File

@@ -0,0 +1,118 @@
<root>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor T collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor T collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor T collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor T collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor T extractTransferableData(java.awt.datatransfer.Transferable) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, T) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, T) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, T) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, T) 4'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPastePostProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, T) 5'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor TRef[] findReferencesToRestore(com.intellij.psi.PsiFile, com.intellij.openapi.editor.RangeMarker, com.intellij.codeInsight.editorActions.ReferenceData[])'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor TRef[] findReferencesToRestore(com.intellij.psi.PsiFile, com.intellij.openapi.editor.RangeMarker, com.intellij.codeInsight.editorActions.ReferenceData[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor TRef[] findReferencesToRestore(com.intellij.psi.PsiFile, com.intellij.openapi.editor.RangeMarker, com.intellij.codeInsight.editorActions.ReferenceData[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor TRef[] findReferencesToRestore(com.intellij.psi.PsiFile, com.intellij.openapi.editor.RangeMarker, com.intellij.codeInsight.editorActions.ReferenceData[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor com.intellij.codeInsight.editorActions.ReferenceTransferableData collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[])'>
<annotation name='org.jetbrains.annotations.Nullable'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor com.intellij.codeInsight.editorActions.ReferenceTransferableData collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor com.intellij.codeInsight.editorActions.ReferenceTransferableData collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor com.intellij.codeInsight.editorActions.ReferenceTransferableData collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor com.intellij.codeInsight.editorActions.ReferenceTransferableData collectTransferableData(com.intellij.psi.PsiFile, com.intellij.openapi.editor.Editor, int[], int[]) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void addReferenceData(com.intellij.psi.PsiFile, int, com.intellij.psi.PsiElement, java.util.ArrayList&lt;com.intellij.codeInsight.editorActions.ReferenceData&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void addReferenceData(com.intellij.psi.PsiFile, int, com.intellij.psi.PsiElement, java.util.ArrayList&lt;com.intellij.codeInsight.editorActions.ReferenceData&gt;) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void addReferenceData(com.intellij.psi.PsiFile, int, com.intellij.psi.PsiElement, java.util.ArrayList&lt;com.intellij.codeInsight.editorActions.ReferenceData&gt;) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, com.intellij.codeInsight.editorActions.ReferenceTransferableData) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, com.intellij.codeInsight.editorActions.ReferenceTransferableData) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, com.intellij.codeInsight.editorActions.ReferenceTransferableData) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, com.intellij.codeInsight.editorActions.ReferenceTransferableData) 4'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void processTransferableData(com.intellij.openapi.project.Project, com.intellij.openapi.editor.Editor, com.intellij.openapi.editor.RangeMarker, int, com.intellij.openapi.util.Ref&lt;java.lang.Boolean&gt;, com.intellij.codeInsight.editorActions.ReferenceTransferableData) 5'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void restoreReferences(com.intellij.codeInsight.editorActions.ReferenceData[], TRef[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.codeInsight.editorActions.CopyPasteReferenceProcessor void restoreReferences(com.intellij.codeInsight.editorActions.ReferenceData[], TRef[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>

View File

@@ -1,5 +0,0 @@
<root>
<item name='com.intellij.openapi.components.ComponentManager com.intellij.util.messages.MessageBus getMessageBus()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>

View File

@@ -1,4 +1,8 @@
<root>
<item
name='com.intellij.openapi.util.Conditions com.intellij.openapi.util.Condition&lt;T&gt; or(com.intellij.openapi.util.Condition&lt;T&gt;, com.intellij.openapi.util.Condition&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.openapi.util.Key com.intellij.openapi.util.Key&lt;T&gt; create(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>

View File

@@ -11,6 +11,9 @@
<item name='com.intellij.psi.PsiElement com.intellij.psi.PsiElement replace(com.intellij.psi.PsiElement)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.psi.PsiReference com.intellij.psi.PsiElement getElement()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.PsiReferenceService java.util.List&lt;com.intellij.psi.PsiReference&gt; getReferences(com.intellij.psi.PsiElement, com.intellij.psi.PsiReferenceService.Hints)'>
<annotation name='org.jetbrains.annotations.NotNull'/>

View File

@@ -1,18 +1,47 @@
<root>
<item
name='com.intellij.psi.search.searches.AllClassesSearch com.intellij.util.Query&lt;com.intellij.psi.PsiClass&gt; search(com.intellij.psi.search.SearchScope, com.intellij.openapi.project.Project)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.ClassInheritorsSearch com.intellij.util.Query&lt;com.intellij.psi.PsiClass&gt; search(com.intellij.psi.PsiClass, com.intellij.psi.search.SearchScope, boolean, boolean, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.ClassInheritorsSearch com.intellij.util.Query&lt;com.intellij.psi.PsiClass&gt; search(com.intellij.psi.search.searches.ClassInheritorsSearch.SearchParameters)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.DirectClassInheritorsSearch com.intellij.util.Query&lt;com.intellij.psi.PsiClass&gt; search(com.intellij.psi.PsiClass, com.intellij.psi.search.SearchScope, boolean, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.OverridingMethodsSearch com.intellij.util.Query&lt;com.intellij.psi.PsiMethod&gt; search(com.intellij.psi.PsiMethod)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.OverridingMethodsSearch com.intellij.util.Query&lt;com.intellij.psi.PsiMethod&gt; search(com.intellij.psi.PsiMethod, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.OverridingMethodsSearch com.intellij.util.Query&lt;com.intellij.psi.PsiMethod&gt; search(com.intellij.psi.PsiMethod, com.intellij.psi.search.SearchScope, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item
name='com.intellij.psi.search.searches.ReferencesSearch com.intellij.util.Query&lt;com.intellij.psi.PsiReference&gt; search(com.intellij.psi.PsiElement)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun search(element: PsiElement): Query&lt;PsiReference&gt;&quot;"/>
</annotation>
</item>
<item
name='com.intellij.psi.search.searches.ReferencesSearch com.intellij.util.Query&lt;com.intellij.psi.PsiReference&gt; search(com.intellij.psi.PsiElement, com.intellij.psi.search.SearchScope)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun search(element: PsiElement, searchScope: SearchScope): Query&lt;PsiReference&gt;&quot;"/>
</annotation>
</item>
<item
name='com.intellij.psi.search.searches.ReferencesSearch com.intellij.util.Query&lt;com.intellij.psi.PsiReference&gt; search(com.intellij.psi.PsiElement, com.intellij.psi.search.SearchScope, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun search(element: PsiElement, searchScope: SearchScope, ignoreAccessScope: Boolean): Query&lt;PsiReference&gt;&quot;"/>
</annotation>
</item>
<item
name='com.intellij.psi.search.searches.ReferencesSearch com.intellij.util.Query&lt;com.intellij.psi.PsiReference&gt; search(com.intellij.psi.search.searches.ReferencesSearch.SearchParameters)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>

View File

@@ -0,0 +1,98 @@
<root>
<item
name='com.intellij.refactoring.safeDelete.JavaSafeDeleteDelegate void createUsageInfoForParameter(com.intellij.psi.PsiReference, java.util.List&lt;com.intellij.usageView.UsageInfo&gt;, com.intellij.psi.PsiParameter, com.intellij.psi.PsiMethod)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun createUsageInfoForParameter(reference: PsiReference, usages: MutableList&lt;UsageInfo&gt;, parameter: PsiParameter, method: PsiMethod): Unit&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.JavaSafeDeleteProcessor java.util.Collection&lt;? extends com.intellij.psi.PsiElement&gt; getElementsToSearch(com.intellij.psi.PsiElement, com.intellij.openapi.module.Module, java.util.Collection&lt;com.intellij.psi.PsiElement&gt;)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun getElementsToSearch(element: PsiElement, module: Module?, allElementsToDelete: Collection&lt;PsiElement&gt;): Collection&lt;out PsiElement&gt;?&quot;"/>
</annotation>
</item>
<item name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate boolean handlesElement(com.intellij.psi.PsiElement)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun handlesElement(element: PsiElement): Boolean&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate boolean isToSearchForTextOccurrences(com.intellij.psi.PsiElement)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun isToSearchForTextOccurrences(element: PsiElement): Boolean&quot;"/>
</annotation>
</item>
<item name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate boolean isToSearchInComments(com.intellij.psi.PsiElement)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun isToSearchInComments(element: PsiElement): Boolean&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate com.intellij.refactoring.safeDelete.NonCodeUsageSearchInfo findUsages(com.intellij.psi.PsiElement, com.intellij.psi.PsiElement[], java.util.List&lt;com.intellij.usageView.UsageInfo&gt;)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun findUsages(element: PsiElement, allElementsToDelete: Array&lt;out PsiElement&gt;, result: MutableList&lt;UsageInfo&gt;): NonCodeUsageSearchInfo?&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate com.intellij.usageView.UsageInfo[] preprocessUsages(com.intellij.openapi.project.Project, com.intellij.usageView.UsageInfo[])'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun preprocessUsages(project: Project, usages: Array&lt;out UsageInfo&gt;): Array&lt;UsageInfo&gt;?&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate java.util.Collection&lt;? extends com.intellij.psi.PsiElement&gt; getElementsToSearch(com.intellij.psi.PsiElement, java.util.Collection&lt;com.intellij.psi.PsiElement&gt;)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun getElementsToSearch(element: PsiElement, allElementsToDelete: Collection&lt;PsiElement&gt;): Collection&lt;out PsiElement&gt;?&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate java.util.Collection&lt;com.intellij.psi.PsiElement&gt; getAdditionalElementsToDelete(com.intellij.psi.PsiElement, java.util.Collection&lt;com.intellij.psi.PsiElement&gt;, boolean)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun getAdditionalElementsToDelete(element: PsiElement, allElementsToDelete: Collection&lt;PsiElement&gt;, askUser: Boolean): MutableCollection&lt;PsiElement&gt;?&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate java.util.Collection&lt;java.lang.String&gt; findConflicts(com.intellij.psi.PsiElement, com.intellij.psi.PsiElement[])'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun findConflicts(element: PsiElement, allElementsToDelete: Array&lt;out PsiElement&gt;): MutableCollection&lt;String&gt;?&quot;"/>
</annotation>
</item>
<item name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate void prepareForDeletion(com.intellij.psi.PsiElement)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun prepareForDeletion(element: PsiElement): Unit&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate void setToSearchForTextOccurrences(com.intellij.psi.PsiElement, boolean)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun setToSearchForTextOccurrences(element: PsiElement, enabled: Boolean): Unit&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegate void setToSearchInComments(com.intellij.psi.PsiElement, boolean)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun setToSearchInComments(element: PsiElement, enabled: Boolean): Unit&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegateBase java.util.Collection&lt;? extends com.intellij.psi.PsiElement&gt; getElementsToSearch(com.intellij.psi.PsiElement, com.intellij.openapi.module.Module, java.util.Collection&lt;com.intellij.psi.PsiElement&gt;)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun getElementsToSearch(element: PsiElement, module: Module?, allElementsToDelete: Collection&lt;PsiElement&gt;): Collection&lt;out PsiElement&gt;?&quot;"/>
</annotation>
</item>
<item
name='com.intellij.refactoring.safeDelete.SafeDeleteProcessorDelegateBase java.util.Collection&lt;? extends com.intellij.psi.PsiElement&gt; getElementsToSearch(com.intellij.psi.PsiElement, java.util.Collection&lt;com.intellij.psi.PsiElement&gt;)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun getElementsToSearch(element: PsiElement, allElementsToDelete: Collection&lt;PsiElement&gt;): Collection&lt;out PsiElement&gt;?&quot;"/>
</annotation>
</item>
</root>

View File

@@ -0,0 +1,8 @@
<root>
<item name='com.intellij.refactoring.safeDelete.usageInfo.SafeDeleteUsageInfo com.intellij.psi.PsiElement getReferencedElement()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.refactoring.safeDelete.usageInfo.SafeDeleteUsageInfo myReferencedElement'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>

View File

@@ -0,0 +1,8 @@
<root>
<item name='com.intellij.usageView.UsageInfo com.intellij.psi.SmartPsiElementPointer&lt;?&gt; getSmartPointer()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.usageView.UsageInfo mySmartPointer'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>

View File

@@ -29,7 +29,7 @@
<path id="classpath">
<file file="${bootstrap.runtime}"/>
<fileset dir="${idea.sdk}" includes="core/*.jar"/>
<fileset dir="${idea.sdk}" includes="lib/protobuf-2.4.1.jar"/>
<fileset dir="${idea.sdk}" includes="lib/protobuf-2.5.0.jar"/>
<fileset dir="${basedir}/lib" includes="**/*.jar"/>
<fileset dir="${dependencies.dir}" includes="jline.jar"/>
@@ -272,11 +272,14 @@
<target name="builtins">
<cleandir dir="${output}/builtins"/>
<java classname="org.jetbrains.jet.utils.builtinsSerializer.BuiltinsSerializerPackage">
<java classname="org.jetbrains.jet.utils.builtinsSerializer.BuiltinsSerializerPackage" failonerror="true" fork="true">
<classpath>
<path refid="classpath"/>
<pathelement location="${bootstrap.compiler.home}/lib/kotlin-compiler.jar"/>
</classpath>
<assertions>
<enable/>
</assertions>
<arg value="${output}/builtins"/>
<arg value="core/builtins/native"/>
<arg value="core/builtins/src"/>
@@ -297,7 +300,7 @@
<zipgroupfileset dir="${basedir}/ideaSDK/core" includes="*.jar" excludes="util.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="jna-utils.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="oromatcher.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="protobuf-2.4.1.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/lib" includes="protobuf-2.5.0.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/jps" includes="jps-model.jar"/>
<zipgroupfileset dir="${dependencies.dir}" includes="jline.jar"/>
<zipgroupfileset dir="${dependencies.dir}" includes="cli-parser-1.1.1.jar"/>
@@ -539,6 +542,9 @@
<path refid="classpath"/>
<pathelement location="${kotlin-home}/lib/kotlin-compiler.jar"/>
</classpath>
<assertions>
<enable/>
</assertions>
<arg value="-src"/>
<arg value="@{src}"/>
<arg value="-output"/>

View File

@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.Annotated;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.evaluate.EvaluatePackage;
import org.jetbrains.jet.lang.psi.JetAnnotationEntry;
import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.psi.JetModifierList;
@@ -36,6 +35,7 @@ import org.jetbrains.jet.lang.resolve.constants.*;
import org.jetbrains.jet.lang.resolve.constants.StringValue;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.lang.annotation.Retention;
@@ -123,6 +123,14 @@ public abstract class AnnotationCodegen {
private void generateNullabilityAnnotation(@Nullable JetType type, @NotNull Set<String> annotationDescriptorsAlreadyPresent) {
if (type == null) return;
if (isBareTypeParameterWithNullableUpperBound(type)) {
// This is to account for the case of, say
// class Function<R> { fun invoke(): R }
// it would be a shame to put @Nullable on the return type of the function, and force all callers to check for null,
// so we put no annotations
return;
}
boolean isNullableType = CodegenUtil.isNullableType(type);
if (!isNullableType && KotlinBuiltIns.getInstance().isPrimitiveType(type)) return;
@@ -134,6 +142,11 @@ public abstract class AnnotationCodegen {
}
}
private static boolean isBareTypeParameterWithNullableUpperBound(@NotNull JetType type) {
ClassifierDescriptor classifier = type.getConstructor().getDeclarationDescriptor();
return !type.isNullable() && classifier instanceof TypeParameterDescriptor && TypeUtils.hasNullableSuperType(type);
}
private static boolean isVolatile(@NotNull AnnotationDescriptor annotationDescriptor) {
ClassifierDescriptor classDescriptor = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor();
return KotlinBuiltIns.getInstance().getVolatileAnnotationClass().equals(classDescriptor);

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -116,8 +116,7 @@ public abstract class ClassBodyCodegen extends MemberCodegen {
genFunctionOrProperty(context, (JetTypeParameterListOwner) declaration, v);
}
else if (declaration instanceof JetClassOrObject) {
if (declaration instanceof JetEnumEntry && !enumEntryNeedSubclass(
state.getBindingContext(), (JetEnumEntry) declaration)) {
if (declaration instanceof JetEnumEntry && !enumEntryNeedSubclass(state.getBindingContext(), (JetEnumEntry) declaration)) {
return;
}

View File

@@ -46,7 +46,6 @@ import org.jetbrains.jet.lang.evaluate.EvaluatePackage;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.calls.autocasts.AutoCastReceiver;
import org.jetbrains.jet.lang.resolve.calls.model.*;
import org.jetbrains.jet.lang.resolve.calls.util.CallMaker;
import org.jetbrains.jet.lang.resolve.calls.util.ExpressionAsFunctionDescriptor;
@@ -81,7 +80,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
private static final String CLASS_NO_PATTERN_MATCHED_EXCEPTION = "jet/NoPatternMatchedException";
private static final String CLASS_TYPE_CAST_EXCEPTION = "jet/TypeCastException";
public static final Set<DeclarationDescriptor> INTEGRAL_RANGES = KotlinBuiltIns.getInstance().getIntegralRanges();
private static final Set<DeclarationDescriptor> INTEGRAL_RANGES = KotlinBuiltIns.getInstance().getIntegralRanges();
private int myLastLineNumber = -1;
@@ -294,7 +293,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
@Override
public StackValue visitSuperExpression(@NotNull JetSuperExpression expression, StackValue data) {
return StackValue.thisOrOuter(this, getSuperCallLabelTarget(expression), true);
return StackValue.thisOrOuter(this, getSuperCallLabelTarget(expression), true, true);
}
private ClassDescriptor getSuperCallLabelTarget(JetSuperExpression expression) {
@@ -1528,6 +1527,15 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
}
}
private boolean hasFinallyBLocks() {
for (BlockStackElement element : blockStackElements) {
if (element instanceof FinallyBlockStackElement) {
return true;
}
}
return false;
}
private void genFinallyBlockOrGoto(
@Nullable FinallyBlockStackElement finallyBlockStackElement,
@Nullable Label tryCatchBlockEnd
@@ -1566,7 +1574,14 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
JetExpression returnedExpression = expression.getReturnedExpression();
if (returnedExpression != null) {
gen(returnedExpression, returnType);
doFinallyOnReturn();
boolean hasFinallyBLocks = hasFinallyBLocks();
if (hasFinallyBLocks) {
int returnValIndex = myFrameMap.enterTemp(returnType);
StackValue.local(returnValIndex, returnType).store(returnType, v);
doFinallyOnReturn();
StackValue.local(returnValIndex, returnType).put(returnType, v);
myFrameMap.leaveTemp(returnType);
}
v.areturn(returnType);
}
else {
@@ -1705,7 +1720,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
Type scriptClassType = asmTypeForScriptDescriptor(bindingContext, scriptDescriptor);
ValueParameterDescriptor valueParameterDescriptor = (ValueParameterDescriptor) descriptor;
ClassDescriptor scriptClass = bindingContext.get(CLASS_FOR_SCRIPT, scriptDescriptor);
StackValue script = StackValue.thisOrOuter(this, scriptClass, false);
StackValue script = StackValue.thisOrOuter(this, scriptClass, false, false);
script.put(script.type, v);
Type fieldType = typeMapper.mapType(valueParameterDescriptor);
return StackValue.field(fieldType, scriptClassType, valueParameterDescriptor.getName().getIdentifier(), false);
@@ -2137,7 +2152,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
StackValue.onStack(exprType).put(type, v);
}
else {
StackValue.thisOrOuter(this, classReceiverDeclarationDescriptor, false).put(type, v);
StackValue.thisOrOuter(this, classReceiverDeclarationDescriptor, false, false).put(type, v);
}
}
else if (descriptor instanceof ScriptReceiver) {
@@ -2152,12 +2167,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
JetExpression expr = expressionReceiver.getExpression();
gen(expr, type);
}
else if (descriptor instanceof AutoCastReceiver) {
AutoCastReceiver autoCastReceiver = (AutoCastReceiver) descriptor;
Type originalType = asmType(autoCastReceiver.getOriginal().getType());
generateFromResolvedCall(autoCastReceiver.getOriginal(), originalType);
StackValue.onStack(originalType).put(type, v);
}
else {
throw new UnsupportedOperationException("Unsupported receiver type: " + descriptor);
}
@@ -2656,7 +2665,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
return generateElvis(expression);
}
else if (opToken == JetTokens.IN_KEYWORD || opToken == JetTokens.NOT_IN) {
return generateIn(expression);
return generateIn(StackValue.expression(Type.INT_TYPE, expression.getLeft(), this), expression.getRight(), reference);
}
else {
ResolvedCall<? extends CallableDescriptor> resolvedCall = bindingContext.get(BindingContext.RESOLVED_CALL, reference);
@@ -2678,23 +2687,21 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
}
}
private StackValue generateIn(JetBinaryExpression expression) {
boolean inverted = expression.getOperationReference().getReferencedNameElementType() == JetTokens.NOT_IN;
if (isIntRangeExpr(expression.getRight())) {
StackValue leftValue = StackValue.expression(Type.INT_TYPE, expression.getLeft(), this);
JetBinaryExpression rangeExpression = (JetBinaryExpression) expression.getRight();
getInIntRange(leftValue, rangeExpression, inverted);
private StackValue generateIn(StackValue leftValue, JetExpression rangeExpression, JetSimpleNameExpression operationReference) {
JetExpression deparenthesized = JetPsiUtil.deparenthesize(rangeExpression);
if (isIntRangeExpr(deparenthesized)) {
genInIntRange(leftValue, (JetBinaryExpression) deparenthesized);
}
else {
invokeFunctionByReference(expression.getOperationReference());
if (inverted) {
genInvertBoolean(v);
}
invokeFunctionByReference(operationReference);
}
if (operationReference.getReferencedNameElementType() == JetTokens.NOT_IN) {
genInvertBoolean(v);
}
return StackValue.onStack(Type.BOOLEAN_TYPE);
}
private void getInIntRange(StackValue leftValue, JetBinaryExpression rangeExpression, boolean inverted) {
private void genInIntRange(StackValue leftValue, JetBinaryExpression rangeExpression) {
v.iconst(1);
// 1
leftValue.put(Type.INT_TYPE, v);
@@ -2728,9 +2735,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
// c c
v.and(Type.INT_TYPE);
if (inverted) {
genInvertBoolean(v);
}
}
private StackValue generateBooleanAnd(JetBinaryExpression expression) {
@@ -3414,7 +3418,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
public StackValue visitThisExpression(@NotNull JetThisExpression expression, StackValue receiver) {
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, expression.getInstanceReference());
if (descriptor instanceof ClassDescriptor) {
return StackValue.thisOrOuter(this, (ClassDescriptor) descriptor, false);
return StackValue.thisOrOuter(this, (ClassDescriptor) descriptor, false, true);
}
else {
if (descriptor instanceof CallableDescriptor) {
@@ -3746,27 +3750,9 @@ The "returned" value of try expression with no finally is either the last expres
private StackValue generateWhenCondition(Type subjectType, int subjectLocal, JetWhenCondition condition) {
if (condition instanceof JetWhenConditionInRange) {
JetWhenConditionInRange conditionInRange = (JetWhenConditionInRange) condition;
JetExpression rangeExpression = conditionInRange.getRangeExpression();
while (rangeExpression instanceof JetParenthesizedExpression) {
rangeExpression = ((JetParenthesizedExpression) rangeExpression).getExpression();
}
JetSimpleNameExpression operationReference = conditionInRange.getOperationReference();
boolean inverted = operationReference.getReferencedNameElementType() == JetTokens.NOT_IN;
if (isIntRangeExpr(rangeExpression)) {
getInIntRange(new StackValue.Local(subjectLocal, subjectType), (JetBinaryExpression) rangeExpression, inverted);
}
else {
//FunctionDescriptor op =
// (FunctionDescriptor) bindingContext.get(BindingContext.REFERENCE_TARGET, conditionInRange.getOperationReference());
//genToJVMStack(rangeExpression);
//new StackValue.Local(subjectLocal, subjectType).put(OBJECT_TYPE, v);
//invokeFunctionNoParams(op, Type.BOOLEAN_TYPE, v);
invokeFunctionByReference(operationReference);
if (inverted) {
genInvertBoolean(v);
}
}
return StackValue.onStack(Type.BOOLEAN_TYPE);
return generateIn(StackValue.local(subjectLocal, subjectType),
conditionInRange.getRangeExpression(),
conditionInRange.getOperationReference());
}
StackValue.Local match = subjectLocal == -1 ? null : StackValue.local(subjectLocal, subjectType);
if (condition instanceof JetWhenConditionIsPattern) {

View File

@@ -145,7 +145,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl {
generateBridgeIfNeeded(owner, state, v, functionDescriptor);
methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, typeMapper);
methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, bindingContext);
}
private void generateParameterAnnotations(

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -41,7 +41,6 @@ import org.jetbrains.jet.descriptors.serialization.ClassData;
import org.jetbrains.jet.descriptors.serialization.DescriptorSerializer;
import org.jetbrains.jet.descriptors.serialization.ProtoBuf;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
@@ -53,6 +52,7 @@ import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
@@ -349,21 +349,40 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
}
sw.writeSuperclassEnd();
LinkedHashSet<String> superInterfaces = new LinkedHashSet<String>();
superInterfaces.add(JvmAbi.JET_OBJECT.getInternalName());
List<JetType> interfaceSupertypes = Lists.newArrayList();
FqNameUnsafe jetObjectFqName = JvmAbi.JET_OBJECT.getFqNameForClassNameWithoutDollars().toUnsafe();
boolean explicitJetObject = false;
for (JetDelegationSpecifier specifier : myClass.getDelegationSpecifiers()) {
JetType superType = bindingContext.get(BindingContext.TYPE, specifier.getTypeReference());
assert superType != null : "No supertype for class: " + myClass.getText();
ClassDescriptor superClassDescriptor = (ClassDescriptor) superType.getConstructor().getDeclarationDescriptor();
if (isInterface(superClassDescriptor)) {
sw.writeInterface();
Type jvmName = typeMapper.mapSupertype(superType, sw);
sw.writeInterfaceEnd();
superInterfaces.add(jvmName.getInternalName());
interfaceSupertypes.add(superType);
assert superClassDescriptor != null : "should be already checked by isInterface()";
if (jetObjectFqName.equals(DescriptorUtils.getFqName(superClassDescriptor))) {
explicitJetObject = true;
}
}
}
LinkedHashSet<String> superInterfaces = new LinkedHashSet<String>();
if (!explicitJetObject) {
sw.writeInterface();
sw.writeClassBegin(Type.getObjectType(JvmAbi.JET_OBJECT.getInternalName()));
sw.writeClassEnd();
sw.writeInterfaceEnd();
superInterfaces.add(JvmAbi.JET_OBJECT.getInternalName());
}
for (JetType supertype : interfaceSupertypes) {
sw.writeInterface();
Type jvmName = typeMapper.mapSupertype(supertype, sw);
sw.writeInterfaceEnd();
superInterfaces.add(jvmName.getInternalName());
}
return new JvmClassSignature(classAsmType.getInternalName(), superClassAsmType.getInternalName(),
new ArrayList<String>(superInterfaces),
sw.makeJavaGenericSignature());
@@ -386,7 +405,9 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
for (JetDelegationSpecifier specifier : delegationSpecifiers) {
if (specifier instanceof JetDelegatorToSuperClass || specifier instanceof JetDelegatorToSuperCall) {
JetType superType = bindingContext.get(BindingContext.TYPE, specifier.getTypeReference());
assert superType != null;
assert superType != null :
String.format("No type recorded for \n---\n%s\n---\n", JetPsiUtil.getElementTextWithContext(specifier));
ClassDescriptor superClassDescriptor = (ClassDescriptor) superType.getConstructor().getDeclarationDescriptor();
assert superClassDescriptor != null;
if (!isInterface(superClassDescriptor)) {
@@ -1136,7 +1157,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
FunctionCodegen.generateConstructorWithoutParametersIfNeeded(state, callableMethod, constructorDescriptor, v);
if (isClassObject(descriptor)) {
context.recordSyntheticAccessorIfNeeded(constructorDescriptor, typeMapper);
context.recordSyntheticAccessorIfNeeded(constructorDescriptor, bindingContext);
}
}
@@ -1304,27 +1325,24 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
@Override
public void visitSimpleNameExpression(@NotNull JetSimpleNameExpression expr) {
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, expr);
if (descriptor instanceof VariableDescriptor && !(descriptor instanceof PropertyDescriptor)) {
DeclarationDescriptor toLookup;
if (isLocalNamedFun(descriptor)) {
toLookup = descriptor;
}
else if (descriptor instanceof CallableMemberDescriptor) {
toLookup = descriptor.getContainingDeclaration();
}
else if (descriptor instanceof VariableDescriptor) {
ConstructorDescriptor constructorDescriptor = (ConstructorDescriptor) constructorContext.getContextDescriptor();
for (ValueParameterDescriptor parameterDescriptor : constructorDescriptor.getValueParameters()) {
//noinspection ConstantConditions
if (descriptor.equals(parameterDescriptor)) {
return;
}
if (descriptor.equals(parameterDescriptor)) return;
}
constructorContext.lookupInContext(descriptor, null, state, true);
} else if (isLocalNamedFun(descriptor)) {
assert descriptor != null;
MutableClassDescriptor classDescriptor =
(MutableClassDescriptor) constructorContext.getParentContext().getContextDescriptor();
for (CallableMemberDescriptor memberDescriptor : classDescriptor.getAllCallableMembers()) {
if (descriptor.equals(memberDescriptor)) {
return;
}
}
constructorContext.lookupInContext(descriptor, null, state, true);
toLookup = descriptor;
}
else return;
constructorContext.lookupInContext(toLookup, null, state, true);
}
@Override

View File

@@ -101,7 +101,7 @@ public class PropertyCodegen extends GenerationStateAware {
generateGetter(p, propertyDescriptor, p.getGetter());
generateSetter(p, propertyDescriptor, p.getSetter());
context.recordSyntheticAccessorIfNeeded(propertyDescriptor, typeMapper);
context.recordSyntheticAccessorIfNeeded(propertyDescriptor, bindingContext);
}
public void generatePrimaryConstructorProperty(JetParameter p, PropertyDescriptor descriptor) {

View File

@@ -309,10 +309,11 @@ public abstract class StackValue {
return new Composed(prefix, suffix);
}
public static StackValue thisOrOuter(ExpressionCodegen codegen, ClassDescriptor descriptor, boolean isSuper) {
// Coerce this/super for traits to support traits with required classes
// Do not coerce for other classes due to the 'protected' access issues (JVMS 7, 4.9.2 Structural Constraints)
boolean coerceType = descriptor.getKind() == ClassKind.TRAIT;
public static StackValue thisOrOuter(ExpressionCodegen codegen, ClassDescriptor descriptor, boolean isSuper, boolean isExplicit) {
// Coerce this/super for traits to support traits with required classes.
// Coerce explicit 'this' for the case when it is smartcasted.
// Do not coerce for other classes due to the 'protected' access issues (JVMS 7, 4.9.2 Structural Constraints).
boolean coerceType = descriptor.getKind() == ClassKind.TRAIT || (isExplicit && !isSuper);
return new ThisOuter(codegen, descriptor, isSuper, coerceType);
}
@@ -366,7 +367,7 @@ public abstract class StackValue {
public static class Local extends StackValue {
final int index;
public Local(int index, Type type) {
private Local(int index, Type type) {
super(type);
this.index = index;

View File

@@ -154,7 +154,8 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
@Override
public void visitEnumEntry(@NotNull JetEnumEntry enumEntry) {
ClassDescriptor descriptor = bindingContext.get(CLASS, enumEntry);
assert descriptor != null;
assert descriptor != null :
String.format("No descriptor for enum entry \n---\n%s\n---\n", JetPsiUtil.getElementTextWithContext(enumEntry));
boolean trivial = enumEntry.getDeclarations().isEmpty();
if (!trivial) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -324,10 +324,7 @@ public class CodegenBinding {
return closure != null && closure.getCaptureThis() != null;
}
private static JetDelegatorToSuperCall findSuperCall(
BindingContext bindingContext,
JetElement classOrObject
) {
private static JetDelegatorToSuperCall findSuperCall(BindingContext bindingContext, JetElement classOrObject) {
if (!(classOrObject instanceof JetClassOrObject)) {
return null;
}
@@ -335,6 +332,7 @@ public class CodegenBinding {
if (classOrObject instanceof JetClass && ((JetClass) classOrObject).isTrait()) {
return null;
}
for (JetDelegationSpecifier specifier : ((JetClassOrObject) classOrObject).getDelegationSpecifiers()) {
if (specifier instanceof JetDelegatorToSuperCall) {
JetTypeReference typeReference = specifier.getTypeReference();

View File

@@ -61,7 +61,7 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
public final MutableClosure closure;
private HashMap<DeclarationDescriptor, DeclarationDescriptor> accessors;
private Map<DeclarationDescriptor, DeclarationDescriptor> accessors;
private Map<DeclarationDescriptor, CodegenContext> childContexts;
@@ -134,14 +134,15 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
private StackValue getOuterExpression(@Nullable StackValue prefix, boolean ignoreNoOuter, boolean captureThis) {
if (lazyOuterExpression == null || lazyOuterExpression.invoke() == null) {
if (ignoreNoOuter) {
return null;
}
else {
throw new UnsupportedOperationException();
if (!ignoreNoOuter) {
throw new UnsupportedOperationException("Don't know how to generate outer expression for " + getContextDescriptor());
}
return null;
}
if (captureThis) {
if (closure == null) {
throw new IllegalStateException("Can't capture this for context without closure: " + getContextDescriptor());
}
closure.setCaptureThis();
}
return prefix != null ? StackValue.composed(prefix, lazyOuterExpression.invoke()) : lazyOuterExpression.invoke();
@@ -173,18 +174,13 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
}
@NotNull
public ClassContext intoAnonymousClass(
@NotNull ClassDescriptor descriptor,
@NotNull ExpressionCodegen expressionCodegen
) {
JetTypeMapper typeMapper = expressionCodegen.getState().getTypeMapper();
return new AnonymousClassContext(typeMapper, descriptor, OwnerKind.IMPLEMENTATION, this,
expressionCodegen);
public ClassContext intoAnonymousClass(@NotNull ClassDescriptor descriptor, @NotNull ExpressionCodegen codegen) {
return new AnonymousClassContext(codegen.getState().getTypeMapper(), descriptor, OwnerKind.IMPLEMENTATION, this, codegen);
}
@NotNull
public MethodContext intoFunction(FunctionDescriptor descriptor) {
return new MethodContext(descriptor, getContextKind(), this);
return new MethodContext(descriptor, getContextKind(), this, null);
}
@NotNull
@@ -212,7 +208,8 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
return new ClosureContext(typeMapper, funDescriptor, classDescriptor, this, localLookup);
}
public FrameMap prepareFrame(JetTypeMapper mapper) {
@NotNull
public FrameMap prepareFrame(@NotNull JetTypeMapper typeMapper) {
FrameMap frameMap = new FrameMap();
if (getContextKind() != OwnerKind.PACKAGE) {
@@ -221,7 +218,8 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
CallableDescriptor receiverDescriptor = getCallableDescriptorWithReceiver();
if (receiverDescriptor != null) {
Type type = mapper.mapType(receiverDescriptor.getReceiverParameter().getType());
//noinspection ConstantConditions
Type type = typeMapper.mapType(receiverDescriptor.getReceiverParameter().getType());
frameMap.enterTemp(type); // Next slot for receiver
}
@@ -323,7 +321,7 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
}
for (LocalLookup.LocalLookupCase aCase : LocalLookup.LocalLookupCase.values()) {
if (aCase.isCase(d, state)) {
if (aCase.isCase(d)) {
Type classType = state.getBindingContext().get(ASM_TYPE, getThisDescriptor());
StackValue innerValue = aCase.innerValue(d, enclosingLocalLookup, state, closure, classType);
if (innerValue == null) {
@@ -367,27 +365,26 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
return (FunctionDescriptor) accessibleDescriptorIfNeeded(fd, true);
}
@NotNull
public void recordSyntheticAccessorIfNeeded(@NotNull FunctionDescriptor fd, @NotNull JetTypeMapper typeMapper) {
if (fd instanceof ConstructorDescriptor || needSyntheticAccessorInBindingTrace(fd, typeMapper)) {
public void recordSyntheticAccessorIfNeeded(@NotNull FunctionDescriptor fd, @NotNull BindingContext bindingContext) {
if (fd instanceof ConstructorDescriptor || needSyntheticAccessorInBindingTrace(fd, bindingContext)) {
accessibleDescriptorIfNeeded(fd, false);
}
}
@NotNull
public void recordSyntheticAccessorIfNeeded(PropertyDescriptor propertyDescriptor, JetTypeMapper typeMapper) {
public void recordSyntheticAccessorIfNeeded(@NotNull PropertyDescriptor propertyDescriptor, @NotNull BindingContext typeMapper) {
if (needSyntheticAccessorInBindingTrace(propertyDescriptor, typeMapper)) {
accessibleDescriptorIfNeeded(propertyDescriptor, false);
}
}
private boolean needSyntheticAccessorInBindingTrace(@NotNull CallableMemberDescriptor descriptor, @NotNull JetTypeMapper typeMapper) {
Boolean result = typeMapper.getBindingContext().get(BindingContext.NEED_SYNTHETIC_ACCESSOR, descriptor);
return result == null ? false : result.booleanValue();
private static boolean needSyntheticAccessorInBindingTrace(
@NotNull CallableMemberDescriptor descriptor,
@NotNull BindingContext bindingContext
) {
return Boolean.TRUE.equals(bindingContext.get(BindingContext.NEED_SYNTHETIC_ACCESSOR, descriptor));
}
@NotNull
private int getAccessFlags(CallableMemberDescriptor descriptor) {
private static int getAccessFlags(@NotNull CallableMemberDescriptor descriptor) {
int flag = getVisibilityAccessFlag(descriptor);
if (descriptor instanceof PropertyDescriptor) {
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) descriptor;

View File

@@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
import static org.jetbrains.jet.lang.resolve.java.AsmTypeConstants.OBJECT_TYPE;
public class ConstructorContext extends MethodContext {
private static final StackValue local1 = StackValue.local(1, OBJECT_TYPE);
private static final StackValue LOCAL_1 = StackValue.local(1, OBJECT_TYPE);
public ConstructorContext(
@NotNull ConstructorDescriptor contextDescriptor,
@@ -39,16 +39,16 @@ public class ConstructorContext extends MethodContext {
@Override
public StackValue getOuterExpression(StackValue prefix, boolean ignoreNoOuter) {
StackValue stackValue = closure != null && closure.getCaptureThis() != null ? local1 : null;
StackValue stackValue = closure != null && closure.getCaptureThis() != null ? LOCAL_1 : null;
if (!ignoreNoOuter && stackValue == null) {
throw new UnsupportedOperationException("Don't know how to generate outer expression for " + getContextDescriptor().getContainingDeclaration());
throw new UnsupportedOperationException("Don't know how to generate outer expression for " + getContextDescriptor());
}
return stackValue;
}
@Override
public String toString() {
return "Constructor: " + getContextDescriptor().getName();
return "Constructor: " + getContextDescriptor();
}
@NotNull

View File

@@ -48,7 +48,7 @@ public final class EnclosedValueDescriptor {
public StackValue getOuterValue(ExpressionCodegen expressionCodegen) {
GenerationState state = expressionCodegen.getState();
for (LocalLookup.LocalLookupCase aCase : LocalLookup.LocalLookupCase.values()) {
if (aCase.isCase(descriptor, state)) {
if (aCase.isCase(descriptor)) {
return aCase.outerValue(this, expressionCodegen);
}
}

View File

@@ -34,8 +34,8 @@ public interface LocalLookup {
enum LocalLookupCase {
VAR {
@Override
public boolean isCase(DeclarationDescriptor d, GenerationState state) {
return (d instanceof VariableDescriptor) && !(d instanceof PropertyDescriptor);
public boolean isCase(DeclarationDescriptor d) {
return d instanceof VariableDescriptor && !(d instanceof PropertyDescriptor);
}
@Override
@@ -69,7 +69,7 @@ public interface LocalLookup {
LOCAL_NAMED_FUNCTION {
@Override
public boolean isCase(DeclarationDescriptor d, GenerationState state) {
public boolean isCase(DeclarationDescriptor d) {
return isLocalNamedFun(d);
}
@@ -100,7 +100,7 @@ public interface LocalLookup {
RECEIVER {
@Override
public boolean isCase(DeclarationDescriptor d, GenerationState state) {
public boolean isCase(DeclarationDescriptor d) {
return d instanceof CallableDescriptor;
}
@@ -129,7 +129,7 @@ public interface LocalLookup {
}
};
public abstract boolean isCase(DeclarationDescriptor d, GenerationState state);
public abstract boolean isCase(DeclarationDescriptor d);
public abstract StackValue innerValue(
DeclarationDescriptor d,

View File

@@ -19,37 +19,29 @@ package org.jetbrains.jet.codegen.context;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.asm4.Label;
import org.jetbrains.jet.codegen.binding.MutableClosure;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
import org.jetbrains.jet.codegen.OwnerKind;
import org.jetbrains.jet.codegen.StackValue;
import org.jetbrains.jet.codegen.binding.MutableClosure;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
public class MethodContext extends CodegenContext {
public class MethodContext extends CodegenContext<CallableMemberDescriptor> {
private Label methodStartLabel;
public MethodContext(
@NotNull FunctionDescriptor contextType,
@NotNull OwnerKind contextKind,
@NotNull CodegenContext parentContext
) {
this(contextType, contextKind, parentContext, null);
}
protected MethodContext(
@NotNull FunctionDescriptor contextType,
@NotNull FunctionDescriptor contextDescriptor,
@NotNull OwnerKind contextKind,
@NotNull CodegenContext parentContext,
@Nullable MutableClosure closure
) {
super(contextType instanceof PropertyAccessorDescriptor
? ((PropertyAccessorDescriptor) contextType).getCorrespondingProperty()
: contextType, contextKind, parentContext, closure,
super(contextDescriptor instanceof PropertyAccessorDescriptor
? ((PropertyAccessorDescriptor) contextDescriptor).getCorrespondingProperty()
: contextDescriptor, contextKind, parentContext, closure,
parentContext.hasThisDescriptor() ? parentContext.getThisDescriptor() : null, null);
}

View File

@@ -19,10 +19,12 @@ package org.jetbrains.jet.codegen.state;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.codegen.*;
import org.jetbrains.jet.codegen.ClassBuilderFactory;
import org.jetbrains.jet.codegen.ClassBuilderMode;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.SamWrapperClasses;
import org.jetbrains.jet.codegen.binding.CodegenBinding;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.di.InjectorForJvmCodegen;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
@@ -107,10 +109,10 @@ public class GenerationState {
this.typeMapper = new JetTypeMapper(bindingTrace, classBuilderMode);
InjectorForJvmCodegen injector = new InjectorForJvmCodegen(typeMapper, this, builderFactory, project);
this.intrinsics = injector.getIntrinsics();
this.classFileFactory = injector.getClassFileFactory();
this.intrinsics = new IntrinsicMethods();
this.classFileFactory = new ClassFileFactory(this);
this.classFileFactory.setBuilderFactory(builderFactory);
this.intrinsics.init();
this.generateNotNullAssertions = generateNotNullAssertions;
this.generateNotNullParamAssertions = generateNotNullParamAssertions;

View File

@@ -40,7 +40,8 @@ import org.jetbrains.jet.lang.resolve.calls.util.ExpressionAsFunctionDescriptor;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassStaticsPackageFragmentDescriptor;
import org.jetbrains.jet.lang.resolve.java.mapping.KotlinToJavaTypesMap;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.types.*;
@@ -58,7 +59,6 @@ import static org.jetbrains.jet.codegen.binding.CodegenBinding.*;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isAnnotationClass;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isAnonymousObject;
import static org.jetbrains.jet.lang.resolve.java.AsmTypeConstants.OBJECT_TYPE;
import static org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor.Kind.CLASS_STATICS;
public class JetTypeMapper extends BindingTraceAware {
@@ -122,14 +122,9 @@ public class JetTypeMapper extends BindingTraceAware {
@NotNull DeclarationDescriptor descriptor,
boolean insideModule
) {
if (packageFragment instanceof JavaPackageFragmentDescriptor) {
JavaPackageFragmentDescriptor javaPackageFragment = (JavaPackageFragmentDescriptor) packageFragment;
if (javaPackageFragment.getKind() == CLASS_STATICS) {
ClassDescriptor classDescriptor =
javaPackageFragment.getJavaDescriptorResolver().resolveClass(javaPackageFragment.getFqName());
assert classDescriptor != null : "Class not found while a package fragment exists: " + packageFragment;
return mapType(classDescriptor.getDefaultType()).getInternalName();
}
if (packageFragment instanceof JavaClassStaticsPackageFragmentDescriptor) {
JavaClassStaticsPackageFragmentDescriptor javaPackageFragment = (JavaClassStaticsPackageFragmentDescriptor) packageFragment;
return mapClass(javaPackageFragment.getCorrespondingClass()).getInternalName();
}
// It's not a package created for Java class statics
@@ -282,7 +277,7 @@ public class JetTypeMapper extends BindingTraceAware {
if (descriptor instanceof TypeParameterDescriptor) {
TypeParameterDescriptor typeParameterDescriptor = (TypeParameterDescriptor) descriptor;
Type type = mapType(typeParameterDescriptor.getUpperBoundsAsType(), kind);
Type type = mapType(typeParameterDescriptor.getUpperBounds().iterator().next(), kind);
if (signatureVisitor != null) {
signatureVisitor.writeTypeVariable(typeParameterDescriptor.getName(), type);
}

View File

@@ -1,90 +0,0 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.di;
import org.jetbrains.jet.codegen.state.JetTypeMapper;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.codegen.ClassBuilderFactory;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.codegen.ClassBuilderMode;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForJvmCodegen {
private final JetTypeMapper jetTypeMapper;
private final GenerationState generationState;
private final ClassBuilderFactory classBuilderFactory;
private final Project project;
private final BindingTrace bindingTrace;
private final BindingContext bindingContext;
private final ClassBuilderMode classBuilderMode;
private final IntrinsicMethods intrinsics;
private final ClassFileFactory classFileFactory;
public InjectorForJvmCodegen(
@NotNull JetTypeMapper jetTypeMapper,
@NotNull GenerationState generationState,
@NotNull ClassBuilderFactory classBuilderFactory,
@NotNull Project project
) {
this.jetTypeMapper = jetTypeMapper;
this.generationState = generationState;
this.classBuilderFactory = classBuilderFactory;
this.project = project;
this.bindingTrace = jetTypeMapper.getBindingTrace();
this.bindingContext = bindingTrace.getBindingContext();
this.classBuilderMode = classBuilderFactory.getClassBuilderMode();
this.intrinsics = new IntrinsicMethods();
this.classFileFactory = new ClassFileFactory(getGenerationState());
this.classFileFactory.setBuilderFactory(classBuilderFactory);
intrinsics.init();
}
@PreDestroy
public void destroy() {
}
public JetTypeMapper getJetTypeMapper() {
return this.jetTypeMapper;
}
public GenerationState getGenerationState() {
return this.generationState;
}
public Project getProject() {
return this.project;
}
public IntrinsicMethods getIntrinsics() {
return this.intrinsics;
}
public ClassFileFactory getClassFileFactory() {
return this.classFileFactory;
}
}

View File

@@ -22,7 +22,6 @@ import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.jet.config.CompilerConfiguration
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.descriptors.serialization.DescriptorSerializer
import org.jetbrains.jet.descriptors.serialization.SerializerExtension
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
@@ -41,6 +40,9 @@ import org.jetbrains.jet.cli.common.messages.MessageCollector
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM
import org.jetbrains.jet.lang.resolve.BindingTraceContext
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
import org.jetbrains.jet.lang.resolve.name.FqName
import com.intellij.util.containers.ContainerUtil
public class BuiltInsSerializer(val out: PrintStream?) {
private var totalSize = 0
@@ -73,12 +75,6 @@ public class BuiltInsSerializer(val out: PrintStream?) {
InjectorForJavaDescriptorResolverUtil.create(project, trace), false)
val module = session.getModuleDescriptor() ?: error("No module resolved for $sourceRoots")
val fqName = KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME
val packageView = module.getPackage(fqName) ?: error("No package resolved in $module")
// TODO: perform some kind of validation? At the moment not possible because DescriptorValidator is in compiler-tests
// DescriptorValidator.validate(packageView)
if (!FileUtil.delete(destDir)) {
System.err.println("Could not delete: " + destDir)
}
@@ -86,6 +82,19 @@ public class BuiltInsSerializer(val out: PrintStream?) {
System.err.println("Could not make directories: " + destDir)
}
for (fqName in ContainerUtil.mapNotNull(files) { it?.getPackageName() }.toSet()) {
serializePackage(module, FqName(fqName), destDir)
}
out?.println("Total bytes written: $totalSize to $totalFiles files")
}
fun serializePackage(module: ModuleDescriptor, fqName: FqName, destDir: File) {
val packageView = module.getPackage(fqName) ?: error("No package resolved in $module")
// TODO: perform some kind of validation? At the moment not possible because DescriptorValidator is in compiler-tests
// DescriptorValidator.validate(packageView)
val serializer = DescriptorSerializer(object : SerializerExtension() {
private val set = setOf("Any", "Nothing")
@@ -122,8 +131,6 @@ public class BuiltInsSerializer(val out: PrintStream?) {
val nameStream = ByteArrayOutputStream()
NameSerializationUtil.serializeNameTable(nameStream, serializer.getNameTable())
write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(fqName), nameStream)
out?.println("Total bytes written: $totalSize to $totalFiles files")
}
fun writeClassNames(serializer: DescriptorSerializer, classNames: List<Name>, stream: ByteArrayOutputStream) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -209,7 +209,7 @@ public class CliLightClassGenerationSupport extends LightClassGenerationSupport
@Nullable
@Override
public PsiClass getPsiClass(@NotNull JetClassOrObject classOrObject) {
return KotlinLightClassForExplicitDeclaration.create(classOrObject.getManager(), classOrObject);
return KotlinLightClassForExplicitDeclaration.create(classOrObject.getManager(), classOrObject);
}
public static class BindingTraceContextWithoutScopeRecording extends BindingTraceContext {

View File

@@ -42,7 +42,7 @@ import org.jetbrains.jet.config.CommonConfigurationKeys;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import org.jetbrains.jet.utils.KotlinPaths;
import org.jetbrains.jet.utils.PathUtil;
@@ -206,10 +206,10 @@ public class CompileEnvironmentUtil {
throw new CompileEnvironmentException("Invalid jar path " + jarPath, e);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
finally {
ExceptionUtils.closeQuietly(outputStream);
UtilsPackage.closeQuietly(outputStream);
}
}

View File

@@ -31,6 +31,7 @@ import com.intellij.openapi.fileTypes.PlainTextFileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElementFinder;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
@@ -198,6 +199,8 @@ public class JetCoreEnvironment {
configuration.getList(CommonConfigurationKeys.SCRIPT_DEFINITIONS_KEY));
project.registerService(VirtualFileFinder.class, new CliVirtualFileFinder(classPath));
project.registerService(PsiDocumentManager.class, new MockPsiDocumentManager());
}
public CompilerConfiguration getConfiguration() {

View File

@@ -0,0 +1,135 @@
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.cli.jvm.compiler;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
// copied from com.intellij.mock.MockPsiDocumentManager
public class MockPsiDocumentManager extends PsiDocumentManager {
@Override
@Nullable
public PsiFile getPsiFile(@NotNull Document document) {
throw new UnsupportedOperationException("Method getPsiFile is not yet implemented in " + getClass().getName());
}
@Override
@Nullable
public PsiFile getCachedPsiFile(@NotNull Document document) {
throw new UnsupportedOperationException("Method getCachedPsiFile is not yet implemented in " + getClass().getName());
}
@Override
@Nullable
public Document getDocument(@NotNull PsiFile file) {
return null;
}
@Override
@Nullable
public Document getCachedDocument(@NotNull PsiFile file) {
VirtualFile vFile = file.getViewProvider().getVirtualFile();
return FileDocumentManager.getInstance().getCachedDocument(vFile);
}
@Override
public void commitAllDocuments() {
}
@Override
public void performForCommittedDocument(@NotNull final Document document, @NotNull final Runnable action) {
action.run();
}
@Override
public void commitDocument(@NotNull Document document) {
}
public CharSequence getLastCommittedText(@NotNull Document document) {
return document.getText();
}
@Override
@NotNull
public Document[] getUncommittedDocuments() {
throw new UnsupportedOperationException("Method getUncommittedDocuments is not yet implemented in " + getClass().getName());
}
@Override
public boolean isUncommited(@NotNull Document document) {
throw new UnsupportedOperationException("Method isUncommited is not yet implemented in " + getClass().getName());
}
@Override
public boolean isCommitted(@NotNull Document document) {
throw new UnsupportedOperationException();
}
@Override
public boolean hasUncommitedDocuments() {
throw new UnsupportedOperationException("Method hasUncommitedDocuments is not yet implemented in " + getClass().getName());
}
@Override
public void commitAndRunReadAction(@NotNull Runnable runnable) {
throw new UnsupportedOperationException("Method commitAndRunReadAction is not yet implemented in " + getClass().getName());
}
@Override
public <T> T commitAndRunReadAction(@NotNull Computable<T> computation) {
throw new UnsupportedOperationException("Method commitAndRunReadAction is not yet implemented in " + getClass().getName());
}
@Override
public void addListener(@NotNull Listener listener) {
throw new UnsupportedOperationException("Method addListener is not yet implemented in " + getClass().getName());
}
@Override
public void removeListener(@NotNull Listener listener) {
throw new UnsupportedOperationException("Method removeListener is not yet implemented in " + getClass().getName());
}
@Override
public boolean isDocumentBlockedByPsi(@NotNull Document doc) {
throw new UnsupportedOperationException("Method isDocumentBlockedByPsi is not yet implemented in " + getClass().getName());
}
@Override
public void doPostponedOperationsAndUnblockDocument(@NotNull Document doc) {
throw new UnsupportedOperationException(
"Method doPostponedOperationsAndUnblockDocument is not yet implemented in " + getClass().getName());
}
@Override
public boolean performWhenAllCommitted(@NotNull Runnable action) {
throw new UnsupportedOperationException();
}
@Override
public void reparseFiles(@NotNull Collection<VirtualFile> files, boolean includeOpenFiles) {
throw new UnsupportedOperationException();
}
}

View File

@@ -22,7 +22,7 @@ import jline.console.ConsoleReader;
import jline.console.history.FileHistory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import java.io.File;
import java.io.PrintWriter;
@@ -59,7 +59,7 @@ public class ReplFromTerminal {
consoleReader.setHistoryEnabled(true);
consoleReader.setHistory(new FileHistory(new File(new File(System.getProperty("user.home")), ".kotlin_history")));
} catch (Exception e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
@@ -72,13 +72,13 @@ public class ReplFromTerminal {
try {
waitRepl.wait();
} catch (Throwable e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
if (replInterpreter != null) {
return replInterpreter;
}
throw ExceptionUtils.rethrow(replInitializationFailed);
throw UtilsPackage.rethrow(replInitializationFailed);
}
}
@@ -94,7 +94,7 @@ public class ReplFromTerminal {
}
}
} catch (Exception e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
} finally {
try {
((FileHistory) consoleReader.getHistory()).flush();
@@ -132,7 +132,7 @@ public class ReplFromTerminal {
}
}
catch (Exception e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}

View File

@@ -59,8 +59,9 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
import org.jetbrains.jet.lang.types.lang.InlineUtil;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.plugin.JetLanguage;
import org.jetbrains.jet.storage.ExceptionTracker;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import java.io.File;
import java.io.PrintWriter;
@@ -103,6 +104,7 @@ public class ReplInterpreter {
module = AnalyzerFacadeForJVM.createJavaModule("<repl>");
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
new LockBasedStorageManager(),
new ExceptionTracker(), // dummy
Predicates.<PsiFile>alwaysTrue(),
false,
true,
@@ -119,7 +121,7 @@ public class ReplInterpreter {
classpath.add(file.toURI().toURL());
}
catch (MalformedURLException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
@@ -281,7 +283,7 @@ public class ReplInterpreter {
PrintWriter writer = new PrintWriter(System.err);
classLoader.dumpClasses(writer);
writer.flush();
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}

View File

@@ -1 +0,0 @@
org.jetbrains.jet.lang.resolve.java.resolver.ProgressCheckerImpl

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,62 +18,45 @@ package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.context.GlobalContextImpl;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProviderImpl;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
/* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL")
public class InjectorForJavaDescriptorResolver {
private final Project project;
private final BindingTrace bindingTrace;
private final GlobalContextImpl globalContext;
private final LockBasedStorageManager lockBasedStorageManager;
private final ModuleDescriptorImpl module;
private final JavaDescriptorResolver javaDescriptorResolver;
private final JavaClassFinderImpl javaClassFinder;
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
private final TraceBasedErrorReporter traceBasedErrorReporter;
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
private final JavaDescriptorResolver javaDescriptorResolver;
private final JavaPackageFragmentProviderImpl javaPackageFragmentProvider;
private final VirtualFileFinder virtualFileFinder;
private final ModuleDescriptorImpl module;
private final JavaAnnotationResolver javaAnnotationResolver;
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
private final JavaClassResolver javaClassResolver;
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
private final GlobalJavaResolverContext globalJavaResolverContext;
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
private final JavaFunctionResolver javaFunctionResolver;
private final JavaTypeParameterResolver javaTypeParameterResolver;
private final JavaTypeTransformer javaTypeTransformer;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaMemberResolver javaMemberResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaPropertyResolver javaPropertyResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
public InjectorForJavaDescriptorResolver(
@NotNull Project project,
@@ -81,128 +64,44 @@ public class InjectorForJavaDescriptorResolver {
) {
this.project = project;
this.bindingTrace = bindingTrace;
this.lockBasedStorageManager = new LockBasedStorageManager();
this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
this.lockBasedStorageManager = globalContext.getStorageManager();
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
this.javaClassFinder = new JavaClassFinderImpl();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.javaDescriptorResolver = new JavaDescriptorResolver();
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
this.javaAnnotationResolver = new JavaAnnotationResolver();
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
this.javaClassResolver = new JavaClassResolver();
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(getLockBasedStorageManager());
this.javaFunctionResolver = new JavaFunctionResolver();
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
this.javaTypeTransformer = new JavaTypeTransformer();
this.javaValueParameterResolver = new JavaValueParameterResolver();
this.javaMemberResolver = new JavaMemberResolver();
this.javaConstructorResolver = new JavaConstructorResolver();
this.javaPropertyResolver = new JavaPropertyResolver();
this.javaSupertypeResolver = new JavaSupertypeResolver();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache);
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(lockBasedStorageManager);
this.javaClassFinder.setProject(project);
traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
traceBasedJavaResolverCache.setTrace(bindingTrace);
traceBasedErrorReporter.setTrace(bindingTrace);
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
this.javaDescriptorResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
this.javaDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
this.javaDescriptorResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
this.javaDescriptorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
this.javaDescriptorResolver.setJavaClassFinder(javaClassFinder);
this.javaDescriptorResolver.setJavaResolverCache(traceBasedJavaResolverCache);
this.javaDescriptorResolver.setKotlinClassFinder(virtualFileFinder);
this.javaDescriptorResolver.setModule(module);
this.javaDescriptorResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
this.javaDescriptorResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
this.javaDescriptorResolver.setStorageManager(lockBasedStorageManager);
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
javaPackageFragmentProvider.setModule(module);
javaAnnotationResolver.setArgumentResolver(javaAnnotationArgumentResolver);
javaAnnotationResolver.setClassResolver(javaClassResolver);
javaAnnotationResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
javaClassResolver.setCache(traceBasedJavaResolverCache);
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver);
javaClassResolver.setJavaClassFinder(javaClassFinder);
javaClassResolver.setKotlinClassFinder(virtualFileFinder);
javaClassResolver.setMemberResolver(javaMemberResolver);
javaClassResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
deserializedDescriptorResolver.setJavaPackageFragmentProvider(javaPackageFragmentProvider);
deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
annotationDescriptorDeserializer.setJavaDescriptorResolver(javaDescriptorResolver);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
javaTypeTransformer.setClassResolver(javaClassResolver);
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaMemberResolver.setClassResolver(javaClassResolver);
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
javaSupertypeResolver.setClassResolver(javaClassResolver);
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
javaClassFinder.initialize();
}
@@ -211,20 +110,20 @@ public class InjectorForJavaDescriptorResolver {
public void destroy() {
}
public LockBasedStorageManager getLockBasedStorageManager() {
return this.lockBasedStorageManager;
}
public JavaClassFinderImpl getJavaClassFinder() {
return this.javaClassFinder;
}
public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver;
public GlobalContextImpl getGlobalContext() {
return this.globalContext;
}
public ModuleDescriptorImpl getModule() {
return this.module;
}
public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver;
}
public JavaClassFinderImpl getJavaClassFinder() {
return this.javaClassFinder;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,18 +16,14 @@
package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
@@ -36,58 +32,49 @@ import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProviderImpl;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
/* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final StorageManager storageManager;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final StorageManager storageManager;
private final BindingTrace bindingTrace;
private final ModuleDescriptorImpl moduleDescriptor;
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final JavaDescriptorResolver javaDescriptorResolver;
private final JavaToKotlinClassMap javaToKotlinClassMap;
private final JavaClassFinderImpl javaClassFinder;
@@ -96,40 +83,34 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final TraceBasedErrorReporter traceBasedErrorReporter;
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final JavaPackageFragmentProviderImpl javaPackageFragmentProvider;
private final VirtualFileFinder virtualFileFinder;
private final DeclarationResolver declarationResolver;
private final BodyResolver bodyResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final DeclarationResolver declarationResolver;
private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final JavaClassResolver javaClassResolver;
private final JavaAnnotationResolver javaAnnotationResolver;
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
private final JavaTypeTransformer javaTypeTransformer;
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
private final GlobalJavaResolverContext globalJavaResolverContext;
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
private final JavaFunctionResolver javaFunctionResolver;
private final JavaTypeParameterResolver javaTypeParameterResolver;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaMemberResolver javaMemberResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaPropertyResolver javaPropertyResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
public InjectorForTopDownAnalyzerForJvm(
@NotNull Project project,
@@ -137,60 +118,50 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
@NotNull BindingTrace bindingTrace,
@NotNull ModuleDescriptorImpl moduleDescriptor
) {
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.bodyResolver = new BodyResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.descriptorResolver = new DescriptorResolver();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters;
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor;
this.javaDescriptorResolver = new JavaDescriptorResolver();
this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance();
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.javaClassFinder = new JavaClassFinderImpl();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
this.declarationResolver = new DeclarationResolver();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache);
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor());
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor());
this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance();
this.bodyResolver = new BodyResolver();
this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(storageManager, javaToKotlinClassMap);
this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), javaToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.declarationResolver = new DeclarationResolver();
this.importsResolver = new ImportsResolver();
this.jetImportsFactory = new JetImportsFactory();
this.scriptHeaderResolver = new ScriptHeaderResolver();
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.javaClassResolver = new JavaClassResolver();
this.javaAnnotationResolver = new JavaAnnotationResolver();
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
this.javaTypeTransformer = new JavaTypeTransformer();
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager);
this.javaFunctionResolver = new JavaFunctionResolver();
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
this.javaValueParameterResolver = new JavaValueParameterResolver();
this.javaMemberResolver = new JavaMemberResolver();
this.javaConstructorResolver = new JavaConstructorResolver();
this.javaPropertyResolver = new JavaPropertyResolver();
this.javaSupertypeResolver = new JavaSupertypeResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext);
@@ -205,68 +176,29 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setAnnotationResolver(annotationResolver);
this.bodyResolver.setCallResolver(callResolver);
this.bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace);
this.controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.controlFlowAnalyzer.setTrace(bindingTrace);
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setStorageManager(storageManager);
this.descriptorResolver.setTypeResolver(typeResolver);
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
this.javaDescriptorResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
this.javaDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
this.javaDescriptorResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
this.javaDescriptorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
this.javaDescriptorResolver.setJavaClassFinder(javaClassFinder);
this.javaDescriptorResolver.setJavaResolverCache(traceBasedJavaResolverCache);
this.javaDescriptorResolver.setKotlinClassFinder(virtualFileFinder);
this.javaDescriptorResolver.setModule(moduleDescriptor);
this.javaDescriptorResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
this.javaDescriptorResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
this.javaDescriptorResolver.setStorageManager(storageManager);
javaClassFinder.setProject(project);
traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
traceBasedJavaResolverCache.setTrace(bindingTrace);
traceBasedErrorReporter.setTrace(bindingTrace);
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
javaPackageFragmentProvider.setModule(moduleDescriptor);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
bodyResolver.setAnnotationResolver(annotationResolver);
bodyResolver.setCallResolver(callResolver);
bodyResolver.setContext(topDownAnalysisContext);
bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
bodyResolver.setDeclarationsChecker(declarationsChecker);
bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
bodyResolver.setExpressionTypingServices(expressionTypingServices);
bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
bodyResolver.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -289,12 +221,38 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(storageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
controlFlowAnalyzer.setTrace(bindingTrace);
declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
importsResolver.setContext(topDownAnalysisContext);
importsResolver.setImportsFactory(jetImportsFactory);
importsResolver.setModuleDescriptor(moduleDescriptor);
@@ -323,78 +281,16 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
javaClassResolver.setCache(traceBasedJavaResolverCache);
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver);
javaClassResolver.setJavaClassFinder(javaClassFinder);
javaClassResolver.setKotlinClassFinder(virtualFileFinder);
javaClassResolver.setMemberResolver(javaMemberResolver);
javaClassResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
javaAnnotationResolver.setArgumentResolver(javaAnnotationArgumentResolver);
javaAnnotationResolver.setClassResolver(javaClassResolver);
javaAnnotationResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
javaTypeTransformer.setClassResolver(javaClassResolver);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
deserializedDescriptorResolver.setJavaPackageFragmentProvider(javaPackageFragmentProvider);
deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
deserializedDescriptorResolver.setStorageManager(storageManager);
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
annotationDescriptorDeserializer.setJavaDescriptorResolver(javaDescriptorResolver);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaMemberResolver.setClassResolver(javaClassResolver);
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
javaSupertypeResolver.setClassResolver(javaClassResolver);
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
javaClassFinder.initialize();
}
@@ -403,6 +299,10 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
public void destroy() {
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public TopDownAnalyzer getTopDownAnalyzer() {
return this.topDownAnalyzer;
}
@@ -411,38 +311,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
return this.topDownAnalysisContext;
}
public BodyResolver getBodyResolver() {
return this.bodyResolver;
}
public ControlFlowAnalyzer getControlFlowAnalyzer() {
return this.controlFlowAnalyzer;
}
public DeclarationsChecker getDeclarationsChecker() {
return this.declarationsChecker;
}
public DescriptorResolver getDescriptorResolver() {
return this.descriptorResolver;
}
public Project getProject() {
return this.project;
}
public TopDownAnalysisParameters getTopDownAnalysisParameters() {
return this.topDownAnalysisParameters;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,8 +25,12 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.analyzer.AnalyzerFacade;
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
import org.jetbrains.jet.context.ContextPackage;
import org.jetbrains.jet.context.GlobalContext;
import org.jetbrains.jet.context.GlobalContextImpl;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.di.InjectorForLazyResolve;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.descriptors.DependencyKind;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
@@ -36,11 +40,9 @@ import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import java.util.Collection;
import java.util.Collections;
@@ -101,13 +103,16 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
final JavaClassFinderImpl classFinder = injector.getJavaClassFinder();
// TODO: Replace with stub declaration provider
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager(injector.getLockBasedStorageManager());
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(storageManager, files, new Predicate<FqName>() {
@Override
public boolean apply(FqName fqName) {
return classFinder.findPackage(fqName) != null || KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName);
}
});
GlobalContextImpl globalContext = injector.getGlobalContext();
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(
globalContext.getStorageManager(),
files,
new Predicate<FqName>() {
@Override
public boolean apply(FqName fqName) {
return classFinder.findPackage(fqName) != null || KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName);
}
});
ModuleDescriptorImpl module = injector.getModule();
@@ -115,7 +120,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
module.addFragmentProvider(DependencyKind.BUILT_INS, KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
}
return new ResolveSession(project, storageManager, module, declarationProviderFactory, trace);
return new InjectorForLazyResolve(project, globalContext, module, declarationProviderFactory, trace).getResolveSession();
}
@NotNull
@@ -199,9 +204,31 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
Predicate<PsiFile> filesToAnalyzeCompletely,
boolean storeContextForBodiesResolve,
ModuleDescriptorImpl module
) {
GlobalContext globalContext = ContextPackage.GlobalContext();
return analyzeFilesWithJavaIntegrationInGlobalContext(project, files, trace, scriptParameters, filesToAnalyzeCompletely,
storeContextForBodiesResolve, module, globalContext);
}
@NotNull
public static AnalyzeExhaust analyzeFilesWithJavaIntegrationInGlobalContext(
Project project,
Collection<JetFile> files,
BindingTrace trace,
List<AnalyzerScriptParameter> scriptParameters,
Predicate<PsiFile> filesToAnalyzeCompletely,
boolean storeContextForBodiesResolve,
ModuleDescriptorImpl module,
GlobalContext globalContext
) {
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
new LockBasedStorageManager(), filesToAnalyzeCompletely, false, false, scriptParameters);
globalContext.getStorageManager(),
globalContext.getExceptionTracker(),
filesToAnalyzeCompletely,
false,
false,
scriptParameters
);
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
try {

View File

@@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.resolve.java.jetAsJava
import com.intellij.psi.PsiElement
import org.jetbrains.jet.lang.psi.JetDeclaration
trait KotlinLightElement<T: JetDeclaration, D: PsiElement> {
public trait KotlinLightElement<T: JetDeclaration, D: PsiElement> {
val origin: T?
val delegate: D
}

View File

@@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl;
import org.jetbrains.jet.lang.types.JetType;
@@ -33,12 +33,12 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa
private JetType altReturnType;
public AlternativeFieldSignatureData(
@NotNull JavaAnnotationResolver annotationResolver,
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
@NotNull JavaFieldImpl field,
@NotNull JetType originalReturnType,
boolean isVar
) {
String signature = SignaturesUtil.getKotlinSignature(annotationResolver, field);
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field);
if (signature == null) {
setAnnotated(false);

View File

@@ -27,7 +27,7 @@ import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
import org.jetbrains.jet.lang.resolve.name.Name;
@@ -55,7 +55,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
private Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters;
public AlternativeMethodSignatureData(
@NotNull JavaAnnotationResolver annotationResolver,
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
@NotNull JavaMethodImpl method,
@Nullable JetType receiverType,
@NotNull List<ValueParameterDescriptor> valueParameters,
@@ -63,7 +63,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
boolean hasSuperMethods
) {
String signature = SignaturesUtil.getKotlinSignature(annotationResolver, method);
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, method);
if (signature == null) {
setAnnotated(false);

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@@ -27,7 +27,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.Visibilities;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
import org.jetbrains.jet.lang.resolve.java.structure.*;
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaTypeSubstitutorImpl;
@@ -234,7 +234,7 @@ class PropagationHeuristics {
return !method.isConstructor() &&
!method.isStatic() &&
method.getVisibility() != Visibilities.PRIVATE &&
!JavaSupertypeResolver.OBJECT_FQ_NAME.equals(method.getContainingClass().getFqName());
!DescriptorResolverUtils.OBJECT_FQ_NAME.equals(method.getContainingClass().getFqName());
}
}
}

View File

@@ -20,11 +20,8 @@ import com.intellij.openapi.util.text.StringUtil;
import jet.runtime.typeinfo.KotlinSignature;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation;
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotationArgument;
import org.jetbrains.jet.lang.resolve.java.structure.JavaLiteralAnnotationArgument;
import org.jetbrains.jet.lang.resolve.java.structure.JavaMember;
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.structure.*;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
@@ -38,8 +35,8 @@ public class SignaturesUtil {
}
@Nullable
public static String getKotlinSignature(@NotNull JavaAnnotationResolver annotationResolver, @NotNull JavaMember member) {
JavaAnnotation annotation = annotationResolver.findAnnotationWithExternal(member, KOTLIN_SIGNATURE);
public static String getKotlinSignature(@NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaMember member) {
JavaAnnotation annotation = findAnnotationWithExternal(externalAnnotationResolver, member, KOTLIN_SIGNATURE);
if (annotation != null) {
JavaAnnotationArgument argument = annotation.findArgument(KOTLIN_SIGNATURE_VALUE_FIELD_NAME);
@@ -53,4 +50,15 @@ public class SignaturesUtil {
return null;
}
@Nullable
public static JavaAnnotation findAnnotationWithExternal(@NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaAnnotationOwner owner, @NotNull FqName name) {
JavaAnnotation annotation = owner.findAnnotation(name);
if (annotation != null) {
return annotation;
}
return externalAnnotationResolver.findExternalAnnotation(owner, name);
}
}

View File

@@ -46,12 +46,12 @@ import static org.jetbrains.jet.lang.resolve.OverridingUtil.isReturnTypeOkForOve
public class PsiBasedMethodSignatureChecker implements MethodSignatureChecker {
private static final Logger LOG = Logger.getInstance(PsiBasedMethodSignatureChecker.class);
private JavaAnnotationResolver annotationResolver;
private ExternalAnnotationResolver externalAnnotationResolver;
private ExternalSignatureResolver externalSignatureResolver;
@Inject
public void setAnnotationResolver(JavaAnnotationResolver annotationResolver) {
this.annotationResolver = annotationResolver;
public void setExternalAnnotationResolver(ExternalAnnotationResolver externalAnnotationResolver) {
this.externalAnnotationResolver = externalAnnotationResolver;
}
@Inject
@@ -92,7 +92,7 @@ public class PsiBasedMethodSignatureChecker implements MethodSignatureChecker {
+ "sub function = " + function + "\n"
+ "sub class = " + function.getContainingDeclaration() + "\n"
+ "sub method = " + JavaSignatureFormatter.getInstance().getExternalName(method) + "\n"
+ "@KotlinSignature = " + SignaturesUtil.getKotlinSignature(annotationResolver, method));
+ "@KotlinSignature = " + SignaturesUtil.getKotlinSignature(externalAnnotationResolver, method));
}
}

View File

@@ -39,7 +39,7 @@ import java.util.List;
public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver {
private BindingTrace trace;
private JavaAnnotationResolver annotationResolver;
private ExternalAnnotationResolver externalAnnotationResolver;
@Inject
public void setTrace(BindingTrace trace) {
@@ -47,8 +47,8 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
}
@Inject
public void setAnnotationResolver(JavaAnnotationResolver annotationResolver) {
this.annotationResolver = annotationResolver;
public void setExternalAnnotationResolver(ExternalAnnotationResolver externalAnnotationResolver) {
this.externalAnnotationResolver = externalAnnotationResolver;
}
@Override
@@ -80,7 +80,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
@NotNull List<TypeParameterDescriptor> typeParameters
) {
AlternativeMethodSignatureData data =
new AlternativeMethodSignatureData(annotationResolver, (JavaMethodImpl) method, receiverType, valueParameters, returnType,
new AlternativeMethodSignatureData(externalAnnotationResolver, (JavaMethodImpl) method, receiverType, valueParameters, returnType,
typeParameters, hasSuperMethods);
if (data.isAnnotated() && !data.hasErrors()) {
@@ -100,7 +100,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
boolean isVar
) {
AlternativeFieldSignatureData data =
new AlternativeFieldSignatureData(annotationResolver, (JavaFieldImpl) field, returnType, isVar);
new AlternativeFieldSignatureData(externalAnnotationResolver, (JavaFieldImpl) field, returnType, isVar);
if (data.isAnnotated() && !data.hasErrors()) {
return new AlternativeFieldSignature(data.getReturnType(), null);

View File

@@ -25,9 +25,9 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
import org.jetbrains.jet.lang.resolve.CompileTimeConstantUtils;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.CompileTimeConstantUtils;
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
import org.jetbrains.jet.lang.resolve.java.structure.JavaElement;
@@ -94,9 +94,10 @@ public class TraceBasedJavaResolverCache implements JavaResolverCache {
PsiExpression initializer = psiField.getInitializer();
Object evaluatedExpression = JavaConstantExpressionEvaluator.computeConstantExpression(initializer, false);
if (evaluatedExpression != null) {
CompileTimeConstant<?> constant = JavaAnnotationArgumentResolver.
resolveCompileTimeConstantValue(evaluatedExpression, CompileTimeConstantUtils
.isPropertyCompileTimeConstant(descriptor), descriptor.getType());
CompileTimeConstant<?> constant =
ResolverPackage.resolveCompileTimeConstantValue(evaluatedExpression,
CompileTimeConstantUtils.isPropertyCompileTimeConstant(descriptor),
descriptor.getType());
if (constant != null) {
trace.record(COMPILE_TIME_INITIALIZER, descriptor, constant);
}

View File

@@ -32,7 +32,7 @@ import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.storage.NotNullLazyValue;
import org.jetbrains.jet.storage.NullableLazyValue;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import java.io.IOException;
@@ -81,7 +81,7 @@ public class VirtualFileKotlinClass implements KotlinJvmBinaryClass {
}, SKIP_CODE | SKIP_DEBUG | SKIP_FRAMES);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
return classNameRef.get();
}
@@ -113,7 +113,7 @@ public class VirtualFileKotlinClass implements KotlinJvmBinaryClass {
}, SKIP_CODE | SKIP_DEBUG | SKIP_FRAMES);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
@@ -197,7 +197,7 @@ public class VirtualFileKotlinClass implements KotlinJvmBinaryClass {
}, SKIP_CODE | SKIP_DEBUG | SKIP_FRAMES);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}

View File

@@ -18,7 +18,7 @@ package org.jetbrains.jet.descriptors.serialization;
import com.google.protobuf.ExtensionRegistryLite;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -34,7 +34,7 @@ public final class ClassData {
return new ClassData(nameResolver, classProto);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
@@ -66,7 +66,7 @@ public final class ClassData {
return result.toByteArray();
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
}

View File

@@ -17,7 +17,7 @@
package org.jetbrains.jet.descriptors.serialization;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import java.io.IOException;
import java.io.InputStream;
@@ -35,7 +35,7 @@ public class NameSerializationUtil {
return new NameResolver(simpleNames, qualifiedNames);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
@@ -57,7 +57,7 @@ public class NameSerializationUtil {
qualifiedNameTable.writeDelimitedTo(out);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}

View File

@@ -18,7 +18,7 @@ package org.jetbrains.jet.descriptors.serialization;
import com.google.protobuf.ExtensionRegistryLite;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.utils.ExceptionUtils;
import org.jetbrains.jet.utils.UtilsPackage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -34,7 +34,7 @@ public final class PackageData {
return new PackageData(nameResolver, packageProto);
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
@@ -66,7 +66,7 @@ public final class PackageData {
return result.toByteArray();
}
catch (IOException e) {
throw ExceptionUtils.rethrow(e);
throw UtilsPackage.rethrow(e);
}
}
}

View File

@@ -60,37 +60,6 @@ public interface AnnotationDeserializer {
}
};
AnnotationDeserializer EMPTY = new AnnotationDeserializer() {
@NotNull
@Override
public Annotations loadClassAnnotations(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class classProto) {
return Annotations.EMPTY;
}
@NotNull
@Override
public Annotations loadCallableAnnotations(
@NotNull ClassOrPackageFragmentDescriptor container,
@NotNull ProtoBuf.Callable proto,
@NotNull NameResolver nameResolver,
@NotNull AnnotatedCallableKind kind
) {
return Annotations.EMPTY;
}
@NotNull
@Override
public Annotations loadValueParameterAnnotations(
@NotNull ClassOrPackageFragmentDescriptor container,
@NotNull ProtoBuf.Callable callable,
@NotNull NameResolver nameResolver,
@NotNull AnnotatedCallableKind kind,
@NotNull ProtoBuf.Callable.ValueParameter proto
) {
return Annotations.EMPTY;
}
};
enum AnnotatedCallableKind {
FUNCTION,
PROPERTY,

View File

@@ -38,7 +38,13 @@ public class AnalyzerFacadeForEverything {
@NotNull ModuleDescriptor module) {
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
bodiesResolveContext.getStorageManager(), filesToAnalyzeCompletely, false, false, scriptParameters);
bodiesResolveContext.getStorageManager(),
bodiesResolveContext.getExceptionTracker(),
filesToAnalyzeCompletely,
false,
false,
scriptParameters
);
bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters);

View File

@@ -0,0 +1,36 @@
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.context
import org.jetbrains.jet.storage.StorageManager
import org.jetbrains.jet.storage.ExceptionTracker
import org.jetbrains.jet.storage.LockBasedStorageManager
trait GlobalContext {
val storageManager: StorageManager
val exceptionTracker: ExceptionTracker
}
open class GlobalContextImpl(
override val storageManager: LockBasedStorageManager,
override val exceptionTracker: ExceptionTracker
) : GlobalContext
fun GlobalContext(): GlobalContextImpl {
val tracker = ExceptionTracker()
return GlobalContextImpl(LockBasedStorageManager.createWithExceptionHandling(tracker), tracker)
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,16 +16,14 @@
package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.storage.StorageManager;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -35,27 +33,28 @@ import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
/* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL")
public class InjectorForBodyResolve {
private final BodyResolver bodyResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final StorageManager storageManager;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final StorageManager storageManager;
private final BindingTrace bindingTrace;
private final BodiesResolveContext bodiesResolveContext;
private final ModuleDescriptor moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final BodyResolver bodyResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
@@ -65,9 +64,11 @@ public class InjectorForBodyResolve {
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final TopDownAnalysisContext topDownAnalysisContext;
@@ -78,28 +79,28 @@ public class InjectorForBodyResolve {
@NotNull BodiesResolveContext bodiesResolveContext,
@NotNull ModuleDescriptor moduleDescriptor
) {
this.bodyResolver = new BodyResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters;
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.bindingTrace = bindingTrace;
this.bodiesResolveContext = bodiesResolveContext;
this.moduleDescriptor = moduleDescriptor;
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.bodyResolver = new BodyResolver();
this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap);
this.expressionTypingServices = new ExpressionTypingServices(bodiesResolveContext, platformToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalysisContext = new TopDownAnalysisContext();
@@ -115,8 +116,6 @@ public class InjectorForBodyResolve {
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -157,6 +156,8 @@ public class InjectorForBodyResolve {
declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
@@ -173,20 +174,4 @@ public class InjectorForBodyResolve {
return this.bodyResolver;
}
public Project getProject() {
return this.project;
}
public TopDownAnalysisParameters getTopDownAnalysisParameters() {
return this.topDownAnalysisParameters;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public BodiesResolveContext getBodiesResolveContext() {
return this.bodiesResolveContext;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,98 +17,93 @@
package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.context.GlobalContextImpl;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
/* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL")
public class InjectorForLazyResolve {
private final Project project;
private final ResolveSession resolveSession;
private final ModuleDescriptor moduleDescriptor;
private final DescriptorResolver descriptorResolver;
private final ExpressionTypingServices expressionTypingServices;
private final TypeResolver typeResolver;
private final ScopeProvider scopeProvider;
private final AnnotationResolver annotationResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final JetImportsFactory jetImportsFactory;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final GlobalContextImpl globalContext;
private final LockBasedStorageManager lockBasedStorageManager;
private final ModuleDescriptorImpl moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final StorageManager storageManager;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final CallExpressionResolver callExpressionResolver;
private final DeclarationProviderFactory declarationProviderFactory;
private final BindingTrace bindingTrace;
private final ResolveSession resolveSession;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver;
private final JetImportsFactory jetImportsFactory;
private final ScopeProvider scopeProvider;
public InjectorForLazyResolve(
@NotNull Project project,
@NotNull ResolveSession resolveSession,
@NotNull ModuleDescriptor moduleDescriptor
@NotNull GlobalContextImpl globalContext,
@NotNull ModuleDescriptorImpl moduleDescriptor,
@NotNull DeclarationProviderFactory declarationProviderFactory,
@NotNull BindingTrace bindingTrace
) {
this.project = project;
this.resolveSession = resolveSession;
this.globalContext = globalContext;
this.lockBasedStorageManager = globalContext.getStorageManager();
this.moduleDescriptor = moduleDescriptor;
this.descriptorResolver = new DescriptorResolver();
this.storageManager = resolveSession.getStorageManager();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap);
this.typeResolver = new TypeResolver();
this.scopeProvider = new ScopeProvider(resolveSession);
this.declarationProviderFactory = declarationProviderFactory;
this.bindingTrace = bindingTrace;
this.resolveSession = new ResolveSession(project, globalContext, moduleDescriptor, declarationProviderFactory, bindingTrace);
this.annotationResolver = new AnnotationResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.jetImportsFactory = new JetImportsFactory();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.callExpressionResolver = new CallExpressionResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver();
this.jetImportsFactory = new JetImportsFactory();
this.scopeProvider = new ScopeProvider(getResolveSession());
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setStorageManager(storageManager);
this.descriptorResolver.setTypeResolver(typeResolver);
this.resolveSession.setAnnotationResolve(annotationResolver);
this.resolveSession.setDescriptorResolver(descriptorResolver);
this.resolveSession.setJetImportFactory(jetImportsFactory);
this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver);
this.resolveSession.setScopeProvider(scopeProvider);
this.resolveSession.setTypeResolver(typeResolver);
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
this.expressionTypingServices.setCallResolver(callResolver);
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
this.expressionTypingServices.setProject(project);
this.expressionTypingServices.setTypeResolver(typeResolver);
this.typeResolver.setAnnotationResolver(annotationResolver);
this.typeResolver.setModuleDescriptor(moduleDescriptor);
this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
this.annotationResolver.setCallResolver(callResolver);
this.annotationResolver.setExpressionTypingServices(expressionTypingServices);
this.jetImportsFactory.setProject(project);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices);
callResolver.setArgumentTypeResolver(argumentTypeResolver);
callResolver.setCandidateResolver(candidateResolver);
@@ -118,40 +113,40 @@ public class InjectorForLazyResolve {
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
argumentTypeResolver.setTypeResolver(typeResolver);
expressionTypingServices.setAnnotationResolver(annotationResolver);
expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
expressionTypingServices.setCallResolver(callResolver);
expressionTypingServices.setDescriptorResolver(descriptorResolver);
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
expressionTypingServices.setProject(project);
expressionTypingServices.setTypeResolver(typeResolver);
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(lockBasedStorageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
jetImportsFactory.setProject(project);
}
@PreDestroy
public void destroy() {
}
public DescriptorResolver getDescriptorResolver() {
return this.descriptorResolver;
}
public ExpressionTypingServices getExpressionTypingServices() {
return this.expressionTypingServices;
}
public TypeResolver getTypeResolver() {
return this.typeResolver;
}
public ScopeProvider getScopeProvider() {
return this.scopeProvider;
}
public AnnotationResolver getAnnotationResolver() {
return this.annotationResolver;
}
public QualifiedExpressionResolver getQualifiedExpressionResolver() {
return this.qualifiedExpressionResolver;
}
public JetImportsFactory getJetImportsFactory() {
return this.jetImportsFactory;
public ResolveSession getResolveSession() {
return this.resolveSession;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,12 +16,12 @@
package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.context.GlobalContext;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -31,18 +31,20 @@ import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
/* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL")
public class InjectorForMacros {
private final ExpressionTypingServices expressionTypingServices;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final LockBasedStorageManager lockBasedStorageManager;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final ExpressionTypingServices expressionTypingServices;
private final GlobalContext globalContext;
private final StorageManager storageManager;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
@@ -52,17 +54,18 @@ public class InjectorForMacros {
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
public InjectorForMacros(
@NotNull Project project,
@NotNull ModuleDescriptor moduleDescriptor
) {
this.lockBasedStorageManager = new LockBasedStorageManager();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.expressionTypingServices = new ExpressionTypingServices(lockBasedStorageManager, platformToKotlinClassMap);
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap);
this.storageManager = globalContext.getStorageManager();
this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
@@ -72,6 +75,7 @@ public class InjectorForMacros {
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
@@ -103,7 +107,7 @@ public class InjectorForMacros {
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(lockBasedStorageManager);
descriptorResolver.setStorageManager(storageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
@@ -118,8 +122,4 @@ public class InjectorForMacros {
return this.expressionTypingServices;
}
public Project getProject() {
return this.project;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,78 +16,79 @@
package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
/* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerBasic {
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final StorageManager storageManager;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final StorageManager storageManager;
private final BindingTrace bindingTrace;
private final ModuleDescriptorImpl moduleDescriptor;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationResolver declarationResolver;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final BodyResolver bodyResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final DeclarationResolver declarationResolver;
private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerBasic(
@NotNull Project project,
@@ -96,39 +97,39 @@ public class InjectorForTopDownAnalyzerBasic {
@NotNull ModuleDescriptorImpl moduleDescriptor,
@NotNull PlatformToKotlinClassMap platformToKotlinClassMap
) {
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.bodyResolver = new BodyResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.descriptorResolver = new DescriptorResolver();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters;
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor;
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.platformToKotlinClassMap = platformToKotlinClassMap;
this.declarationResolver = new DeclarationResolver();
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.bodyResolver = new BodyResolver();
this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap);
this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.declarationResolver = new DeclarationResolver();
this.importsResolver = new ImportsResolver();
this.jetImportsFactory = new JetImportsFactory();
this.scriptHeaderResolver = new ScriptHeaderResolver();
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext);
@@ -143,35 +144,17 @@ public class InjectorForTopDownAnalyzerBasic {
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setAnnotationResolver(annotationResolver);
this.bodyResolver.setCallResolver(callResolver);
this.bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace);
this.controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.controlFlowAnalyzer.setTrace(bindingTrace);
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setStorageManager(storageManager);
this.descriptorResolver.setTypeResolver(typeResolver);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
bodyResolver.setAnnotationResolver(annotationResolver);
bodyResolver.setCallResolver(callResolver);
bodyResolver.setContext(topDownAnalysisContext);
bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
bodyResolver.setDeclarationsChecker(declarationsChecker);
bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
bodyResolver.setExpressionTypingServices(expressionTypingServices);
bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
bodyResolver.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -194,12 +177,38 @@ public class InjectorForTopDownAnalyzerBasic {
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(storageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
controlFlowAnalyzer.setTrace(bindingTrace);
declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
importsResolver.setContext(topDownAnalysisContext);
importsResolver.setImportsFactory(jetImportsFactory);
importsResolver.setModuleDescriptor(moduleDescriptor);
@@ -228,20 +237,16 @@ public class InjectorForTopDownAnalyzerBasic {
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
}
@PreDestroy
public void destroy() {
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public TopDownAnalyzer getTopDownAnalyzer() {
return this.topDownAnalyzer;
}
@@ -250,36 +255,4 @@ public class InjectorForTopDownAnalyzerBasic {
return this.topDownAnalysisContext;
}
public BodyResolver getBodyResolver() {
return this.bodyResolver;
}
public ControlFlowAnalyzer getControlFlowAnalyzer() {
return this.controlFlowAnalyzer;
}
public DeclarationsChecker getDeclarationsChecker() {
return this.declarationsChecker;
}
public DescriptorResolver getDescriptorResolver() {
return this.descriptorResolver;
}
public Project getProject() {
return this.project;
}
public TopDownAnalysisParameters getTopDownAnalysisParameters() {
return this.topDownAnalysisParameters;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
}

View File

@@ -33,7 +33,6 @@ import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.calls.autocasts.AutoCastReceiver;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedValueArgument;
import org.jetbrains.jet.lang.resolve.calls.model.VariableAsFunctionResolvedCall;
@@ -793,8 +792,10 @@ public class JetControlFlowProcessor {
if (delegate != null) {
generateInstructions(delegate, NOT_IN_CONDITION);
}
for (JetPropertyAccessor accessor : property.getAccessors()) {
generateInstructions(accessor, NOT_IN_CONDITION);
if (JetPsiUtil.isLocal(property)) {
for (JetPropertyAccessor accessor : property.getAccessors()) {
generateInstructions(accessor, NOT_IN_CONDITION);
}
}
}
@@ -916,16 +917,6 @@ public class JetControlFlowProcessor {
JetObjectDeclaration declaration = expression.getObjectDeclaration();
generateInstructions(declaration, context);
List<JetDeclaration> declarations = declaration.getDeclarations();
List<JetDeclaration> functions = Lists.newArrayList();
for (JetDeclaration localDeclaration : declarations) {
if (!(localDeclaration instanceof JetProperty) && !(localDeclaration instanceof JetClassInitializer)) {
functions.add(localDeclaration);
}
}
for (JetDeclaration function : functions) {
generateInstructions(function, context);
}
builder.createAnonymousObject(expression);
}
@@ -961,6 +952,13 @@ public class JetControlFlowProcessor {
generateInstructions(specifier, context);
}
List<JetDeclaration> declarations = classOrObject.getDeclarations();
if (JetPsiUtil.isLocal(classOrObject)) {
for (JetDeclaration declaration : declarations) {
generateInstructions(declaration, context);
}
return;
}
//For top-level and inner classes and objects functions are collected and checked separately.
for (JetDeclaration declaration : declarations) {
if (declaration instanceof JetProperty || declaration instanceof JetClassInitializer) {
generateInstructions(declaration, context);
@@ -1064,10 +1062,6 @@ public class JetControlFlowProcessor {
else if (receiver instanceof TransientReceiver) {
// Do nothing
}
else if (receiver instanceof AutoCastReceiver) {
// No cast instruction in our CFG
generateReceiver(((AutoCastReceiver) receiver).getOriginal());
}
else {
throw new IllegalArgumentException("Unknown receiver kind: " + receiver);
}

View File

@@ -91,29 +91,29 @@ public class JetFlowInformationProvider {
return pseudocodeVariablesData;
}
public void checkFunction(
@NotNull JetDeclarationWithBody function,
@NotNull JetType expectedReturnType,
boolean isLocalObject
) {
boolean isPropertyAccessor = function instanceof JetPropertyAccessor;
if (!isPropertyAccessor) {
recordInitializedVariables();
}
public void checkForLocalClassOrObjectMode() {
// Local classes and objects are analyzed twice: when TopDownAnalyzer processes it and as a part of its container.
// Almost all checks can be done when the container is analyzed
// except recording initialized variables (this information is needed for DeclarationChecker).
recordInitializedVariables();
}
public void checkDeclaration() {
recordInitializedVariables();
checkDefiniteReturn(expectedReturnType);
checkLocalFunctions();
if (isLocalObject) return;
if (!isPropertyAccessor) {
// Property accessor is checked through initialization of a class/object or package properties (at 'checkDeclarationContainer')
markUninitializedVariables();
}
markUninitializedVariables();
markUnusedVariables();
markUnusedLiteralsInBlock();
}
public void checkFunction(@Nullable JetType expectedReturnType) {
checkDefiniteReturn(expectedReturnType != null ? expectedReturnType : NO_EXPECTED_TYPE);
markTailCalls();
}
@@ -181,16 +181,17 @@ public class JetFlowInformationProvider {
private void checkLocalFunctions() {
for (LocalFunctionDeclarationInstruction localDeclarationInstruction : pseudocode.getLocalDeclarations()) {
JetElement element = localDeclarationInstruction.getElement();
if (element instanceof JetNamedFunction) {
JetNamedFunction localFunction = (JetNamedFunction) element;
SimpleFunctionDescriptor functionDescriptor = trace.getBindingContext().get(BindingContext.FUNCTION, localFunction);
if (element instanceof JetDeclarationWithBody) {
JetDeclarationWithBody localDeclaration = (JetDeclarationWithBody) element;
if (localDeclaration instanceof JetFunctionLiteral) continue;
CallableDescriptor functionDescriptor =
(CallableDescriptor) trace.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, localDeclaration);
JetType expectedType = functionDescriptor != null ? functionDescriptor.getReturnType() : null;
JetFlowInformationProvider providerForLocalDeclaration =
new JetFlowInformationProvider(localFunction, trace, localDeclarationInstruction.getBody());
new JetFlowInformationProvider(localDeclaration, trace, localDeclarationInstruction.getBody());
providerForLocalDeclaration.checkDefiniteReturn(expectedType != null ? expectedType : NO_EXPECTED_TYPE);
providerForLocalDeclaration.markTailCalls();
providerForLocalDeclaration.checkFunction(expectedType);
}
}
}

View File

@@ -97,7 +97,7 @@ public class DefaultErrorMessages {
MAP.put(PLATFORM_CLASS_MAPPED_TO_KOTLIN, "This class shouldn''t be used in Kotlin. Use {0} instead.", CLASSES_OR_SEPARATED);
MAP.put(CANNOT_INFER_PARAMETER_TYPE,
"Cannot infer a type for this parameter. To specify it explicitly use the {(p : Type) => ...} notation");
"Cannot infer a type for this parameter. To specify it explicitly use the {(p : Type) -> ...} notation");
MAP.put(NO_BACKING_FIELD_ABSTRACT_PROPERTY, "This property doesn't have a backing field, because it's abstract");
MAP.put(NO_BACKING_FIELD_CUSTOM_ACCESSORS,

View File

@@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.diagnostics.rendering;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.util.Function;
@@ -30,8 +31,10 @@ import org.jetbrains.jet.lang.psi.JetClassOrObject;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.calls.inference.*;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeSubstitutor;
import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.lang.types.Variance;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.renderer.DescriptorRenderer;
@@ -40,10 +43,15 @@ import org.jetbrains.jet.renderer.Renderer;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import static org.jetbrains.jet.lang.diagnostics.rendering.TabledDescriptorRenderer.*;
import static org.jetbrains.jet.lang.resolve.calls.inference.TypeBounds.BoundKind.LOWER_BOUND;
import static org.jetbrains.jet.lang.resolve.calls.inference.TypeBounds.BoundKind.UPPER_BOUND;
public class Renderers {
private static final Logger LOG = Logger.getInstance(Renderers.class);
public static final Renderer<Object> TO_STRING = new Renderer<Object>() {
@NotNull
@Override
@@ -75,7 +83,7 @@ public class Renderers {
return element.getText();
}
};
public static final Renderer<JetClassOrObject> RENDER_CLASS_OR_OBJECT = new Renderer<JetClassOrObject>() {
@NotNull
@Override
@@ -166,7 +174,8 @@ public class Renderers {
public static TabledDescriptorRenderer renderConflictingSubstitutionsInferenceError(InferenceErrorData inferenceErrorData,
TabledDescriptorRenderer result) {
assert inferenceErrorData.constraintSystem.getStatus().hasConflictingConstraints();
LOG.assertTrue(inferenceErrorData.constraintSystem.getStatus().hasConflictingConstraints(), renderDebugMessage(
"Conflicting substitutions inference error renderer is applied for incorrect status", inferenceErrorData));
Collection<CallableDescriptor> substitutedDescriptors = Lists.newArrayList();
Collection<TypeSubstitutor> substitutors = ConstraintsUtil.getSubstitutorsForConflictingParameters(
@@ -177,7 +186,10 @@ public class Renderers {
}
TypeParameterDescriptor firstConflictingParameter = ConstraintsUtil.getFirstConflictingParameter(inferenceErrorData.constraintSystem);
assert firstConflictingParameter != null;
if (firstConflictingParameter == null) {
LOG.error(renderDebugMessage("There is no conflicting parameter for 'conflicting constraints' error.", inferenceErrorData));
return result;
}
result.text(newText()
.normal("Cannot infer type parameter ")
@@ -227,8 +239,7 @@ public class Renderers {
TabledDescriptorRenderer renderer) {
Predicate<ConstraintPosition> isErrorPosition = new Predicate<ConstraintPosition>() {
@Override
public boolean apply(@Nullable ConstraintPosition constraintPosition) {
assert constraintPosition != null;
public boolean apply(ConstraintPosition constraintPosition) {
return inferenceErrorData.constraintSystem.getStatus().hasTypeConstructorMismatchAt(constraintPosition);
}
};
@@ -242,7 +253,7 @@ public class Renderers {
}
public static TabledDescriptorRenderer renderNoInformationForParameterError(InferenceErrorData inferenceErrorData,
TabledDescriptorRenderer renderer) {
TabledDescriptorRenderer result) {
TypeParameterDescriptor firstUnknownParameter = null;
for (TypeParameterDescriptor typeParameter : inferenceErrorData.constraintSystem.getTypeVariables()) {
if (inferenceErrorData.constraintSystem.getTypeBounds(typeParameter).isEmpty()) {
@@ -250,9 +261,12 @@ public class Renderers {
break;
}
}
assert firstUnknownParameter != null;
if (firstUnknownParameter == null) {
LOG.error(renderDebugMessage("There is no unknown parameter for 'no information for parameter error'.", inferenceErrorData));
return result;
}
return renderer
return result
.text(newText().normal("Not enough information to infer parameter ")
.strong(firstUnknownParameter.getName())
.normal(" in "))
@@ -263,12 +277,11 @@ public class Renderers {
@NotNull
public static TabledDescriptorRenderer renderUpperBoundViolatedInferenceError(InferenceErrorData inferenceErrorData, TabledDescriptorRenderer result) {
String errorMessage = "Rendering 'upper bound violated' error for " + inferenceErrorData.descriptor;
TypeParameterDescriptor typeParameterDescriptor = null;
ConstraintSystemImpl constraintSystem = (ConstraintSystemImpl) inferenceErrorData.constraintSystem;
ConstraintSystemStatus status = constraintSystem.getStatus();
assert status.hasViolatedUpperBound();
LOG.assertTrue(status.hasViolatedUpperBound(), renderDebugMessage(
"Upper bound violated renderer is applied for incorrect status", inferenceErrorData));
ConstraintSystem systemWithoutWeakConstraints = constraintSystem.getSystemWithoutWeakConstraints();
for (TypeParameterDescriptor typeParameter : inferenceErrorData.descriptor.getTypeParameters()) {
@@ -279,10 +292,18 @@ public class Renderers {
if (typeParameterDescriptor == null && status.hasConflictingConstraints()) {
return renderConflictingSubstitutionsInferenceError(inferenceErrorData, result);
}
assert typeParameterDescriptor != null : errorMessage;
if (typeParameterDescriptor == null) {
LOG.error(renderDebugMessage("There is no type parameter with violated upper bound for 'upper bound violated' error",
inferenceErrorData));
return result;
}
JetType inferredValueForTypeParameter = systemWithoutWeakConstraints.getTypeBounds(typeParameterDescriptor).getValue();
assert inferredValueForTypeParameter != null : errorMessage;
if (inferredValueForTypeParameter == null) {
LOG.error(renderDebugMessage("System without weak constraints is not successful, there is no value for type parameter " +
typeParameterDescriptor.getName() + "\n: " + systemWithoutWeakConstraints, inferenceErrorData));
return result;
}
result.text(newText().normal("Type parameter bound for ").strong(typeParameterDescriptor.getName()).normal(" in "))
.table(newTable().
@@ -298,7 +319,11 @@ public class Renderers {
break;
}
}
assert violatedUpperBound != null : errorMessage;
if (violatedUpperBound == null) {
LOG.error(renderDebugMessage("Type parameter (chosen as violating its upper bound)" + typeParameterDescriptor.getName() +
" violates no bounds after substitution", inferenceErrorData));
return result;
}
Renderer<JetType> typeRenderer = result.getTypeRenderer();
result.text(newText()
@@ -342,6 +367,77 @@ public class Renderers {
}
};
public static final Renderer<ConstraintSystem> RENDER_CONSTRAINT_SYSTEM = new Renderer<ConstraintSystem>() {
@NotNull
@Override
public String render(@NotNull ConstraintSystem constraintSystem) {
Set<TypeParameterDescriptor> typeVariables = constraintSystem.getTypeVariables();
Set<TypeBounds> typeBounds = Sets.newLinkedHashSet();
for (TypeParameterDescriptor variable : typeVariables) {
typeBounds.add(constraintSystem.getTypeBounds(variable));
}
Function<TypeBounds, String> renderTypeBounds = rendererToFunction(RENDER_TYPE_BOUNDS);
return "type parameter bounds:\n" + StringUtil.join(typeBounds, renderTypeBounds, "\n") + "\n" +
"status:\n" + ConstraintsUtil.getDebugMessageForStatus(constraintSystem.getStatus());
}
};
public static final Renderer<TypeBounds> RENDER_TYPE_BOUNDS = new Renderer<TypeBounds>() {
@NotNull
@Override
public String render(@NotNull TypeBounds typeBounds) {
Function<TypeBoundsImpl.Bound, String> renderBound = new Function<TypeBoundsImpl.Bound, String>() {
@Override
public String fun(TypeBoundsImpl.Bound bound) {
String arrow = bound.kind == LOWER_BOUND ? ">: " : bound.kind == UPPER_BOUND ? "<: " : ":= ";
return arrow + RENDER_TYPE.render(bound.type) + '(' + bound.position + ')';
}
};
Name typeVariableName = typeBounds.getTypeVariable().getName();
if (typeBounds.isEmpty()) {
return typeVariableName.asString();
}
return typeVariableName + " " + StringUtil.join(typeBounds.getBounds(), renderBound, ", ");
}
};
@NotNull
public static <T> Function<T, String> rendererToFunction(final @NotNull Renderer<T> renderer) {
return new Function<T, String>() {
@Override
public String fun(T t) {
return renderer.render(t);
}
};
}
@NotNull
private static String renderDebugMessage(String message, InferenceErrorData inferenceErrorData) {
StringBuilder result = new StringBuilder();
result.append(message);
result.append("\nConstraint system: \n");
result.append(RENDER_CONSTRAINT_SYSTEM.render(inferenceErrorData.constraintSystem));
result.append("\nDescriptor:\n");
result.append(inferenceErrorData.descriptor);
result.append("\nExpected type:\n");
if (TypeUtils.noExpectedType(inferenceErrorData.expectedType)) {
result.append(inferenceErrorData.expectedType);
}
else {
result.append(RENDER_TYPE.render(inferenceErrorData.expectedType));
}
result.append("\nArgument types:\n");
if (inferenceErrorData.receiverArgumentType != null) {
result.append(RENDER_TYPE.render(inferenceErrorData.receiverArgumentType)).append(".");
}
result.append("(").append(StringUtil.join(inferenceErrorData.valueArgumentsTypes, new Function<JetType, String>() {
@Override
public String fun(JetType type) {
return RENDER_TYPE.render(type);
}
}, ", ")).append(")");
return result.toString();
}
private Renderers() {
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@@ -30,11 +30,6 @@ public class JetAnnotatedExpression extends JetExpressionImpl implements JetAnno
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitAnnotatedExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnnotatedExpression(this, data);

View File

@@ -27,11 +27,6 @@ public class JetAnnotation extends JetElementImpl {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitAnnotation(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnnotation(this, data);

View File

@@ -42,11 +42,6 @@ public class JetAnnotationEntry extends JetElementImplStub<PsiJetAnnotationStub>
super(stub, JetStubElementTypes.ANNOTATION_ENTRY);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitAnnotationEntry(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnnotationEntry(this, data);

View File

@@ -20,9 +20,6 @@ import com.google.common.collect.Lists;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiReferenceService;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -37,11 +34,6 @@ public class JetArrayAccessExpression extends JetReferenceExpression {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitArrayAccessExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitArrayAccessExpression(this, data);

View File

@@ -28,11 +28,6 @@ public class JetBinaryExpression extends JetExpressionImpl implements JetOperati
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitBinaryExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBinaryExpression(this, data);

View File

@@ -27,11 +27,6 @@ public class JetBinaryExpressionWithTypeRHS extends JetExpressionImpl implements
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitBinaryWithTypeRHSExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBinaryWithTypeRHSExpression(this, data);

View File

@@ -37,11 +37,6 @@ public class JetBlockExpression extends JetExpressionImpl implements JetStatemen
return JetModifiableBlockHelper.shouldChangeModificationCount(place);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitBlockExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBlockExpression(this, data);

View File

@@ -24,11 +24,6 @@ public class JetBlockStringTemplateEntry extends JetStringTemplateEntryWithExpre
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitBlockStringTemplateEntry(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBlockStringTemplateEntry(this, data);

View File

@@ -24,11 +24,6 @@ public class JetBreakExpression extends JetLabelQualifiedExpression implements J
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitBreakExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBreakExpression(this, data);

View File

@@ -32,11 +32,6 @@ public class JetCallExpression extends JetReferenceExpression implements JetCall
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitCallExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitCallExpression(this, data);

View File

@@ -47,11 +47,6 @@ public class JetCallableReferenceExpression extends JetExpressionImpl {
throw new IllegalStateException("Callable reference simple name shouldn't be parsed to null");
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitCallableReferenceExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitCallableReferenceExpression(this, data);

View File

@@ -28,11 +28,6 @@ public class JetCatchClause extends JetElementImpl {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitCatchSection(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitCatchSection(this, data);

View File

@@ -56,11 +56,6 @@ public class JetClass extends JetTypeParameterListOwnerStub<PsiJetClassStub> imp
return body.getDeclarations();
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitClass(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClass(this, data);

View File

@@ -38,11 +38,6 @@ public class JetClassBody extends JetElementImpl implements JetDeclarationContai
return PsiTreeUtil.getChildrenOfTypeAsList(this, JetDeclaration.class);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitClassBody(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClassBody(this, data);

View File

@@ -20,18 +20,12 @@ import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lexer.JetTokens;
public class JetClassInitializer extends JetDeclarationImpl implements JetStatementExpression {
public JetClassInitializer(@NotNull ASTNode node) {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitAnonymousInitializer(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnonymousInitializer(this, data);

View File

@@ -28,11 +28,6 @@ public class JetClassObject extends JetDeclarationImpl implements JetStatementEx
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitClassObject(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClassObject(this, data);

View File

@@ -24,11 +24,6 @@ public class JetConstantExpression extends JetExpressionImpl {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitConstantExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitConstantExpression(this, data);

View File

@@ -24,11 +24,6 @@ public class JetContinueExpression extends JetLabelQualifiedExpression implement
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitContinueExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitContinueExpression(this, data);

View File

@@ -26,11 +26,6 @@ public class JetDelegationSpecifier extends JetElementImpl {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDelegationSpecifier(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationSpecifier(this, data);

View File

@@ -27,11 +27,6 @@ public class JetDelegationSpecifierList extends JetElementImpl {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDelegationSpecifierList(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationSpecifierList(this, data);

View File

@@ -25,11 +25,6 @@ public class JetDelegatorByExpressionSpecifier extends JetDelegationSpecifier {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDelegationByExpressionSpecifier(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationByExpressionSpecifier(this, data);

View File

@@ -29,11 +29,6 @@ public class JetDelegatorToSuperCall extends JetDelegationSpecifier implements J
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDelegationToSuperCallSpecifier(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationToSuperCallSpecifier(this, data);

View File

@@ -24,11 +24,6 @@ public class JetDelegatorToSuperClass extends JetDelegationSpecifier {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDelegationToSuperClassSpecifier(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationToSuperClassSpecifier(this, data);

View File

@@ -30,11 +30,6 @@ public class JetDelegatorToThisCall extends JetDelegationSpecifier implements Je
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDelegationToThisCall(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationToThisCall(this, data);

View File

@@ -24,11 +24,6 @@ public class JetDoWhileExpression extends JetWhileExpressionBase {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDoWhileExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDoWhileExpression(this, data);

View File

@@ -24,11 +24,6 @@ public class JetDotQualifiedExpression extends JetQualifiedExpression {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitDotQualifiedExpression(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDotQualifiedExpression(this, data);

View File

@@ -22,7 +22,5 @@ import org.jetbrains.annotations.NotNull;
public interface JetElement extends NavigatablePsiElement {
<D> void acceptChildren(@NotNull JetTreeVisitor<D> visitor, D data);
void accept(@NotNull JetVisitorVoid visitor);
<R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data);
}

View File

@@ -44,8 +44,8 @@ public class JetElementImpl extends ASTWrapperPsiElement implements JetElement {
@Override
public final void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof JetVisitorVoid) {
accept((JetVisitorVoid) visitor);
if (visitor instanceof JetVisitor) {
accept((JetVisitor) visitor, null);
}
else {
visitor.visitElement(this);
@@ -57,11 +57,6 @@ public class JetElementImpl extends ASTWrapperPsiElement implements JetElement {
JetPsiUtil.visitChildren(this, visitor, data);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitJetElement(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitJetElement(this, data);

View File

@@ -50,8 +50,8 @@ public class JetElementImplStub<T extends StubElement> extends StubBasedPsiEleme
@Override
public final void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof JetVisitorVoid) {
accept((JetVisitorVoid) visitor);
if (visitor instanceof JetVisitor) {
accept((JetVisitor) visitor, null);
}
else {
visitor.visitElement(this);
@@ -69,11 +69,6 @@ public class JetElementImplStub<T extends StubElement> extends StubBasedPsiEleme
}
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitJetElement(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitJetElement(this, data);

Some files were not shown because too many files have changed in this diff Show More